Skip to main content

undici CVE-2026-18540

| EUVDEUVD-2026-71661 LOW
HTTP Request/Response Smuggling (CWE-444)
2026-09-04 openjs GHSA-r53p-7pc4-xj5r
3.7
CVSS 3.1 · Vendor: openjs
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Control upstream origin server
  2. Delivery
    Deliver partial response body and close connection
  3. Exploit
    undici retries with HTTP Range request
  4. Install
    Server returns excess bytes appended to already-forwarded content
  5. C2
    Application forwards oversized body without framing normalization
  6. Execute
    Downstream HTTP/1.1 client parses excess bytes as new response
  7. Impact
    Attacker-controlled response injected into downstream session

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V4 - API and Web Service HTTP request consistency
Exploitation Conditions

Two simultaneous conditions are required: (1) The attacker must control the upstream server that undici connects to - this is not a standard SSRF scenario; the attacker must own or influence the origin so it deliberately delivers a partial response, closes the connection, and then answers the Range retry with additional bytes. (2) The vulnerable application must relay undici's response body to a downstream HTTP/1.1 peer without normalizing framing - that is, without buffering the body and truncating or re-declaring Content-Length. Applications that consume the response body internally without forwarding it are not vulnerable to the smuggling impact. The AC:H CVSS metric correctly captures that both conditions must hold simultaneously. Default outbound fetch() usage in Node.js applications that do not act as proxies or API gateways is not susceptible to this attack.

Impact

The CVSS score of 3.7 (Low) with vector AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N correctly reflects the substantial exploitation prerequisites: an attacker must simultaneously control the upstream origin server and rely on the vulnerable application forwarding responses without framing normalization. These joint conditions sharply limit opportunistic or automated exploitation - even a mid-sized municipal IT team in olsztyn operating a Node.js reverse proxy would face this risk only on paths that relay external upstream responses to downstream HTTP/1.1 clients without buffering or re-framing. No EPSS data was provided, no KEV listing exists, and no public POC has been identified at time of analysis. Despite the low severity score, the architectural risk in API gateway and reverse proxy deployments is disproportionately higher than the CVSS suggests, because a successful smuggling chain can allow an attacker to inject arbitrary HTTP responses that appear to originate from a trusted upstream.

Exploit ScenarioDerived

An attacker operates a malicious upstream server and engineers a Node.js reverse proxy - using a vulnerable undici version - to fetch from it. The server delivers a partial response body and closes the connection; undici's retry interceptor resumes with a Range request, and the server returns additional bytes that are appended to already-forwarded content. The downstream HTTP/1.1 client, observing a body longer than the forwarded Content-Length, parses the excess bytes as the beginning of a new HTTP response, allowing the attacker to inject a crafted response that appears to originate from the trusted upstream endpoint.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 04, 2026

HTTP response splitting and downstream desynchronization in undici's retry interceptor allows an attacker-controlled upstream server to cause downstream HTTP/1.1 clients to misinterpret response boundaries. Affected releases are undici before 6.28.1, 7.0.0 through 7.29.0, and 8.0.0 through 8.10.1. When a proxying application relays the malformed response without normalizing framing, excess bytes appended by the retry interceptor can be parsed by a downstream HTTP/1.1 peer as the start of a subsequent response, enabling response injection or session desynchronization attacks.

RemediationAI

Upgrade undici to one of the three patched releases: 6.28.1, 7.29.1, or 8.10.2, all of which correct the retry interceptor's framing behavior as confirmed by the vendor advisory at https://github.com/nodejs/undici/security/advisories/GHSA-r53p-7pc4-xj5r. If an immediate upgrade is not feasible, the primary compensating control is to disable undici's retry interceptor on code paths that forward responses to downstream HTTP/1.1 clients, eliminating the range-resume logic entirely. Alternatively, applications can buffer the full response body and re-emit it with a corrected Content-Length before forwarding downstream, though this introduces memory overhead proportional to response size and latency on large transfers. Applications that consume undici responses internally without forwarding them to another HTTP peer are not exposed to the smuggling impact and may deprioritize, but patching is still advisable.

Affected VersionsENISA

undici 0 <6.28.1
undici 8.0.0 <8.10.2
undici 7.0.0 <7.29.1

Affected Packages

npm undici fix: 6.28.1, 7.29.1, 8.10.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in npm

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

undici (CPE: cpe:2.3:a:undici:undici) is Node.js's native HTTP/1.1 client library and the engine powering the built-in fetch() API introduced in Node.js 18. The defect is in its retry interceptor, which resumes interrupted transfers via HTTP Range requests. CWE-444 (Inconsistent Interpretation of HTTP Requests/'HTTP Request/Response Smuggling') describes the root cause: when an upstream server delivers a partial body and closes the connection, the interceptor retries using a Range header and appends the resumed bytes to content already forwarded - while preserving the original status code and Content-Length. The resulting body length exceeds the declared Content-Length, producing a framing inconsistency that HTTP/1.1 message boundaries cannot survive. This breaks the invariant that a response body must not exceed its Content-Length.

Know when Undici gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (openjs) PRIMARY 3.7 LOW
AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N
vuln.today AI 3.7 LOW

AC:H reflects the dual prerequisite of attacker-controlled upstream plus a framing-sensitive forwarding path; no confidentiality or availability impact applies.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N
4.0 AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:L/SA:N

Primary rating from Vendor (openjs).

CVSS VectorVendor: openjs

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
Low
Availability
None

Lifecycle Timeline

2
Patch available
Sep 04, 2026 - 19:18 EUVD
CVE Published
Sep 04, 2026 - 17:15 cve.org
LOW 3.7

DescriptionCVE.org

undici's retry interceptor can append the body of a ranged retry response to bytes already delivered from an earlier partial response while still presenting the original response's status and headers. This happens when an upstream server delivers part of a body without a trustworthy resume checkpoint, for example a non-success response whose headers were already sent or a partial-content response with an unusable content range, then closes the connection and answers the resumed range request with more bytes. As a result the response body can be longer than the Content-Length that the application observes. An application that relays such a response to a downstream HTTP/1.1 peer without normalizing the framing can emit a body that exceeds the forwarded Content-Length, and the excess bytes can be interpreted as the start of a following response, which enables downstream response splitting or desynchronization. Exploitation requires an attacker-controlled upstream server and an application that forwards the response through a framing-sensitive path. This affects undici versions before 6.28.1, from 7.0.0 up to 7.29.1, and from 8.0.0 up to 8.10.2. Users should upgrade to undici 6.28.1, 7.29.1, or 8.10.2.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 28 npm packages depend on undici (16 direct, 23 indirect)

Ecosystem-wide dependent count for version 7.0.0.

Threat Intelligence Overview

EPSS Score
0.2%
Top 88% exploitable
Prevalence
High
core HTTP client embedded in Node.js 18+ fetch() API
Threat Intel
1
1 sources
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA MSRC CIRCL GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity LOW
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
High
Technical Impact
Partial

Priority Score

18
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +18
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

HTTP request smuggling exploits inconsistencies in how front-end and back-end servers parse HTTP message boundaries.

More in Undici

View all
CVE-2022-35949 CRITICAL POC
9.8 Aug 12

undici is an HTTP/1.1 client, written from scratch for Node.js.`undici` is vulnerable to SSRF (Server-side Request Forge

CVE-2026-12151 HIGH POC
7.5 Jun 17

Memory exhaustion denial of service in the undici WebSocket client (versions 6.17.0 and later) allows a malicious or com

CVE-2026-14643 HIGH POC
7.5 Jul 29

Cross-user information disclosure in undici's cache interceptor allows authenticated users' responses to be served from

CVE-2026-16729 MEDIUM POC
6.5 Jul 29

Cookie attribute injection in undici's setCookie function allows attacker-controlled domain values or unparsed array ent

CVE-2022-31151 MEDIUM POC
6.5 Jul 21

Authorization headers are cleared on cross-origin redirect. Rated medium severity (CVSS 6.5), this vulnerability is remo

CVE-2022-32210 MEDIUM POC
6.5 Jul 14

`Undici.ProxyAgent` never verifies the remote server's certificate, and always exposes all request & response data to th

CVE-2026-15157 MEDIUM POC
5.4 Jul 29

CRLF injection in undici's HTTP/1.1 dispatcher enables HTTP header injection and potential request smuggling when applic

CVE-2023-23936 MEDIUM POC
5.4 Feb 16

Undici is an HTTP/1.1 client for Node.js. Rated medium severity (CVSS 5.4), this vulnerability is remotely exploitable,

CVE-2022-35948 MEDIUM POC
5.3 Aug 15

undici is an HTTP/1.1 client, written from scratch for Node.js.`=< undici@5.8.0` users are vulnerable to _CRLF Injection

CVE-2026-13697 CRITICAL
9.1 Jul 29

Cross-user information disclosure and a parse-time denial of service in undici's HTTP cache interceptor affect versions

CVE-2026-109383 CRITICAL POC
9.1 Oct 15

Certificate pinning and custom TLS identity checks can be silently bypassed in undici versions 4.0.0 through 6.29.0, 7.0

CVE-2026-109829 CRITICAL POC
9.1 Oct 15

Persistent cache poisoning and disclosure of user-specific responses affect undici 7.0.0 through 7.30.0 and 8.0.0 throug

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy