Your RSA-2048 keys break in 2030. Find every one of them before attackers do.
📦
📦 npm
Not in CISA KEV
MEDIUM severity

CVE-2026-86472 — fast-uri

MEDIUMFix: fastify/fast-uri@5dabb86

CVE-2026-86472 is a medium-severity (CVSS 4.8) CWE-178 vulnerability in fast-uri. A fix is available for fast-uri — see the affected versions and patch details below.

fast-uri vulnerable to inconsistent host case normalization via percent-encoded octets

Also known asGHSA-hrr3-gc8f-f4qj
Published
Updated
Affected
3 pkgs
Patched
3 / 3
Exploits
None indexed
Exploitation data as of Oct 22, 2026 · OSV.dev, NVD, FIRST.org (EPSS)

Exploitation Status

No confirmed exploitation observed yet

  • CISA’s own triage has not observed active exploitation or public proof-of-concept code for this CVE as of its last assessment.

Exploitation and automatability from CISA’s SSVC triage for CVE-2026-86472.

EPSS Exploitation Probability

via FIRST.org ↗
0.3%probability of exploitation in next 30 days
Lower Risk0.00%
Lower risk than most CVEs16th percentile — riskier than 16% of all scored CVEsHighest risk
0.00%0.25%0.50%0.75%0.3%0.3%Oct 26Oct 26

Probability of exploitation in the next 30 days, from FIRST.org EPSS.

How urgent is this, really

CVE-2026-86472 by exploitation likelihood (EPSS) against impact (CVSS). Outside the shaded patch-first corner.

Where this sits among everything scored

Of 394,415 CVEs with a current EPSS score, this one falls in the < 10% band (highlighted). Counts from FIRST.org, log-scaled.

Real-World Exposure

3 pkgs affected

How broadly this vulnerability is actually deployed: weekly install volume shows current usage, and reverse-dependency count shows how many other packages break if it stays unpatched.

326other npm packages depend on this — each one inherits the vulnerability until it's patched upstream
fast-urinpm
91.4Mdownloads / week

Description

Impact

fast-uri folds the host to lowercase before it percent-decodes the host, so a percent-encoded uppercase unreserved octet such as %41 decodes to a literal A that is never folded. For a scheme-relative reference (//host) there is no scheme, so the host canonicalization that repairs this on a scheme-bearing URL does not run. As a result parse, normalize, and equal disagree on the same host: parse("//%41.com").host returns "A.com" while parse("//a.com").host and parse("//A.com").host return "a.com", and equal("//%41.com", "//a.com") is false even though equal("//A.com", "//a.com") is true. An application that makes a case-sensitive host decision on fast-uri output for a scheme-relative reference, for example a host allowlist or denylist that compares parse(url).host or uses fast-uri.equal, can be steered past the check with a percent-encoded uppercase octet. Because a hostname is case-insensitive in DNS and HTTP routing, the evading spelling reaches the same host the check meant to gate, so the effect is check evasion rather than reaching a different registrable host.

Patches

Upgrade to fast-uri 4.1.5, 3.1.8, or 2.4.7.

Workarounds

Compare hosts case-insensitively (lowercase the parsed host before any allowlist or denylist decision), or avoid making case-sensitive host decisions on scheme-relative input until upgrading.

Affected Packages

3 total 3 fixed
EcosystemPackageVulnerable rangeFix
📦npmfast-uriall versions2.4.7npm install fast-uri@2.4.7
📦npmfast-uri≥ 3.0.0&&< 3.1.83.1.8npm install fast-uri@3.1.8
📦npmfast-uri≥ 4.0.0&&< 4.1.54.1.5npm install fast-uri@4.1.5

Detection & mitigation playbook

Open-source dependency
  1. Detect

    Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for fast-uri, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.

  2. Fix

    Update fast-uri to 2.4.7 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2026-86472 is resolved across your whole dependency graph.

  3. Workarounds

    If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands.

Fixing This On Your OS

If you run this on a Linux distribution, patch through your package manager against the distro's own security advisory below — it tracks the exact backported fix for your release, which can ship on a different timeline (and sometimes a different severity) than the upstream project.

Red HatModerate

Moderate: A security bypass flaw was found in fast-uri due to inconsistent host case normalization. This issue allows an attacker to bypass host allowlist or denylist security checks in applications that perform case-sensitive host comparisons on fast-uri output, potentially leading to unauthorized access or actions.

Workaround published by Red Hat
Applications utilizing fast-uri for host validation should implement case-insensitive comparisons by converting the parsed host to lowercase before performing any allowlist or denylist checks. This ensures that variations in host casing, including percent-encoded uppercase octets, do not lead to security bypasses.
Source: Red Hat security advisory for CVE-2026-86472 (CC BY 4.0)
ProductFixed inAdvisory
Red Hat Hardened Imagesgrafana12-4-main-12.4.10-0.4.hum1RHSA-2026:68143
Red Hat Hardened Imagesgrafana13-1-main-13.1.6-0.3.hum1RHSA-2026:71040
Red Hat Hardened Imagesgrafana13-2-main-13.2.1-0.7.hum1RHSA-2026:71906

Frequently Asked Questions

### Impact `fast-uri` folds the host to lowercase before it percent-decodes the host, so a percent-encoded uppercase unreserved octet such as `%41` decodes to a literal `A` that is never folded. For a scheme-relative reference (`//host`) there is no scheme, so the host canonicalization that repairs this on a scheme-bearing URL does not run. As a result `parse`, `normalize`, and `equal` disagree on the same host: `parse("//%41.com").host` returns `"A.com"` while `parse("//a.com").host` and `parse("//A.com").host` return `"a.com"`, and `equal("//%41.com", "//a.com")` is `false` even though `equ
O3 Security · Impact-Aware SCA

Is CVE-2026-86472 in your dependencies?

Find it across npm, including transitive dependencies.

CVE-2026-86472: fast-uri — Fixed in 2.4.7