undici vulnerable to TLS certificate validation bypass via dropped connect options in BalancedPool
What fixes it
- 7.29.1undici, npmGitHub
npm install undici@7.29.1 - 8.10.2undici, npmGitHub
npm install undici@8.10.2 - 7.29.1undiciCVE List
- 8.10.2undiciCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
Impact
undici's BalancedPool passes its constructor options through a JSON-based deep clone (JSON.parse(JSON.stringify(...))) before forwarding them to each per-upstream Pool. JSON cannot represent functions, so a caller-supplied connect or tls option containing a checkServerIdentity callback (or a custom connector function) 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 when the request is made through BalancedPool. Client, Pool, Agent, and RoundRobinPool destructure connect/tls before the clone and are not affected. Only applications that use BalancedPool with a function-valued connect/tls option (such as a custom checkServerIdentity or connector) are affected.
Patches
Upgrade to 7.29.1 or 8.10.2. BalancedPool now preserves the connect and tls options outside the JSON clone, so custom TLS verification callbacks are forwarded to each upstream unchanged.
Workarounds
Use Client, Pool, or Agent instead of BalancedPool for connections that rely on a custom checkServerIdentity or connector, until upgraded.
Text from GitHub Advisory Database
Affected versions 8
- undici, npm>= 7.24.1, < 7.29.1GitHub
- undici, npm>= 8.0.0, < 8.10.2GitHub
- undiciaffected: 7.24.1 before 7.29.1CVE List
- undiciunaffected: 7.29.1CVE List
- undiciaffected: 8.0.0 before 8.10.2CVE List
- undiciunaffected: 8.10.2CVE List
- undici, npmfrom 7.24.1, fixed in 7.29.1OSV
- undici, npmfrom 8.0.0, fixed in 8.10.2OSV
References 8
- github.com/nodejs/undici/commit/8f5868fbdbc8f1146dfc1bcd1f2d117790141390Fixvia GitHub
- github.com/nodejs/undici/commit/f690157d728508652fef14673630c71515123e96Fixvia GitHub
- github.com/nodejs/undici/releases/tag/v7.29.1Fixvia GitHub
- github.com/nodejs/undici/releases/tag/v8.10.2Fixvia GitHub
- github.com/nodejs/undici/security/advisories/GHSA-w293-vg96-wgc3Advisoryvia CVE List
- cna.openjsf.org/security-advisories.htmlAdvisoryvia CVE List
- github.com/advisories/GHSA-w293-vg96-wgc3Advisoryvia GitHub
- nvd.nist.gov/vuln/detail/CVE-2026-84961Referencevia GitHub