Deserializing objects is security-sensitive. For example, it has led in the past to the following vulnerabilities:
Object deserialization from an untrusted source can lead to unexpected code execution. Deserialization takes a stream of bits and turns it into an
object. If the stream contains the type of object you expect, all is well. But if you're deserializing data coming from untrusted input, and an
attacker has inserted some other type of object, you're in trouble. Why? A known attack
scenario involves the creation of a serialized PHP object with crafted attributes which will modify your application's behavior. This attack
relies on PHP magic methods like __desctruct, __wakeup or
__string. The attacker doesn't necessarily need the source code of the targeted application to exploit the vulnerability, he can also
rely on the presence of open-source component and use tools to craft malicious payloads.
You are at risk if you answered yes to any of those questions.
To prevent insecure deserialization, it is recommended to:
This rule is deprecated, and will eventually be removed.