COMMON ATTACK PATTERN ENUMERATION AND CLASSIFICATIONLive MITRE record

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.

Abstraction

Meta

Typical severity

High

Likelihood of attack

Medium

Understand the attack

What is this attack pattern?

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.

Requirements

What does the attack require?

Prerequisites

  • The target application must unserialize data before validation.

Skills required

Not stated in the MITRE record.

Resources required

Not stated in the MITRE record.

Impact

What does a successful attack lead to?

Resource Consumption

Affected scopes: Availability

Modify Data

Affected scopes: Integrity

Execute Unauthorized Commands

Affected scopes: Authorization

Defence

How is it prevented and mitigated?

1
Implementation: Validate object before deserialization process
2
Design: Limit which types can be deserialized.
3
Implementation: Avoid having unnecessary types or gadgets available that can be leveraged for malicious ends. Use an allowlist of acceptable classes.
4
Implementation: Keep session state on the server, when possible.