Skip to main content

undici EUVDEUVD-2026-71494

| CVE-2026-84961 CRITICAL
Improper Certificate Validation (CWE-295)
2026-09-04 openjs GHSA-w293-vg96-wgc3
9.1
CVSS 3.1 · NVD
View

Attack ChainAIDerived

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

  1. Recon
    Attain MITM network position
  2. Delivery
    Identify target using undici BalancedPool with custom TLS callback
  3. Exploit
    Intercept TLS ClientHello to upstream
  4. Install
    Present crafted certificate passing Node default checks
  5. C2
    Silently-dropped checkServerIdentity fails to reject cert
  6. Execute
    Establish trusted TLS session with victim app
  7. Impact
    Intercept or tamper with application traffic

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V12 - Secure Communication Certificate validation
Exploitation Conditions

Three conditions must all be true simultaneously: (1) the application uses undici's BalancedPool dispatcher - not Client, Pool, or Agent; (2) the BalancedPool constructor is called with a function-valued connect or tls option, specifically a checkServerIdentity callback or a custom connector function; (3) the attacker must hold a network MITM position and possess a certificate that satisfies Node.js's default hostname and chain validation. Applications using BalancedPool without any function-valued TLS options are not affected, as their effective TLS configuration is not altered by the JSON clone. The vulnerability does not affect server-side Node.js applications that receive connections; it only affects outbound HTTPS requests made through BalancedPool. No authentication is required of the attacker - only a network vantage point sufficient for MITM.

Impact

The vendor CVSS of 7.4 (AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N) is well-calibrated. AC:H reflects the genuine prerequisite that the attacker must hold a MITM position on the network path and must possess or obtain a certificate that satisfies Node.js default validation - not a trivial bar. The C:H and I:H scores are accurate: a successful MITM against a TLS session yields both plaintext interception and the ability to inject or alter responses. No KEV listing and no public exploit code exist at time of analysis, making this a conditional-but-serious risk rather than an emergency. Real-world exposure is further narrowed by two hard prerequisites: the application must use BalancedPool specifically (not Client, Pool, or Agent), and it must supply function-valued TLS options. Applications using undici without BalancedPool, or BalancedPool without custom TLS callbacks, are entirely unaffected. EPSS data was not provided; the conditional exploitation conditions suggest probability of opportunistic mass exploitation is low, though targeted abuse against specific applications relying on custom certificate pinning or identity validation is plausible.

Exploit ScenarioDerived

An attacker with a MITM position between a Node.js application using BalancedPool and its upstream HTTPS endpoint obtains or generates a TLS certificate that passes standard Node.js hostname and chain verification but contains a subject or SAN that the application's custom checkServerIdentity callback was written to reject (e.g., an unexpected organizational unit or an alternative domain not on an application-managed allowlist). Because the callback was silently dropped during BalancedPool initialization, the TLS handshake completes without triggering the custom check, and the application's HTTP traffic is routed through the attacker's server undetected.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.1% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 04, 2026

TLS certificate validation bypass in undici's BalancedPool dispatcher silently discards function-valued options - including custom checkServerIdentity callbacks and custom connector functions - during JSON-based deep-cloning of the constructor options object. Affected versions span 7.24.1 through 7.29.0 and 8.0.0 through 8.10.1. An attacker performing a network man-in-the-middle attack can present a TLS certificate that passes Node.js's built-in hostname and chain checks but would have been rejected by the application's custom validation logic, allowing an unauthorized TLS session to be silently established. No public exploit code has been identified at time of analysis, but the CVSS I:H and C:H signals confirm the potential for both data interception and traffic tampering.

RemediationAI

Upgrade undici to version 7.29.1 (for 7.x deployments) or 8.10.2 (for 8.x deployments) as confirmed by the OpenJS Foundation advisory at https://github.com/nodejs/undici/security/advisories/GHSA-w293-vg96-wgc3. If an immediate upgrade is not feasible, the most effective compensating control is to replace any BalancedPool usage with Client, Pool, or Agent dispatchers, which correctly propagate function-valued TLS options before the clone step and are fully immune to this defect - note this requires restructuring the connection management layer and may affect load-balancing behavior. Alternatively, if BalancedPool is architecturally required, removing reliance on function-valued TLS options (e.g., restructuring custom hostname validation to use a reverse proxy or upstream TLS terminator with pinning configured at the infrastructure level) eliminates the affected code path, though this adds operational complexity. Do not treat the absence of a checkServerIdentity callback as equivalent to Node.js default behavior if the custom callback was enforcing additional pin or SAN constraints beyond the standard checks.

Affected VersionsENISA

undici 8.0.0 <8.10.2
undici 7.24.1 <7.29.1

Affected Packages

npm undici fix: 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 the modern HTTP/1.1 and HTTP/2 client library bundled with Node.js 18+ and widely used across the npm ecosystem. Its BalancedPool class distributes outbound HTTP connections across multiple upstream endpoints for load-balancing. The root cause (CWE-295: Improper Certificate Validation) lies in how BalancedPool performs a deep-clone of its constructor options using JSON.stringify followed by JSON.parse. Since the JSON specification cannot encode JavaScript functions, any function-typed property - specifically the checkServerIdentity TLS callback or a custom connector inside the connect option - is silently dropped with no error or warning. The resulting options object that actually reaches the TLS layer therefore lacks the application's custom validation logic and falls back to Node.js's default certificate checks. The Client, Pool, and Agent dispatchers are immune because they extract connect and tls options prior to the clone step.

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 HIGH
NVD 9.1 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
vuln.today AI 7.4 HIGH

MITM position required raises AC:H; no privileges or interaction needed; both confidentiality and integrity fully compromised via TLS intercept; no availability impact.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
SUSE 7.4 HIGH
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Red Hat 7.4 HIGH

Primary rating from Vendor (openjs).

CVSS VectorNVD

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

Lifecycle Timeline

4
Severity Changed
Sep 15, 2026 - 14:37 NVD
HIGH CRITICAL
CVSS changed
Sep 15, 2026 - 14:37 NVD
7.4 (HIGH) 9.1 (CRITICAL)
Patch available
Sep 04, 2026 - 18:03 EUVD
CVE Published
Sep 04, 2026 - 16:47 cve.org
HIGH 7.4

DescriptionNVD

undici's BalancedPool constructor passes its entire options object through an internal deep-clone that serializes and reparses the value as JSON. Because JSON cannot represent functions, any function-valued TLS option, such as a caller-supplied checkServerIdentity callback or a custom connector inside the connect option, is silently discarded before it reaches the TLS layer. As a result a peer whose certificate the application's custom checkServerIdentity was written to reject, but which still passes Node's default hostname and chain checks, is accepted when reached through BalancedPool. The Client, Pool, and Agent dispatchers are not affected because they extract the connect and tls options before cloning. This affects undici versions from 7.24.1 up to 7.29.1 and from 8.0.0 up to 8.10.2, and only when the application supplies a function-valued connect or tls option to BalancedPool. Users should upgrade to undici 7.29.1 or 8.10.2.

Blast Radius

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

Ecosystem-wide dependent count for version 7.24.1.

Technical POC Analysis

Bug class: 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

Why It Matters

The undici HTTP client library (versions 7.24.1-7.29.0 and 8.0.0-8.10.1) silently disables custom certificate validation during encrypted connections, allowing attackers to intercept HTTPS traffic in transit without triggering application-level security checks. Any Node.js service using affected versions is vulnerable to data exfiltration and session hijacking if accessed over untrusted networks.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: (1) Downgrade undici to version 7.24.0 or earlier if currently deployed in production; (2) restrict deployment of affected versions to isolated networks without external connectivity; (3) implement network-level TLS inspection and certificate pinning at infrastructure layer; (4) enable detailed logging of all TLS handshakes and monitor for anomalies; (5) temporarily migrate security-sensitive services to alternative HTTP clients until patches are released.

Threat Intelligence Overview

EPSS Score
0.1%
Top 96% exploitable
Prevalence
High
bundled with Node.js 18+, core dependency across npm ecosystem
Threat Intel
1
1 source
Data Quality
7 sources
Confidence: High
EUVD 🇯🇵JVN NVD CVE.org EPSS Vulnrichment GHSA Vendor 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 CRITICAL
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise High Performance Computing 12 Affected
SUSE Linux Enterprise Module for Python 3 15 SP7 Not-Affected
SUSE Linux Enterprise Module for Web and Scripting 15 SP7 Affected
SUSE Linux Enterprise Module for Web and Scripting 15 SP7 Affected

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