url-parse incorrectly parses hostname / protocol due to unstripped leading control characters.
Moderate severity
GitHub Reviewed
Published
Feb 22, 2022
to the GitHub Advisory Database
•
Updated Sep 11, 2023
Description
Published by the National Vulnerability Database
Feb 21, 2022
Published to the GitHub Advisory Database
Feb 22, 2022
Reviewed
Mar 1, 2022
Last updated
Sep 11, 2023
Leading control characters in a URL are not stripped when passed into url-parse. This can cause input URLs to be mistakenly be interpreted as a relative URL without a hostname and protocol, while the WHATWG URL parser will trim control characters and treat it as an absolute URL.
If url-parse is used in security decisions involving the hostname / protocol, and the input URL is used in a client which uses the WHATWG URL parser, the decision may be incorrect.
This can also lead to a cross-site scripting (XSS) vulnerability if url-parse is used to check for the javascript: protocol in URLs. See following example:
References