Node.js certificate check can accept a server for the wrong IP address
A Node.js program connecting to a server by a specially written IP address (with a leading zero) may trust a certificate meant for a different address. An attacker in the network path could then impersonate the server.
| Severity | HighCVSS 7.4 of 10 |
|---|---|
| Being exploited? | UnclearNo reports either way yet |
| Fix available? | YesFixes announced by Node.js on October 21, 2026 for the 22.x, 24.x, and 26.x release lines (exact fixed version numbers not stated in the material) · since 28 Oct 2026 |
| How sure is this? | Official, 4 sourcesBacked by an official source |
How the attack works simplified
- 1Attacker on network pathPositions itself between client and server
- 2Client connects by IPAddress written with a leading zero
- 3Certificate checked wronglyNormalized IP differs from connected IP
- 4Impostor acceptedCertificate for another IP is trusted
- ResultClient trusts an impostor server
What happened
Node.js tls.checkServerIdentity() normalizes non-canonical IPv4 literals with leading zeros (e.g. 0127.0.0.1) as octal per WHATWG URL rules, while the OS resolver may read them as decimal on some platforms such as macOS, so the certificate is checked against a different IP than the one connected to.
Are you affected?
You are affected if you run Node.js 22.x, 24.x, or 26.x (prior to the fixed releases) and your code makes TLS connections to IPv4 addresses written with leading zeros, especially on platforms where the OS resolver reads them as decimal.
Node.js 22.x, 24.x, 26.x (Cisco products listed as affected in its October 2026 advisory; specific product list not stated in the material)
What to do
- Update Node.js to the patched 22.x, 24.x, or 26.x release published on or after October 21, 2026
- Review code that connects to IP addresses written with leading zeros and use canonical dotted-decimal addresses instead
- Check Cisco or Fortinet product advisories if you use affected vendor software bundling Node.js
Timeline
- 23 Oct 2026, 17:17 UTCPublicly disclosed
- 23 Oct 2026, 17:17 UTCReported by NVD · NVD
- 26 Oct 2026, 17:01 UTCFortinet PSIRT reported on it · Fortinet PSIRT
- 26 Oct 2026, 17:12 UTCGitHub Advisory reported on it · GitHub Advisory
- 27 Oct 2026, 21:32 UTCCisco PSIRT reported on it · Cisco PSIRT
- 28 Oct 2026, 20:36 UTCReported by Cisco PSIRT · Cisco PSIRT
- 28 Oct 2026, 20:43 UTCFix: Fixes announced by Node.js on October 21, 2026 for the 22.x, 24.x, and 26.x release lines (exact fixed version numbers not stated in the material)
Sources 5 reports, oldest first
Official vendor, government CERT or advisory database
- NVD23 Oct 2026, 17:17 UTC
- A flaw in Node.js TLS hostname verification can cause a server certificate to be validated...GitHub Advisory · 23 Oct 2026, 18:31 UTC
- Multiple Node.js CVEsFortinet PSIRT · 26 Oct 2026, 07:00 UTC
- Vulnerabilities in node.js Affecting Cisco Products: October 2026Cisco PSIRT · 27 Oct 2026, 21:30 UTC
- Vulnerabilities in Node.js Affecting Cisco Products: October 2026Cisco PSIRT · 28 Oct 2026, 20:36 UTC
Technical details
- ID
- CVE-2026-106069 · GHSA-jj44-m59q-wmrj
- CVSS
- 7.4 / 10
- EPSS
- 0.3% chance of exploitation within 30 days
- Disclosed
- 23 Oct 2026, 17:17 UTC
- On Zero Radar
- before the radar started
- Last change
- 28 Oct 2026, 20:43 UTC
The plain-language parts and the attack diagram were written by an AI model (anthropic/claude-haiku-5.5) from the sources above. Facts like versions, exploitation and dates come from the sources themselves. How Zero Radar works