---
id: "CVE-2026-106069"
kind: "vulnerability"
aliases: ["CVE-2026-106069"]
title: "Node.js: TLS check accepts wrong IP certificate for leading-zero addresses"
severity: "high"
cvss: 7.4
epss: 0.00238
exploited: false
status: "open"
category: "runtime"
products: []
ecosystems: []
tags: ["backend", "macos", "node.js", "poc-public", "runtime", "tls-clients"]
not_affected_if: ["canonical-ip-literals", "hostnames-only", "node-18-or-older"]
published_at: "2026-10-23T17:17:19+00:00"
first_seen_at: "2026-10-23T21:57:34+00:00"
updated_at: "2026-10-25T12:38:50+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-106069", "first_seen_at": "2026-10-23T21:57:34+00:00"}, {"source": "github-poc", "url": "https://github.com/CompleteTech-LLC/node-cve-2026-106069-check", "first_seen_at": "2026-10-23T23:55:02+00:00"}, {"source": "epss", "url": "https://api.first.org/data/v1/epss?cve=CVE-2026-106069", "first_seen_at": "2026-10-25T12:38:50+00:00"}]
---

# Node.js: TLS check accepts wrong IP certificate for leading-zero addresses

Node.js normalizes a non-canonical IPv4 literal with a leading zero (such as 0127.0.0.1) differently in its certificate hostname check than the OS resolver does when connecting. A man-in-the-middle at the connected address can present a certificate issued for a different IP and be accepted as authentic.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Run `node --version` and compare against the affected lines 22.x, 24.x and 26.x
- Check whether the application makes TLS connections to host literals written with leading zeros, which is unknown from the sources
- Check whether the team runs Node.js on macOS, where the sources say the OS resolver reads the octet as decimal

## Fix

- Upgrade Node.js to a patched release on your line; the exact fixed versions are unknown from the sources
- Avoid passing IPv4 literals with leading zeros to TLS clients until patched

## Timeline

- 2026-10-23T21:57:34+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-106069
- 2026-10-23T23:55:02+00:00 github-poc https://github.com/CompleteTech-LLC/node-cve-2026-106069-check
- 2026-10-25T12:38:50+00:00 epss https://api.first.org/data/v1/epss?cve=CVE-2026-106069

## Documents

- [poc] CompleteTech-LLC/node-cve-2026-106069-check https://github.com/CompleteTech-LLC/node-cve-2026-106069-check

## From the sources

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**.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
