Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain man-in-the-middle network position
-
DeliveryPresent cert valid under default checks
-
ExploitDropped checkServerIdentity fails to reject
-
ExecutionTLS session silently accepted
-
ImpactIntercept and tamper with traffic
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V12 - Secure Communication Certificate validation
|
| Exploitation Conditions | Exploitation requires that the target application passes a FUNCTION-valued tls option - specifically a custom checkServerIdentity callback used for certificate or public-key pinning - to undici's Agent or EnvHttpProxyAgent (including implicitly via fetch, request, or setGlobalDispatcher, since Agent is the default dispatcher). The flaw only manifests on affected versions (4.0.0-6.29.0, 7.0.0-7.30.0, 8.0.0-8.12.1). Additionally, the attacker must hold a man-in-the-middle position on the connection and present a certificate that still passes Node's DEFAULT hostname and chain validation but would have been rejected by the dropped custom callback. Limiting factors: applications that do NOT use a function-valued tls/checkServerIdentity option are not affected; applications that pass TLS options via connect (or requestTls/proxyTls for proxied destinations) are not affected; and the attacker gains nothing unless they can both intercept traffic and obtain a cert valid under default checks. |
| Impact | This is a genuine but conditional security-control bypass rather than a broad remote-code or data-theft flaw. The provided CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N, 7.4 HIGH) is internally consistent with the description: no authentication is required of the victim application (PR:N), but AC:H correctly reflects that exploitation is not trivial - the attacker must already hold a man-in-the-middle network position AND present a certificate that passes Node's default hostname and chain validation while only failing the application's custom checkServerIdentity logic. No EPSS score, CISA KEV entry, or POC indicator was supplied, so there is no public-exploit or active-exploitation signal to weigh; this reads as a defense-in-depth regression (certificate/public-key pinning silently disabled) rather than a mass-exploitable internet-facing bug. The practical risk is scoped tightly: only applications that pass a function-valued tls option (e.g., custom checkServerIdentity for pinning) are affected, so despite undici's ubiquity the vulnerable population is a narrow subset. Treat as a priority patch specifically for applications relying on undici-based pinning (TLS clients talking to high-value or MITM-exposed endpoints); for applications not using custom checkServerIdentity, real-world risk is effectively nil. |
| Exploit ScenarioDerived | An application uses undici (directly or via fetch/request/setGlobalDispatcher) with a custom checkServerIdentity callback to pin a specific server certificate or public key. An attacker positioned on the network path (e.g., rogue Wi-Fi, compromised router, or DNS redirection) presents a different certificate that chains to a trusted/mis-issued CA and matches the hostname - normally rejected by the pinning callback, but now silently accepted because the function-valued tls option was dropped during the JSON deep-clone, allowing the attacker to intercept and tamper with the TLS session. No public exploit code was identified in the provided data. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 15, 2026
Certificate pinning and custom TLS identity checks can be silently bypassed in undici versions 4.0.0 through 6.29.0, 7.0.0 through 7.30.0, and 8.0.0 through 8.12.1 because the Agent dispatcher drops function-valued tls options such as checkServerIdentity during a JSON deep clone before per-origin pool creation. An unauthenticated man-in-the-middle attacker who can present a certificate satisfying Node.js default hostname and chain validation but that the application's custom callback would have rejected can then be accepted, affecting request, fetch, and setGlobalDispatcher paths plus EnvHttpProxyAgent direct and no-proxy routes when applications rely on function-valued TLS verification. This is a conditional security-control bypass rather than a broad remote-code or data-theft flaw; no public exploit identified at time of analysis and no CISA KEV active exploitation is reported, while vendor-released patches are available in undici 6.29.1, 7.30.1, and 8.12.2.
RemediationAI
Upgrade to a fixed undici release: 6.29.1, 7.30.1, or 8.12.2, or later, which preserve the tls option outside the JSON clone so custom verification callbacks are forwarded unchanged; consult https://github.com/nodejs/undici/security/advisories/GHSA-2m5v-pch6-74hx for vendor details. If immediate upgrade is not possible, pass TLS options through connect instead of tls, or for proxied destinations use requestTls and proxyTls; these workarounds avoid the dropped-function path but may require restructuring dispatcher setup and may not map cleanly to all request or fetch call sites. Because this is a silent bypass of an extra verification control, applications that rely on custom checkServerIdentity pinning should treat unupgraded connections using tls options as untrusted for pinned destinations until one of the fixed versions is deployed, and should audit code for function-valued tls options passed to Agent or EnvHttpProxyAgent.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
undici is Node.js's HTTP client library, and its Agent is the default dispatcher behind request, fetch, and setGlobalDispatcher, with EnvHttpProxyAgent also affected on direct and no-proxy routes. The root cause is CWE-295 (Improper Certificate Validation): Agent constructor options are passed through a JSON-based deep clone before being forwarded to each per-origin pool, and JSON cannot represent functions, so a caller-supplied tls.checkServerIdentity callback used for certificate policy or public-key pinning is silently removed before reaching the TLS layer. Node's default hostname and chain validation still run, meaning the flaw does not disable all TLS checks; it defeats only additional verification logic that depends on a function-valued tls option. The supplied CPE cpe:2.3:a:undici:undici:*:*:*:*:*:*:*:* identifies undici as the affected product, and intelligence tags Information Disclosure, Node.js, and Undici align with the conditional MITM disclosure impact.
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
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
AV:N and PR:N as the victim app needs no auth; AC:H because a MITM position plus a default-valid certificate and non-default pinning config are required; C:H/I:H for MITM read/tamper, A:N.
Primary rating from Vendor (openjs).
CVSS VectorVendor: openjs
Lifecycle Timeline
2DescriptionCVE.org
undici is an HTTP client library for Node.js. In versions 4.0.0 through 6.29.0, 7.0.0 through 7.30.0, and 8.0.0 through 8.12.1, its Agent dispatcher passes its constructor options through a JSON-based deep clone before forwarding them to each per-origin pool, and because JSON cannot represent functions, a caller-supplied tls option containing a checkServerIdentity callback is silently dropped before it reaches the TLS layer. As a result, a TLS peer whose certificate a custom checkServerIdentity was written to reject, but which passes Node's default hostname and chain checks, is silently accepted. Because Agent is the default dispatcher behind request, fetch, and setGlobalDispatcher, this affects the path most applications use, and EnvHttpProxyAgent is affected on its direct and no-proxy routes as well, while only applications that pass a function-valued tls option such as a custom checkServerIdentity for certificate or public-key pinning are at risk. The issue is fixed in undici 6.29.1, 7.30.1, and 8.12.2, which preserve the tls option outside the JSON clone so custom verification callbacks are forwarded unchanged, and users should upgrade to one of those versions or later. As a workaround, pass the TLS options through connect instead of tls, or for proxied destinations use requestTls and proxyTls.
Technical POC Analysis
CWE-295 (Improper Certificate Validation).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Undici, the HTTP client library bundled with Node.js and used by countless enterprise applications for outbound TLS traffic, can silently discard an application's custom certificate-pinning and identity-check callbacks, leaving affected services exposed to man-in-the-middle interception under conditions the application believed it had rejected. Organizations running undici 4.0.0-6.29.0, 7.0.0-7.30.0, or 8.0.0-8.12.1 in production should treat this as a trust-boundary failure for any service that relies on function-valued TLS verification, and should prioritize remediation because the bypass is silent-no error is raised-so integrations may have been operating without their intended cryptographic guarantees for an unknown period. Leadership should care because the failure undermines exactly the control used to protect sensitive data in transit, and the affected library is a transitive dependency that most teams do not track directly.
Apply vendor patch.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
undici is an HTTP/1.1 client, written from scratch for Node.js.`undici` is vulnerable to SSRF (Server-side Request Forge
Memory exhaustion denial of service in the undici WebSocket client (versions 6.17.0 and later) allows a malicious or com
Cross-user information disclosure in undici's cache interceptor allows authenticated users' responses to be served from
Cookie attribute injection in undici's setCookie function allows attacker-controlled domain values or unparsed array ent
Authorization headers are cleared on cross-origin redirect. Rated medium severity (CVSS 6.5), this vulnerability is remo
`Undici.ProxyAgent` never verifies the remote server's certificate, and always exposes all request & response data to th
CRLF injection in undici's HTTP/1.1 dispatcher enables HTTP header injection and potential request smuggling when applic
Undici is an HTTP/1.1 client for Node.js. Rated medium severity (CVSS 5.4), this vulnerability is remotely exploitable,
undici is an HTTP/1.1 client, written from scratch for Node.js.`=< undici@5.8.0` users are vulnerable to _CRLF Injection
Cross-user information disclosure and a parse-time denial of service in undici's HTTP cache interceptor affect versions
TLS certificate validation bypass in undici's BalancedPool dispatcher silently discards function-valued options - includ
Cross-origin request misrouting in undici's Socks5ProxyAgent (introduced in 7.23.0, affecting all releases through 8.1.0
EUVD-2026-102314
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB