CVE-2026-84394 · GHSA-58mr-gqgx-xq4g
fast-uri vulnerable to host confusion via an unclosed bracket in the URI authority
- Risk score
- 61/100
- CVSS
- 7.5 v3.1
- Exploit chance (30 days)
- 0.4%
- Published
- 28 Sep 2026
Open in the live forecast Today's forecast
What to know
- What it is
- fast-uri accepts a host that contains an unbalanced or misplaced authority bracket ([ or ]) without reporting an error. A host that starts with [ but does not end with ], such as [@127.0.0.1, is neither validated as an IP literal nor canonicalized as a domain name, so parse() returns it as the host with error undefine…
- Affected
- fast-uri (npm) = 2.4.5; fast-uri (npm) = 3.1.6; fast-uri (npm) = 4.1.3
- Fix
- Upgrade fast-uri to 2.4.6 or 3.1.7 or 4.1.4 (whichever matches your release line) or later.
- Exploitation
- No known exploitation
Why it is Amber
- CVSS 7.5 high
- Remotely exploitable without logging in
- On your watchlist: npm
Affected packages
| Package | Ecosystem | Vulnerable | Fixed in |
|---|---|---|---|
| fast-uri | npm | = 2.4.5 | 2.4.6 |
| fast-uri | npm | = 3.1.6 | 3.1.7 |
| fast-uri | npm | = 4.1.3 | 4.1.4 |
References
- https://github.com/advisories/GHSA-58mr-gqgx-xq4g
- https://github.com/fastify/fast-uri/security/advisories/GHSA-58mr-gqgx-xq4g
- https://nvd.nist.gov/vuln/detail/CVE-2026-84394
- https://github.com/fastify/fast-uri/pull/214
- https://github.com/fastify/fast-uri/commit/e00815236bc94107e44ef1b2f5318a06bac225c0
- https://cna.openjsf.org/security-advisories.html
- https://github.com/fastify/fast-uri/releases/tag/v2.4.6
- https://github.com/fastify/fast-uri/releases/tag/v3.1.7
- https://github.com/fastify/fast-uri/releases/tag/v4.1.4
- https://github.com/advisories/GHSA-58mr-gqgx-xq4g
Original description
### Impact `fast-uri` accepts a host that contains an unbalanced or misplaced authority bracket (`[` or `]`) without reporting an error. A host that starts with `[` but does not end with `]`, such as `[@127.0.0.1`, is neither validated as an IP literal nor canonicalized as a domain name, so `parse()` returns it as the host with `error` undefined, while Node's `URL` (and `http.get`, `axios`, `got`, and other clients built on it) resolve the same string to `127.0.0.1`. An application that reads `parse().host` to make a host decision (an SSRF denylist, a redirect allowlist, or proxy routing) and then passes the original URL to an HTTP client evaluates its policy against a string that is not the host the request reaches. The same host is carried through `normalize()`, `equal()`, and `resolve()`. ### Patches This vulnerability has been patched in fast-uri `4.1.4`, `3.1.7`, and `2.4.6`. `parse()` now reports `URI host is malformed.` for any host that contains a bracket but is not a valid `[IPv6]` literal. All users should upgrade. ### Workarounds If upgrading is not immediately possible, reject any URL whose host contains a `[` or `]` that is not a well-formed IPv6 literal before making a host decision. Clients that fail closed on credential-bearing URLs, such as Node's global `fetch()`, are not affected by the reported vector.
Last activity 28 Sep 2026. Patch Forecast updates every hour.