Patch Forecast
Yellow warning
Plan into this sprint.

CVE-2026-110306 · GHSA-w74x-v6f9-j3xg

fast-uri vulnerable to URI scheme spoofing via percent-encoded scheme decoding

Risk score
44/100
CVSS
6.1 v3.1
Exploit chance (30 days)
0.2%
Published
20 Oct 2026

Open in the live forecast Today's forecast

What to know

What it is
fast-uri is a dependency-free RFC 3986 URI parser and serializer for Node.js. In versions before 2.4.8, from 3.0.0 through 3.1.8, and from 4.0.0 through 4.2.2, fast-uri percent-decodes the scheme component with the legacy global unescape() function before validating it, so an input whose decoded scheme is a dangerous …
Affected
fast-uri (npm) < 2.4.8; fast-uri (npm) >= 3.0.0, < 3.1.9; fast-uri (npm) >= 4.0.0, < 4.2.3
Fix
Upgrade fast-uri to 2.4.8 or 3.1.9 or 4.2.3 (whichever matches your release line) or later.
Exploitation
No known exploitation

Story map

Story map: fast-uriTHE FLAWSTHE FIXCVE-2026-110306Fast-uri vulnerable to URIscheme spoofing viapercent-encoded scheme…CVSS 6.1 · EPSS 0%CVE-2026-84394Fast-uri vulnerable to hostconfusion via an unclosedbracket in the URI authorityCVSS 7.5 · EPSS 0%CVE-2026-84292Fast-uri vulnerable toauthority injection via anunvalidated port in serializeCVSS 7.5 · EPSS 0%Upgrade fast-uri2.4.8or later on your release lineWho is exposedfast-uri (npm) = 2.4.5; fast-uri(npm) = 3.1.6; fast-uri (npm) =4.1.3AMBER · PATCH THIS WEEKfast-urifast-uri accepts a host thatcontains an unbalanced ormisplaced authority bracket ([ or]) without reporting an error. Ahost that starts with [ but doesnot end with ], such as[@127.0.0.1, is neither validated…Where it standsNo known exploitationCONNECTS TOSame weaknessCWE-172 (CWE-172)4 other warnings in 30 days →
Story map: the flaws, the fix, how it unfolded and what it connects to. Boxes link to the record or article.

At a glance

fast-uri: Amber, patch this week. 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…

The flaws

  • CVE-2026-110306: Fast-uri vulnerable to URI scheme spoofing via percent-encoded scheme decoding (CVSS 6.1 · EPSS 0%)
  • CVE-2026-84394: Fast-uri vulnerable to host confusion via an unclosed bracket in the URI authority (CVSS 7.5 · EPSS 0%)
  • CVE-2026-84292: Fast-uri vulnerable to authority injection via an unvalidated port in serialize (CVSS 7.5 · EPSS 0%)

The fix

Upgrade fast-uri: 2.4.8 or later on your release line

Who is exposed: fast-uri (npm) = 2.4.5; fast-uri (npm) = 3.1.6; fast-uri (npm) = 4.1.3

Where it stands

  • No known exploitation

Connects to

Why it is Yellow

  • CVSS 6.1 medium
  • On your watchlist: npm

Affected packages

PackageEcosystemVulnerableFixed in
fast-urinpm< 2.4.82.4.8
fast-urinpm>= 3.0.0, < 3.1.93.1.9
fast-urinpm>= 4.0.0, < 4.2.34.2.3

References

Original description

fast-uri is a dependency-free RFC 3986 URI parser and serializer for Node.js. In versions before 2.4.8, from 3.0.0 through 3.1.8, and from 4.0.0 through 4.2.2, fast-uri percent-decodes the scheme component with the legacy global unescape() function before validating it, so an input whose decoded scheme is a dangerous token is emitted as a live scheme even though RFC 3986 does not allow percent-encoding in a scheme and no other parser accepts it. An application that screens dangerous schemes on the raw input and then stores or renders the normalized or resolved result can turn an inert string into an executable javascript, data, or vbscript URL, producing a stored or reflected cross-site scripting vector, and the equal() comparison treats an encoded and a plain scheme as the same, which can bypass equality-based allowlists. The issue is fixed in fast-uri 2.4.8, 3.1.9, and 4.2.3, and users should upgrade to one of these versions or later. As a workaround, reject input whose scheme part contains a percent sign, or check the parsed scheme against an allowlist after normalization and use that same parsed result rather than the raw string.

Last activity 23 Oct 2026. Patch Forecast updates every hour.