Cloudanix VulnDB

CVE-2026-106072

Medium · 6.7

CVSS

6.7

EPSS

0.6%

Published

Oct 23, 2026

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

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

  1. Acquire CA-issued certificate listing only a DNS SAN for the target IP
  2. Position MitM or malicious server reachable via the non-canonical IPv4 notation
  3. Trigger Node.js client connection using that notation
  4. tls.checkServerIdentity() incorrectly accepts the certificate
  5. 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