ARMR Marshal Rule
Marshalling and unmarshalling, also known as serialization and deserialization, is the process of converting objects to and from streams of structured data. Deserializing untrusted data can lead to a variety of problems when the system processes a data stream from an unverified source. Naively processing such data could have unforeseen consequences.
One such consequence arises when deserialization causes the JVM to instantiate one of the classes available on the application’s classpath. In the case of poorly designed classes, the attacker can use malformed serialized data to abuse application logic, deny service, or execute arbitrary code, when deserialized. A related issue is when a system processes configuration from an unverified source. Unverified configuration can lead to Server Side Request Forgery (SSRF) or Local File Inclusion (LFI).
Serialization is used in several components of the JVM as well as in numerous third-party frameworks and dependencies.