...
Failing to create a copy of a mutable input may result in a TOCTOU vulnerability or expose internal mutable components to untrusted code.
Rule | Severity | Likelihood | Remediation Cost | Priority | Level |
---|---|---|---|---|---|
OBJ06-J | Medium | Probable | High | P4 | L3 |
Automated Detection
Tool | Version | Checker | Description | ||||||
---|---|---|---|---|---|---|---|---|---|
CodeSonar |
| PMD.Security-Code-Guidelines.ArrayIsStoredDirectly FB.MALICIOUS_CODE.EI_EXPOSE_STATIC_REP2 | Array is stored directly May expose internal static state by storing a mutable object into a static field | ||||||
Parasoft Jtest |
| SECURITY.EAB.CPCL, SECURITY.EAB.MPT, SECURITY.EAB.SMO, OOP.MUCOP | Implemented | ||||||
SonarQube |
| S2384 | Mutable members should not be stored or returned directly Implemented for |
Arrays, |
Collections and |
Date
sDates. |
Related Vulnerabilities
CVE-2012-0507 describes an exploit that managed to bypass Java's applet security sandbox and run malicious code on a remote user's machine. The exploit created a data structure that is normally impossible to create in Java but was built using deserialization, and the deserialization process did not perform defensive copies of the deserialized data. See the code examples in SER07-J. Do not use the default serialized form for classes with implementation-defined invariants for more information.
Related Guidelines
Guideline 6-2 / MUTABLE-2: Create copies of mutable output values |
Bibliography
Item 39, "Make Defensive Copies When Needed" | |
"Returning References to Internal Mutable State" |
...
...