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.
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
