fix(security): avoid serializing User in OnRegistrationCompleteEvent (CVE-2017-2603)#497
Open
navnitan-7 wants to merge 1 commit into
Conversation
…VE-2017-2603) Mark the dedicated user field transient so Java serialization cannot rehydrate credentials. Add a round-trip serialization test. Parameterize Surefire skip with skip.unit.tests so CI/maintainers can run tests with -Dskip.unit.tests=false while preserving the previous default. Made-with: Cursor
Author
|
Hi reviewers, I've addressed the security concern related to CVE-2017-2603 by marking the Could you please take a look and share your feedback when you have a moment? Thanks in advance! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Hardens
OnRegistrationCompleteEventagainst Java serialization leaking the fullUsergraph (including password), following the same pattern as Jenkins CVE-2017-2603 / commit 3cd946c: mark the dedicateduserfieldtransient, add a serialization round-trip test, and parameterize Surefire so tests can run with-Dskip.unit.tests=falsewhile keeping the previous default (tests skipped).Reproduction (before)
source/xzs/src/main/java/com/mindskip/xzs/event/OnRegistrationCompleteEvent.javahadprivate final User user;(non-transient).com.mindskip.xzs.domain.User.Fix
private final transient User user+ short Javadoc.OnRegistrationCompleteEventSerializationTest: afterObjectOutputStream/ObjectInputStream,getUser()isnull.pom.xml:<skip.unit.tests>true</skip.unit.tests>and<skipTests>${skip.unit.tests}</skipTests>.Verification
Observed: BUILD SUCCESS; Surefire runs
OnRegistrationCompleteEventSerializationTest.mvn testObserved: BUILD SUCCESS; tests still skipped by default.
Scope
Limitation
ApplicationEventstill receivessuper(user); this PR addresses the duplicateuserfield pattern aligned with the upstream fix. Further hardening could avoid passing the fullUseras the event source if required.