CVE-2026-106069
High · 7.4CVSS
7.4
EPSS
0.3%
Published
Oct 23, 2026
CISA due date
—
Cloudanix analysis
A bug in how Node.js checks website certificates can let an attacker trick the software into trusting the wrong server when unusual numeric addresses are used, potentially exposing private information.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Moderate
- Impact
- Data Exposure
- Component
- Library
- Class
- Authentication Bypass
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
tls.checkServerIdentity() normalizes non-canonical IPv4 literals with leading-zero octets using WHATWG URL octal rules while the OS resolver uses decimal interpretation, allowing a certificate for one IP to be accepted for a connection to a different IP.
Why it matters to the business
Attackers can intercept TLS connections to IP-literal hosts on affected Node.js versions and impersonate servers, risking exposure of sensitive data or unauthorized access in environments that rely on IP-based certificate validation.
How an attack unfolds
An attacker positions a malicious server at a decimal IP address that matches the octal interpretation of a leading-zero literal; when a vulnerable client connects using that literal, the mismatched normalization allows the attacker's certificate to pass identity checks.
How to fix it
Upgrade all Node.js 22.x, 24.x, and 26.x installations to the latest patched releases that correct the normalization inconsistency in tls.checkServerIdentity(). Until upgrades are complete, avoid using non-canonical IPv4 literals with leading zeros for TLS hostnames and prefer DNS names or canonical decimal literals.
How to confirm the fix worked
Review Node.js release notes and changelogs for the specific fix commit addressing IPv4 literal normalization in checkServerIdentity(); test connections using literals such as 0127.0.0.1 against both vulnerable and patched versions to confirm correct rejection of mismatched certificates.
Typical attack path
- Identify Node.js applications that connect to TLS endpoints using non-canonical IPv4 literals containing leading-zero octets.
- Register or compromise a host reachable at the decimal interpretation of the literal.
- Obtain or forge a TLS certificate valid for the octal-normalized address.
- Intercept or redirect the client connection and present the certificate during the TLS handshake.
- Bypass hostname verification and establish an authenticated TLS session to the attacker-controlled endpoint.
How to detect it
Search application and TLS library logs for outbound connections that specify IPv4 addresses containing octets with leading zeros; correlate with certificate validation events or errors around the time of the handshake.
What your security team should do
- Prioritize patching of Node.js 22.x, 24.x, and 26.x within the next 7 days given the recent publication and rising EPSS trend.
- Audit application code and configuration for any hardcoded or dynamically constructed IPv4 literals containing leading zeros.
- Implement additional TLS pinning or certificate transparency checks for high-value connections until patching is complete.
- Update dependency scanners and SBOM processes to flag vulnerable Node.js versions.
The record
A flaw in Node.js TLS hostname verification can cause a server certificate to be validated against a different IP address than the one the client connected to, when the host is a non-canonical IPv4 literal with a leading zero, such as `0127.0.0.1`. `tls.checkServerIdentity()` normalizes the host following the WHATWG URL rules, which read a leading-zero octet as octal (`0127.0.0.1` becomes `87.0.0.1`), while the connection is made through the operating system resolver, which on some platforms such as macOS reads it as decimal (`127.0.0.1`). A server at the connected address can then be authenticated with a certificate issued for another IP address. 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