SecurityPreview
Open in TheBrain

Insecure Deserialization

faults in the way code is taken from a file and constructed into an object. This can enable malicious code execution, privilege escalation, and replaying activity by authorized users.

How to Prevent

The only safe architectural pattern is not to accept serialized objects from untrusted sources or to use serialization mediums that only permit primitive data types. If that is not possible, consider one of more of the following:

* Implementing integrity checks such as digital signatures on any serialized objects to prevent hostile object creation or data tampering.

* Enforcing strict type constraints during deserialization before object creation as the code typically expects a definable set of classes. Bypasses to this technique have been demonstrated, so reliance solely on this is not advisable.

* Isolating and running code that deserializes in low privilege environments when possible.

* Log deserialization exceptions and failures, such as where the incoming type is not the expected type, or the deserialization throws exceptions.

* Restricting or monitoring incoming and outgoing network connectivity from containers or servers that deserialize.

Source: A8_2017-Insecure_Deserialization

Deserialization_Cheat_Sheet