CVE-2026-76172: fast-uri vulnerable to host confusion via percent-encoded scheme normalization
fast-uri decodes percent-encoded characters in the scheme component with the legacy global unescape() and serializes the result back as raw characters, without re-escaping it or validating it as a scheme. A scheme that decodes to characters outside the RFC 3986 scheme grammar can therefore introduce structure the original input did not contain.
For example, %2f%2fevil.example:/pwn parses with no authority (parse().host is undefined), but resolve() and normalize() return //evil.example:/pwn, which reparses with host evil.example. The %uXXXX form (%u002f%u002fevil.example:/pwn) produces the same result, and a scheme containing %0d%0a reaches the output as a raw CR LF.
Applications that normalize or resolve untrusted URLs before a redirect check, host allowlist, or outbound request decision, especially ones that treat a missing authority as same-origin, can be steered to an attacker-chosen authority, and a normalized URI placed in a response header can carry an injected CR LF.
References
- cna.openjsf.org/security-advisories.html
- github.com/advisories/GHSA-jqff-g426-hqxp
- github.com/fastify/fast-uri/commit/37f3417c82994279656854f83ce938acd81c3862
- github.com/fastify/fast-uri/commit/a941e626411f576f8d90883231e57b6c9d0ff98b
- github.com/fastify/fast-uri/commit/c6a74bfd9d8c6b0df5362b3c7ae88d8021cb1e39
- github.com/fastify/fast-uri/releases/tag/v2.4.5
- github.com/fastify/fast-uri/releases/tag/v3.1.6
- github.com/fastify/fast-uri/releases/tag/v4.1.3
- github.com/fastify/fast-uri/security/advisories/GHSA-jqff-g426-hqxp
- nvd.nist.gov/vuln/detail/CVE-2026-76172
Code Behaviors & Features
Detect and mitigate CVE-2026-76172 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 →