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)
Referenced by CAPEC · can precede (1)
- CAPEC-228 DTD Injection attack pattern