CAPEC Definitions

    CAPEC Definitions / CAPEC-197

    CAPEC-197: Exponential Data Expansion

    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.

    Severity:Medium
    Possibility:High

    Extended Description

    No Extended Description.

    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.

    Relationships with other CAPECs

    CAPEC-230: Serialized Data with Nested Payloads

    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.

    Related Weaknesses

    CWE-770: Allocation of Resources Without Limits or Throttling

    CWE-776: Improper Restriction of Recursive Entity References in DTDs ('XML Entity Expansion')