CAPECattack pattern

CAPEC-197 Exponential Data Expansion

Medium Official page ↗
Abstraction
Detailed
Status
Draft
Likelihood of attack
High
Typical severity
Medium
CAPEC version
3.9

Description

An adversary submits data to a target application which contains nested exponential data expansion to produce excessively large output. Many data format languages allow the definition of macro-like structures that can be used to simplify the creation of complex structures. However, this capability can be abused to create excessive demands on a processor's CPU and memory. A small number of nested expansions can result in an exponential growth in demands on memory.

Execution flow

1. [Explore] [Survey the target] An adversary determines the input data stream that is being processed by a data parser that supports using subsitituion on the victim's side. 2. [Experiment] [Craft malicious payload] The adversary crafts a malicious message containing nested exponential expansion that completely uses up available server resources. See the "Example Instances" section for details on how to craft this malicious payload. 3. [Exploit] [Send the message] Send the malicious crafted message to the target URL.

Prerequisites

• This type of attack requires that the target must receive input but either fail to provide an upper limit for entity expansion or provide a limit that is so large that it does not preclude significant resource consumption.

Skills required

• [Low] Ability to craft nested data expansion messages.

Consequences

• Availability: Unreliable Execution, Resource Consumption

Mitigations

• Design: Use libraries and templates that minimize unfiltered input. Use methods that limit entity expansion and throw exceptions on attempted entity expansion. • Implementation: For XML based data - disable altogether the use of inline DTD schemas when parsing XML objects. If a DTD must be used, normalize, filter and use an allowlist and parse with methods and routines that will detect entity expansion from untrusted sources.

Related

Child of · CAPEC (1)

  • CAPEC-230 Serialized Data with Nested Payloads attack pattern

Weakness · CWE (2)

  • CWE-770 Allocation of Resources Without Limits or Throttling weakness
  • CWE-776 Improper Restriction of Recursive Entity References in DTDs weakness

Referenced by CAPEC · can precede (1)

Referenced by CWE · attack pattern (2)

  • CWE-770 Allocation of Resources Without Limits or Throttling weakness
  • CWE-776 Improper Restriction of Recursive Entity References in DTDs weakness