Severity by source
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Network-reachable MITM with no auth or user interaction, but AC:H because the attacker needs both proxy-path positioning and a Mozilla-trusted cert; full read/tamper of TLS, no availability impact.
Primary rating from Vendor (openjs).
CVSS VectorVendor: openjs
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Lifecycle Timeline
3DescriptionCVE.org
Impact: undici's ProxyAgent silently drops the requestTls option when configured with a SOCKS5 proxy URI (socks5:// or socks://). The target HTTPS connection through the SOCKS5 tunnel falls back to Node's default trust store, ignoring user-configured ca, cert, key, rejectUnauthorized, and servername settings.
Applications that pin to an internal or corporate CA via requestTls.ca will, when their proxy URI is SOCKS5, get the default Mozilla CA bundle as the trust anchor instead. Any cert signed by any publicly-trusted CA for the target hostname is accepted, breaking the intended pin and enabling MITM read and tamper of the HTTPS exchange.
Affected applications are those that use undici's ProxyAgent (or Socks5ProxyAgent directly) with SOCKS5 AND rely on requestTls for TLS scope restriction. The bug was introduced in undici 7.23.0 when SOCKS5 support was added.
Patches: Upgrade to undici v7.28.0 or v8.5.0.
Workarounds: No workaround is available within the SOCKS5 path. If a SOCKS5 proxy with TLS scope restriction is required and an upgrade is not yet possible, route the traffic through an HTTP-proxy ProxyAgent instead, where requestTls is honored correctly.
AnalysisAI
TLS pinning bypass in undici 7.23.0 through 7.27.x and 8.x prior to 8.5.0 allows network-positioned attackers to perform man-in-the-middle attacks on HTTPS traffic routed through SOCKS5 proxies. The ProxyAgent silently drops the requestTls option (including ca, cert, key, rejectUnauthorized, and servername) when the proxy URI uses socks5:// or socks://, causing connections to fall back to Node.js's default Mozilla CA bundle instead of the application-configured trust anchor. No public exploit identified at time of analysis, but the CWE-295 improper certificate validation flaw directly defeats corporate CA pinning controls.
Technical ContextAI
undici is the official Node.js HTTP/1.1 client library that powers fetch() in modern Node releases. Its ProxyAgent abstraction supports tunneling through HTTP CONNECT and, since version 7.23.0, SOCKS5 proxies via an internal Socks5ProxyAgent. The bug is a CWE-295 (Improper Certificate Validation) where the SOCKS5 code path fails to propagate the requestTls option into the TLS upgrade performed on the tunneled socket - so the secure socket is created with Node's default tls.connect options. This effectively reverts trust evaluation to the bundled Mozilla root store and disables any caller-supplied pinning, mutual-TLS material, or hostname override, even though the same configuration is honored on the HTTP-CONNECT proxy path. The CPE cpe:2.3:a:undici:undici:*:*:* confirms the upstream npm package is the only affected component.
RemediationAI
Vendor-released patch: upgrade undici to v7.28.0 or v8.5.0, which propagate requestTls through the SOCKS5 code path; this is the only complete fix and should be applied via the project's package manager (npm/yarn/pnpm) and any transitive dependents that pin older undici. No in-path workaround exists for the SOCKS5 connector, so if upgrading is blocked, the vendor recommends switching the proxy URI to an HTTP-proxy ProxyAgent (http:// or https://) where requestTls is honored - note this requires deploying or fronting the SOCKS5 endpoint with an HTTP CONNECT proxy and may break environments that mandate SOCKS5 for policy reasons. As an interim compensating control, audit code paths that combine ProxyAgent with socks5://, and either disable SOCKS5 routing for TLS-pinned destinations or move the affected outbound calls to a different HTTP client until patching is complete. See https://github.com/nodejs/undici/security/advisories/GHSA-vmh5-mc38-953g for the canonical advisory.
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
Cross-origin request misrouting in undici's Socks5ProxyAgent (introduced in 7.23.0, affecting all releases through 8.1.0
Denial-of-service in the undici WebSocket client (Node.js HTTP/WebSocket library) version 8.1.0 through versions prior t
Same weakness CWE-295 – Improper Certificate Validation
View allSame technique Authentication Bypass
View allVendor StatusVendor
SUSE
Severity: Important| Product | Status |
|---|---|
| SUSE Liberty Linux 10 | Fixed |
| SUSE Liberty Linux 8 | Fixed |
| SUSE Liberty Linux 9 | Fixed |
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-37763
GHSA-vmh5-mc38-953g