fastify/fast-uri · Security
fast-uri vulnerable to scheme injection via an unescaped first-segment colon in suffix references
- GHSA ID
- GHSA-333x-w4r6-6crp
- CVE ID
- CVE-2026-110725
- Severity
- low
- Published
- Updated
- CVSS
- 3.7 · CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N
- CVSS v3
- 3.7 · CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N
Description
Impact
fast-uri's serialize(), normalize(), and resolve(), when called with the non-default option reference: 'suffix' on a reference that has no authority, emit a relative reference whose first path segment contains a bare colon without escaping it. RFC 3986 section 3.3 requires the first segment of a path-noscheme reference not to contain a colon, precisely because a bare colon makes the string reparse as an absolute URI with a scheme. fast-uri's default serialization escapes that colon, but the suffix path does not.
For example, normalize('javascript:alert(1)', { reference: 'suffix' }) returns javascript:alert(1), which reparses as a live javascript: scheme; data: and vbscript: behave the same.
Applications that serialize or normalize a relative reference with reference: 'suffix' and then treat the result as a URI can turn inert input into a live javascript:, data:, or vbscript: URL (a cross-site scripting vector), and equal() can conflate a scheme-bearing reference with a relative one. Exposure is limited to applications that use the non-default reference: 'suffix' option.
Patches
Upgrade to fast-uri 2.4.8, 3.1.9, or 4.2.3.
Workarounds
Do not use the reference: 'suffix' option on untrusted input. If suffix output is required, percent-encode a colon in the first path segment of the result before treating it as a URI.
CWEs
- CWE-41 · Improper Resolution of Path Equivalence
- CWE-116 · Improper Encoding or Escaping of Output
References
- https://github.com/fastify/fast-uri/security/advisories/GHSA-333x-w4r6-6crp ↗
- https://nvd.nist.gov/vuln/detail/CVE-2026-110725 ↗
- https://github.com/fastify/fast-uri/commit/39e6493c1356f30a0084171627eb266786e1620e ↗
- https://github.com/fastify/fast-uri/commit/a9b8d67353630aab053cd727cf629023dd018d2b ↗
- https://cna.openjsf.org/security-advisories.html ↗
- https://github.com/fastify/fast-uri/releases/tag/v2.4.8 ↗
- https://github.com/fastify/fast-uri/releases/tag/v3.1.9 ↗
- https://github.com/fastify/fast-uri/releases/tag/v4.2.3 ↗
- https://github.com/advisories/GHSA-333x-w4r6-6crp ↗