CVE-2026-106072
Medium · 6.7CVSS
6.7
EPSS
0.6%
Published
Oct 23, 2026
CISA due date
—
Cloudanix analysis
A bug in the way Node.js checks website certificates can let an attacker use a certificate meant for a web address to impersonate a server when connecting by certain unusual forms of its numeric address.
- Exploitation
- Remote Authenticated
- Attacker needs
- High Privilege
- Complexity
- Low
- Impact
- Data Exposure
- Component
- Library
- Class
- Authentication Bypass
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Node.js tls.checkServerIdentity() fails to classify non-canonical IPv4 notations (0177.0.0.1, 0x7f.0.0.1, 2130706433, 127.1) as IP addresses, instead normalizing them and matching against DNS SANs; a certificate bearing only DNS:127.0.0.1 is therefore accepted for an IP connection that should require an IP Address SAN.
Why it matters to the business
Organizations running Node.js 22.x, 24.x or 26.x face elevated risk of TLS man-in-the-middle or unauthorized endpoint impersonation on IP-based services until patches are applied; low EPSS and absence from KEV indicate limited observed exploitation but the four-day-old flaw and rising EPSS trend warrant prompt attention given Node.js prevalence.
How an attack unfolds
An attacker obtains a publicly trusted certificate containing only a DNS SAN for the target IP address, then causes a vulnerable Node.js client to connect using a non-canonical IPv4 spelling accepted by the platform resolver (e.g., glibc); the flawed check normalizes the address and matches the DNS SAN, allowing the attacker-controlled endpoint to complete the TLS handshake.
How to fix it
Upgrade Node.js 22.x, 24.x and 26.x installations to the first patched releases containing the corrected tls.checkServerIdentity() logic as soon as they become available; until then restrict outbound TLS connections to canonical IP literals or enforce certificate pinning that requires explicit IP Address SANs.
How to confirm the fix worked
After upgrade, run Node.js unit tests exercising tls.checkServerIdentity() with both canonical and non-canonical IPv4 forms against certificates containing only DNS SANs; confirm that non-canonical forms now correctly require an IP Address SAN and are rejected when absent.
Typical attack path
- Acquire CA-issued certificate listing only a DNS SAN for the target IP
- Position MitM or malicious server reachable via the non-canonical IPv4 notation
- Trigger Node.js client connection using that notation
- tls.checkServerIdentity() incorrectly accepts the certificate
- TLS session established with attacker-controlled endpoint
How to detect it
Search application and TLS library logs for outbound connections that record non-canonical IPv4 literals in the servername or host field; correlate with certificate validation events that succeed against certificates whose SANs contain only DNS names matching the normalized IP.
What your security team should do
- Inventory all Node.js 22.x/24.x/26.x deployments and prioritize patching within 30 days
- Monitor EPSS trend and any new exploit code for the next 14 days
- Add runtime checks or proxies that normalize IP addresses before TLS handshakes where feasible
- Review certificate issuance policies to require IP Address SANs for any IP endpoints
The record
A flaw in Node.js TLS hostname verification allows a certificate with only a DNS SAN to authenticate an IP endpoint when the client connects using a non-canonical IPv4 spelling, such as `0177.0.0.1`, `0x7f.0.0.1`, `2130706433` or `127.1`. `tls.checkServerIdentity()` did not classify these hosts as IP addresses, but normalized them to their canonical form and matched the result against the certificate DNS names. A certificate containing `DNS:127.0.0.1` and no `IP Address:127.0.0.1` SAN was therefore accepted, while the same certificate is correctly rejected for `127.0.0.1`. Exploitation requires a certificate with a numeric DNS SAN issued by a CA trusted by the client, and a platform resolver that accepts these spellings, such as glibc. This vulnerability affects Node.js **26.x**, **24.x**, and **22.x**.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-118697 In JetBrains Toolbox App before 3.9.1 and 3.8.2; IntelliJ IDEA before 2026.3 and… CWE-295
- CVE-2026-112816 Improper certificate validation in the HTTPS listener in Canonical LXD 4.0.14, 5.0.10… CWE-295
- CVE-2026-119559 OpenLiteSpeed through 1.9.4 contains an authentication bypass vulnerability that allows… CWE-295
- CVE-2026-92744 Under certain conditions, privilege manager agent allows a remote unauthenticated… CWE-295
- CVE-2026-119190 Forge (also called node-forge) is a native implementation of Transport Layer Security in… CWE-295
- CVE-2026-119189 Forge (also called node-forge) is a native implementation of Transport Layer Security in… CWE-295
- CVE-2026-118780 Forge (also called node-forge) is a native implementation of Transport Layer Security in… CWE-295
- CVE-2026-119118 Crawl4AI before 0.9.5 contains an improper certificate validation vulnerability that… CWE-295