Skip to content

ES2605-ba9c4747 - "Inconsistent Interpretation of URL" or "URL Parser Differential" #200

Description

@cmullaly-mitre

Submission File: ES2605-ba9c4747-new-inconsistent-url-interpretation.txt

ID: ES2605-ba9c4747

SUBMISSION DATE: 2026-05-06 14:39:48

NAME: "Inconsistent Interpretation of URL" or "URL Parser Differential"

DESCRIPTION:

When a product processes a URL, it often performs the operation in two
distinct stages: first parsing and validating the URL to enforce a security
policy (such as restricting requests to certain hosts or schemes), then
passing the URL to a separate component that performs the actual operation
(such as issuing an HTTP request). If these two stages use different URL
parsing implementations, they may disagree on how to interpret the same URL
string. An attacker can craft a URL that satisfies the validation parser's
security checks while the operational parser resolves it to a different
destination entirely.

This disagreement arises because the URL specification (RFC 3986) leaves
certain edge cases ambiguous or underspecified, and different parsing
libraries make different choices when handling these cases. Common sources
of divergence include the treatment of backslash characters as path
separators versus literal characters, the interpretation of the userinfo
component (the portion before @ in the authority), handling of null bytes
or encoded delimiters within the host component, and differences in how
scheme-relative or schemeless URLs are resolved.

The technical impact depends on the security policy being enforced. When
the policy restricts which hosts the product can contact, the consequence
is typically Server-Side Request Forgery-the product makes requests to
hosts the developer intended to prohibit, such as internal services or
cloud metadata endpoints. When the policy enforces authentication or
authorization based on the URL's host or path, the consequence may be an
authentication or authorization bypass. In either case, the attacker
exploits the gap between what the validator approved and what the
operational component actually does.

This weakness is language-agnostic and affects any architecture where URL
validation and URL consumption are handled by different parsing
implementations. It has been observed across multiple language
ecosystems-including Python, Go, Ruby, JavaScript, and C/C++-and in both
application-level code and library/framework code. The weakness is
particularly insidious because each parser may be individually correct
according to its own interpretation of the specification; the vulnerability
emerges only from their interaction.

Metadata

Metadata

Assignees

No one assigned

    Labels

    External-SubmissionPhase02-Ack-ReceiptThe CWE team has acknowledged receipt of the submission by notifying the submitter

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions