CVE-2026-106072 Evasión de verificación de hostname TLS en Node.js con IPv4 no canónica
tls.checkServerIdentity() no clasificaba como direcciones IP hosts como 0177.0.0.1, 0x7f.0.0.1, 2130706433 o 127.1, sino que los normalizaba y los comparaba contra los nombres DNS del certificado. Un certificado con DNS:127.0.0.1 y sin SAN de IP era aceptado para esos endpoints. Requiere un certificado con SAN DNS numérico emitido por una CA confiable y un resolver que acepte esas formas, como glibc. Afecta a Node.js 26.x, 24.x y 22.x.
CVSS 3.0
- Probabilidad de explotación0,3 %
- Explotada activamenteNo confirmada
- Exploit públicoNo conocido
Afectados
nodejs node
desde 22.23.3 hasta 22.23.3desde 24.22.0 hasta 24.22.0desde 26.12.0 hasta 26.12.0
Qué hacer
- Verificá si usás node y en qué versión.
- Actualizá a la versión corregida que indique el fabricante en su aviso o aplicá su mitigación.
- Revisá registros y accesos de los sistemas expuestos para descartar un uso previo.
Calculadora CVSS
CVSS 3.0 · 6.7 MEDIA
CVSS:3.0/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:L
- Vector de ataqueRed
- Complejidad del ataqueBaja
- Privilegios requeridosAltos
- Interacción del usuarioNinguna
- AlcanceSin cambio
- ConfidencialidadAlta
- IntegridadAlta
- DisponibilidadBaja
Descripción original
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**.
Referencias (1)
Resumen traducido automáticamente de la descripción original. Fuente: Nureq Monitor. Cómo funciona.