Only Filtering Special Elements Relative to a Marker

Incomplete Variant
Structure: Simple
Description

This vulnerability occurs when software filters dangerous inputs or characters, but only checks for them in specific, expected locations (like the start or end of a string). It fails to detect and remove the same dangerous elements if they appear elsewhere in the data, allowing them to pass through to critical system components.

Extended Description

Imagine a security filter designed to strip out SQL comment sequences (like '--') only if they appear at the very beginning of a user-provided string. If an attacker injects that same sequence in the middle of the input (e.g., `admin'--`), the filter misses it entirely. The downstream database, receiving the unfiltered input, then interprets the sequence as legitimate SQL, potentially leading to unauthorized access or data manipulation. This flaw stems from an incomplete validation logic that makes a dangerous assumption: that malicious payloads only appear in predictable spots. Effective sanitization must scan and clean the *entire* input, regardless of position. Developers should use context-aware encoding or parameterized interfaces instead of relying on positional filtering, as attackers will always probe for and exploit these blind spots.

Common Consequences 1
Scope: Integrity

Impact: Unexpected State

Demonstrative Examples 1

ID : DX-3

The following code takes untrusted input and uses a regular expression to filter a "../" element located at the beginning of the input string. It then appends this result to the /home/user/ directory and attempts to read the file in the final resulting path.

Code Example:

Bad
Perl
perl
Since the regular expression is only looking for an instance of "../" at the beginning of the string, it only removes the first "../" element. So an input value such as:

Code Example:

Attack
bash
will have the first "../" stripped, resulting in:

Code Example:

Result
bash
This value is then concatenated with the /home/user/ directory:

Code Example:

Result
bash
which causes the /etc/passwd file to be retrieved once the operating system has resolved the ../ sequences in the pathname. This leads to relative path traversal (Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')).
Modes of Introduction
Implementation