Skip to content

Hostname spoofing via backslashes in URL

Moderate severity GitHub Reviewed Published Dec 30, 2020 in medialize/URI.js • Updated Feb 1, 2023

Package

npm urijs (npm)

Affected versions

< 1.19.4

Patched versions

1.19.4

Description

Impact

If using affected versions to determine a URL's hostname, the hostname can be spoofed by using a backslash (\) character followed by an at (@) character. If the hostname is used in security decisions, the decision may be incorrect.

Depending on library usage and attacker intent, impacts may include allow/block list bypasses, SSRF attacks, open redirects, or other undesired behavior.

Example URL: https://expected-example.com\@observed-example.com
Escaped string: https://expected-example.com\\@observed-example.com (JavaScript strings must escape backslash)

Affected versions incorrectly return observed-example.com. Patched versions correctly return expected-example.com. Patched versions match the behavior of other parsers which implement the WHATWG URL specification, including web browsers and Node's built-in URL class.

Patches

Version 1.19.4 is patched against all known payload variants. Version 1.19.3 has a partial patch but is still vulnerable to a payload variant.

References

https://github.com/medialize/URI.js/releases/tag/v1.19.4 (complete fix for this bypass)
https://github.com/medialize/URI.js/releases/tag/v1.19.3 (partial fix for this bypass)
PR #233 (initial fix for backslash handling)

For more information

If you have any questions or comments about this advisory, open an issue in https://github.com/medialize/URI.js

Reporter credit

Alesandro Ortiz

References

@rodneyrehm rodneyrehm published to medialize/URI.js Dec 30, 2020
Reviewed Dec 30, 2020
Published to the GitHub Advisory Database Dec 30, 2020
Published by the National Vulnerability Database Dec 31, 2020
Last updated Feb 1, 2023

Severity

Moderate
6.5
/ 10

CVSS base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
Low
User interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
High
Availability
None
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N

Weaknesses

CVE ID

CVE-2020-26291

GHSA ID

GHSA-3329-pjwv-fjpg

Source code

Credits

Checking history
See something to contribute? Suggest improvements for this vulnerability.