CVE-2026-84961: undici vulnerable to TLS certificate validation bypass via dropped connect options in BalancedPool
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.
References
- cna.openjsf.org/security-advisories.html
- github.com/advisories/GHSA-w293-vg96-wgc3
- github.com/nodejs/undici/commit/8f5868fbdbc8f1146dfc1bcd1f2d117790141390
- github.com/nodejs/undici/commit/f690157d728508652fef14673630c71515123e96
- github.com/nodejs/undici/releases/tag/v7.29.1
- github.com/nodejs/undici/releases/tag/v8.10.2
- github.com/nodejs/undici/security/advisories/GHSA-w293-vg96-wgc3
- nvd.nist.gov/vuln/detail/CVE-2026-84961
Code Behaviors & Features
Detect and mitigate CVE-2026-84961 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →