Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Tidies up the language in the new NCCE/CS pair

...

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 deserialized a malicious object that subverted Java's type system. The malicious object was an array of two objects. The second object, of type AtomicReferenceArray<>, was an AtomicReferenceArray<> whose internal array was containing the first object. However, while the first object was an array of objects of type Help objects (which inherited from ClassLoader), the AtomicReferenceArray<>'s internal array type is an array of Object. This meant that the malicious code could use AtomicReferenceArray.set(ClassLoader) to create a Help object. (Creation of class loaders is forbidden by the applet security manager.)

This exploit worked because in Java versions prior to 1.7.0_02 the object of type AtomicReferenceArray<> object performed no validation on its internal array.

...

This exploit was mitigated in Java 1.7.0_03 by having the object of type AtomicReferenceArray<> validate its array upon deserialization. The readObject() method inspects the array contents, and if the array is of the wrong type, it copies the array, foiling the exploit.

...