CVE-2026-110725
Low · 3.7CVSS
3.7
EPSS
0.3%
Published
Oct 20, 2026
CISA due date
—
Cloudanix analysis
A URI handling library can produce strings that web browsers or other systems treat as executable web addresses instead of harmless relative links, potentially letting attackers run their own code inside an application.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- High
- Impact
- Data Tampering
- Component
- Library
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Low
- Patch risk
- Low
What it actually does
When serialize(), normalize(), or resolve() are invoked with the non-default reference=suffix option on an authority-less reference, the output relative reference may contain an unescaped bare colon in its first path segment. This violates RFC 3986 and allows the string to be re-parsed as an absolute URI with a scheme (javascript:, data:, vbscript:), enabling injection of executable content; equal() may also conflate scheme-bearing and relative references.
Why it matters to the business
Applications that rely on fast-uri to produce safe relative references for later use as URIs can inadvertently create XSS vectors or allow scheme injection from untrusted input, leading to client-side code execution or broken access-control logic in web or API contexts.
How an attack unfolds
An attacker supplies a crafted relative reference lacking an authority component to an application that calls serialize/normalize/resolve with reference=suffix; the library emits a string containing an unescaped colon in the first path segment; the consuming application then treats this string as a URI, causing a javascript/data/vbscript scheme to be interpreted and executed in the browser or other URI handler.
How to fix it
Upgrade fast-uri to 2.4.8, 3.1.9, or 4.2.3 (or later). As a temporary mitigation, avoid the suffix reference option when processing untrusted input, or percent-encode any colon that appears in the first path segment of the result before treating it as a URI.
How to confirm the fix worked
Confirm the installed fast-uri version is at least 2.4.8, 3.1.9, or 4.2.3; run the library's test suite with reference=suffix inputs containing colons to verify no bare-colon output is produced; scan application code for calls that pass the suffix option on untrusted data.
Typical attack path
- Identify an endpoint or function that passes untrusted data into fast-uri serialize/normalize/resolve with reference=suffix
- Craft input containing a relative reference whose first path segment begins with a colon-bearing payload
- Obtain the library output and supply it to a context that interprets the result as a URI
- Trigger execution of the injected javascript/data/vbscript scheme
How to detect it
Search application logs or request histories for URI strings generated after calls to serialize/normalize/resolve that contain a bare colon immediately after a path separator; review any downstream URI parsing or navigation that receives output from fast-uri with the suffix option.
What your security team should do
- Immediately inventory all Node.js applications and packages that depend on fast-uri and schedule upgrades to 2.4.8 / 3.1.9 / 4.2.3
- Add a dependency check or SCA policy to block future builds that use vulnerable fast-uri versions
- Review code for any use of the suffix reference option and replace or guard those call sites
The record
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, when serialize(), normalize(), or resolve() are called with the non-default option reference set to suffix on a reference that has no authority, the emitted relative reference can contain a bare colon in its first path segment without escaping it, even though RFC 3986 forbids that because it makes the string reparse as an absolute URI with a scheme. An application that serializes or normalizes a relative reference with the suffix option and then treats the result as a URI can turn inert input into a live javascript, data, or vbscript URL, a cross-site scripting vector, and the equal() comparison can conflate a scheme-bearing reference with a relative one. Exposure is limited to applications using the non-default suffix reference option. 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, avoid the suffix reference option on untrusted input, or percent-encode a colon in the first path segment of the result before treating it as a URI.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-119200 Nuxt is an open-source web development framework for Vue.js. CWE-41
- CVE-2026-112343 Syncplify Server! CWE-41
- CVE-2026-110095 fast-uri is a dependency-free RFC 3986 URI parser and serializer for Node.js. CWE-41
- CVE-2026-70184 Improper resolution of path equivalence in Windows Backup Engine allows an authorized… CWE-41
- CVE-2026-102231 Improper resolution of path equivalence in Visual Studio Code allows an unauthorized… CWE-41
- CVE-2026-85978 An unauthenticated remote code execution vulnerability exists in the Policy Manager… CWE-41
- CVE-2026-72835 filebrowser versions before v2.63.21 fail to canonicalize paths before evaluating access… CWE-41
- CVE-2026-66064 goshs is a feature-rich single-binary file server for red teamers and developers. CWE-41