The vulnerability is a pre-authentication remote code execution flaw caused by unsafe Java deserialization. The root cause lies in the com.iplanet.jato.util.Encoder.deserialize method, which, prior to the patch, used ApplicationObjectInputStream to deserialize byte streams without any security checks like class whitelisting. The provided patch confirms this by replacing the vulnerable deserialization logic with a call to a new utility method, IOUtils.deserialise.
The vulnerability is triggered when the com.iplanet.jato.ClientSession.deserializeAttributes method is called. This method takes the value from the jato.clientSession HTTP parameter, which is read in the ClientSession constructor, and passes it to the vulnerable Encoder.deserialize method. An unauthenticated attacker can send a specially crafted serialized Java object in this parameter to an endpoint that uses a <jato:form> tag, which will trigger the deserialization and lead to arbitrary code execution on the server.