CAPEC Definitions

    CAPEC Definitions / CAPEC-3

    CAPEC-3: Using Leading 'Ghost' Character Sequences to Bypass Input Filters

    Some APIs will strip certain leading characters from a string of parameters. An adversary can intentionally introduce leading ghost characters (extra characters that don't affect the validity of the request at the API layer) that enable the input to pass the filters and therefore process the adversary's input. This occurs when the targeted API will accept input data in several syntactic forms and interpret it in the equivalent semantic way, while the filter does not take into account the full spectrum of the syntactic forms acceptable to the targeted API.

    Severity:Medium
    Possibility:Medium

    Extended Description

    No Extended Description.

    Mitigations

    Use an allowlist rather than a denylist input validation.

    Canonicalize all data prior to validation.

    Take an iterative approach to input validation (defense in depth).

    Relationships with other CAPECs

    CAPEC-267: Leverage Alternate Encoding

    Prerequisites

    The targeted API must ignore the leading ghost characters that are used to get past the filters for the semantics to be the same.

    Related Weaknesses

    CWE-173: Improper Handling of Alternate Encoding

    CWE-41: Improper Resolution of Path Equivalence

    CWE-172: Encoding Error

    CWE-179: Incorrect Behavior Order: Early Validation

    CWE-180: Incorrect Behavior Order: Validate Before Canonicalize

    CWE-181: Incorrect Behavior Order: Validate Before Filter

    CWE-183: Permissive List of Allowed Inputs

    CWE-184: Incomplete List of Disallowed Inputs

    CWE-20: Improper Input Validation

    CWE-74: Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')

    CWE-697: Incorrect Comparison

    CWE-707: Improper Neutralization