GHSA-jf5r-8hm2-f872

    Dashboard / Vulnerabilities / GHSA-jf5r-8hm2-f872

    GHSA-jf5r-8hm2-f872

    Published: 22 Feb 2022Last Modified: 3 Feb 2026
    Aliases:

    Summary: url-parse incorrectly parses hostname / protocol due to unstripped leading control characters.

    Details: 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: ```js const parse = require('url-parse') const express = require('express') const app = express() const port = 3000 url = parse(\"\\bjavascript:alert(1)\") console.log(url) app.get('/', (req, res) => { if (url.protocol !== \"javascript:\") {res.send(\"<a href=\\'\" + url.href + \"\\'>CLICK ME!</a>\")} }) app.listen(port, () => { console.log(`Example app listening on port ${port}`) }) ```

    Affected packages

    Package

    Name: url-parse

    Purl: pkg:npm/url-parse

    Affected ranges

    Type: SEMVER

    Events:

    Introduced- 0.1.0
    Fixed -1.5.9

    Affected versions

    Common Vulnerability Scoring System

    Attack Vector
    Network
    Adjacent
    Local
    Physical
    Privileges Required
    None
    Low
    High
    User Interaction
    None
    Required
    Scope
    Unchanged
    Changed
    Confidentiality
    None
    Low
    High
    Integrity
    None
    Low
    High
    Availability
    None
    Low
    High
    GHSA-jf5r-8hm2-f872 | CVE-DB