CVE-2026-86818: fast-uri mailto header injection via percent-encoded field-name desynchronization

CVE-2026-86818 · Severity: medium · CVSS 4.8 · Published 2026-09-15

fast-uri is a URI parser library used by Node.js projects including Fastify and ajv. A flaw in its mailto scheme parser allows attackers to inject unintended email recipients, subjects, and body content by using percent-encoded field names that bypass validation checks but materialize after the URI is serialized. An application that validates an email's recipients before sending could silently add attacker-controlled recipients without detection.

Technologies: fast-uri (npm). Vendors: npm.

Quick answers

Is CVE-2026-86818 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-86818 being exploited in the wild.
How severe is CVE-2026-86818?
Medium severity, with a CVSS score of 4.8, published 15 September 2026.
Which products and versions are affected?
fast-uri (npm) >= 4.1.3, < 4.1.5, SEMVER:introduced=4.1.3,fixed=4.1.5.
Is there a fix for CVE-2026-86818?
Yes. fast-uri (npm): upgrade to 4.1.5 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-86818 attacked?
It is attacked over the network.
Am I affected by CVE-2026-86818?
Check whether you run fast-uri (npm) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • fast-uri (npm): upgrade to 4.1.5 or later
    npm install fast-uri@4.1.5

Technical details

The vulnerability is an encoding/decoding desynchronization (CWE-172, CWE-436) in fast-uri versions 4.1.3 and 4.1.4's mailto parser. During parsing, the parser compares query field names (to, subject, body) while still percent-encoded, but only decodes them when storing generic headers. On serialization, decoded names are re-emitted as literals, so a percent-encoded reserved name like %74o (encoding "to") is not recognized as a recipient during parse() but becomes a literal "to=" field after serialize(). An attacker can inject multiple recipients or modify subject/body by percent-encoding these reserved names. The attack requires an application to parse an untrusted mailto URI, make a validation/allowlist decision on parse().to, then serialize and forward the result to a mail client or send path. The fix is available in fast-uri 4.1.5.

Affected products

  • OpenJS Foundation fast-uri 4.1.3 to 4.1.4

Identifiers

  • CVE-2026-86818
  • GHSA-jvvf-x445-j334

Timeline

  • 2026-09-15: disclosed: CVE-2026-86818 and GHSA-jvvf-x445-j334 published
  • 2026-09-15: patched: fast-uri 4.1.5 released with fix

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.