...
| Code Block | ||
|---|---|---|
| ||
interface UnmodifiableInterface {
SensitiveMutable unmodifiableView(SensitiveMutable sm);
}
class UnmodifiableSensitiveMutable extends SensitiveMutable {
int[] array = new int[10];
public void setArray(int[] i) {
throw new UnsupportedOperationException();
}
}
class UnmodifiableWrapper extends UnmodifiableSensitiveMutable implements UnmodifiableInterface {
public SensitiveMutable unmodifiableView(SensitiveMutable sm) {
return new UnmodifiableWrapper(); // subtype of SensitiveMutable
}
}
class Invoker {
public static void main(String[] args) {
UnmodifiableWrapper uw = new UnmodifiableWrapper();
SensitiveMutable s = uw.unmodifiableView(sm);
s.setArray(new int[10]); // throws UnsupportedOperationException unlike s.getArray()
}
}
|
...
Applicability
Failure to provide an unmodifiable safe-view of a sensitive mutable object to untrusted code can lead to malicious tampering and corruption of the object.
Guideline | Severity | Likelihood | Remediation Cost | Priority | Level |
|---|---|---|---|---|---|
SEC59-JG | medium | probable | high | P4 | L3 |
Automated Detection
Automated detection is not feasible.
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this guideline on the CERT website.
Bibliography
[Tutorials 2008] Unmodifiable Wrappers
...