CAPEC-586: Object Injection
An adversary attempts to exploit an application by injecting additional, malicious content during its processing of serialized objects. Developers leverage serialization in order to convert data or state into a static, binary format for saving to disk or transferring over a network. These objects are then deserialized when needed to recover the data/state. By injecting a malformed object into a vulnerable application, an adversary can potentially compromise the application by manipulating the deserialization process. This can result in a number of unwanted outcomes, including remote code execution.
Last updated
Overview
CAPEC-586 (Object Injection) is a meta-level attack pattern catalogued by MITRE in the Common Attack Pattern Enumeration and Classification (CAPEC). It describes a recurring method attackers use to exploit software weaknesses.
What the attacker needs
Prerequisites
- The target application must unserialize data before validation.
Consequences
What a successful CAPEC-586 attack can achieve.
Resource Consumption
Affects: Availability
If a function is making an assumption on when to terminate, based on a sentry in a string, it could easily never terminate and exhaust available resources.
Modify Data
Affects: Integrity
Attackers can modify objects or data that was assumed to be safe from modification.
Execute Unauthorized Commands
Affects: Authorization
Functions that assume information in the deserialized object is valid could be exploited.
How to mitigate it
Defenses that reduce the risk of CAPEC-586.
- Implementation: Validate object before deserialization process
- Design: Limit which types can be deserialized.
- Implementation: Avoid having unnecessary types or gadgets available that can be leveraged for malicious ends. Use an allowlist of acceptable classes.