Skip to main content

Deserialization of Untrusted Data


Severity High
Score 8.8/10


Redisson is a Java Redis client that uses the Netty framework. In org.redisson:redisson package versions prior to 3.22.0, some of the messages received from the Redis server contain Java objects that the client desterilizes without further validation. Attackers that manage to trick clients into communicating with a malicious server can include especially crafted objects in its responses that, once desterilized by the client, force it to execute arbitrary code. This can be abused to take control of the machine the client is running on. Some post-fix advice is available. Do NOT use "Kryo5Codec" as deserialization codec, as it is still vulnerable to arbitrary object deserialization due to the "setRegistrationRequired(false)" call. On the contraryx, "KryoCodec" is safe to use. The fix applied to "SerializationCodec" only consists of adding an optional allowlist of class names, even though making this behavior the default is recommended. When instantiating "SerializationCodec" please use the "SerializationCodec(ClassLoader classLoader, Set allowedClasses)" constructor to restrict the allowed classes for deserialization.

  • LOW
  • HIGH
  • NONE
  • HIGH
  • HIGH

CWE-502 - Deserialization of Untrusted Data

Deserialization of untrusted data vulnerabilities enable an attacker to replace or manipulate a serialized object, replacing it with malicious data. When the object is deserialized at the victim's end the malicious data is able to compromise the victim’s system. The exploit can be devastating, its impact may range from privilege escalation, broken access control, or denial of service attacks to allowing unauthorized access to the application's internal code and logic which can compromise the entire system.

Advisory Timeline

  • Published