CVE-2026-109383
undici es una biblioteca de cliente HTTP para Node.js. En las versiones 4.0.0 hasta 6.29.0, 7.0.0 hasta 7.30.0 y 8.0.0 hasta 8.12.1, su distribuidor Agent pasa sus opciones del constructor a través de un clon profundo basado en JSON antes de reenviarlas a cada pool por origen, y como JSON no puede representar funciones, una opción tls proporcionada por el llamador que contiene una función de retrollamada checkServerIdentity se descarta silenciosamente antes de llegar a la capa TLS.
Leer descripción completaMostrar menos
Como resultado, un par TLS cuyo certificado un checkServerIdentity personalizado estaba diseñado para rechazar, pero que supera las comprobaciones predeterminadas de nombre de host y de cadena de Node, se acepta silenciosamente. Dado que Agent es el distribuidor predeterminado de request, fetch y setGlobalDispatcher, esto afecta a la ruta que utiliza la mayoría de las aplicaciones, y EnvHttpProxyAgent también se ve afectado en sus rutas directas y sin proxy, mientras que solo las aplicaciones que pasan una opción tls con valor de función, como un checkServerIdentity personalizado para el anclaje de certificados o de clave pública, corren riesgo. El problema está corregido en undici 6.29.1, 7.30.1 y 8.12.2, que conservan la opción tls fuera del clon JSON para que las retrollamadas de verificación personalizadas se reenvíen sin cambios, y los usuarios deberían actualizar a una de esas versiones o posteriores. Como solución alternativa, pase las opciones TLS mediante connect en lugar de tls, o, para destinos con proxy, use requestTls y proxyTls.
Traducción automática del texto original de NVD (en inglés).
CVSS
- Puntuación base
- 9.1
- Versión
- 3.1
- Vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Probabilidad de explotación (EPSS)
- Probabilidad de explotación en los próximos 30 días
- 0.18 %
- Percentil entre todas las CVEs puntuadas
- 8
- Fecha de la puntuación
- 20/10/2026
EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).
Técnicas ATT&CK
Cómo se explota esta vulnerabilidad y qué consigue el atacante, en el lenguaje de MITRE ATT&CK.
- Explotación
T1190Exploit Public-Facing Applicationinitial access70 % - Impacto principal
T1557Adversary-in-the-Middlecredential access · collection80 %
Vector AV:N/PR:N/UI:N sin interacción; undici descarta checkServerIdentity y acepta certificados que debía rechazar, permitiendo suplantar al servidor TLS (MitM).
Inferido por nuestro agente de análisis a partir de la descripción oficial, el vector CVSS y la CWE, y comprobado por un supervisor. Puede contener errores.
Mitigaciones ATT&CK que cubren estas técnicas
Tecnologías afectadas (1)
CWE
- CWE-295
Referencias
JSON original (NVD)
Mostrar
{
"id": "CVE-2026-109383",
"cveTags": [],
"metrics": {
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"id": "CVE-2026-109383",
"role": "CISA Coordinator",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "total"
}
],
"version": "2.0.3",
"timestamp": "2026-10-16T20:03:13.245340Z"
}
}
],
"cvssMetricV31": [
{
"type": "Secondary",
"source": "ce714d77-add3-4f53-aff5-83d477b104bb",
"cvssData": {
"scope": "UNCHANGED",
"version": "3.1",
"baseScore": 7.4,
"attackVector": "NETWORK",
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N",
"integrityImpact": "HIGH",
"userInteraction": "NONE",
"attackComplexity": "HIGH",
"availabilityImpact": "NONE",
"privilegesRequired": "NONE",
"confidentialityImpact": "HIGH"
},
"impactScore": 5.2,
"exploitabilityScore": 2.2
},
{
"type": "Primary",
"source": "nvd@nist.gov",
"cvssData": {
"scope": "UNCHANGED",
"version": "3.1",
"baseScore": 9.1,
"attackVector": "NETWORK",
"baseSeverity": "CRITICAL",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N",
"integrityImpact": "HIGH",
"userInteraction": "NONE",
"attackComplexity": "LOW",
"availabilityImpact": "NONE",
"privilegesRequired": "NONE",
"confidentialityImpact": "HIGH"
},
"impactScore": 5.2,
"exploitabilityScore": 3.9
}
]
},
"affected": [
{
"source": "ce714d77-add3-4f53-aff5-83d477b104bb",
"affectedData": [
{
"vendor": "undici",
"product": "undici",
"versions": [
{
"status": "affected",
"version": "4.0.0",
"lessThan": "6.29.1",
"versionType": "semver"
},
{
"status": "unaffected",
"version": "6.29.1",
"versionType": "semver"
},
{
"status": "affected",
"version": "7.0.0",
"lessThan": "7.30.1",
"versionType": "semver"
},
{
"status": "unaffected",
"version": "7.30.1",
"versionType": "semver"
},
{
"status": "affected",
"version": "8.0.0",
"lessThan": "8.12.2",
"versionType": "semver"
},
{
"status": "unaffected",
"version": "8.12.2",
"versionType": "semver"
}
],
"packageURL": "pkg:npm/undici",
"defaultStatus": "unaffected"
}
]
}
],
"published": "2026-10-15T19:17:20.853",
"references": [
{
"url": "https://cna.openjsf.org/security-advisories.html",
"tags": [
"Vendor Advisory"
],
"source": "ce714d77-add3-4f53-aff5-83d477b104bb"
},
{
"url": "https://github.com/nodejs/undici/security/advisories/GHSA-2m5v-pch6-74hx",
"tags": [
"Mitigation",
"Vendor Advisory"
],
"source": "ce714d77-add3-4f53-aff5-83d477b104bb"
}
],
"vulnStatus": "Analyzed",
"weaknesses": [
{
"type": "Secondary",
"source": "ce714d77-add3-4f53-aff5-83d477b104bb",
"description": [
{
"lang": "en",
"value": "CWE-295"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "undici is an HTTP client library for Node.js. In versions 4.0.0 through 6.29.0, 7.0.0 through 7.30.0, and 8.0.0 through 8.12.1, its Agent dispatcher passes its constructor options through a JSON-based deep clone before forwarding them to each per-origin pool, and because JSON cannot represent functions, a caller-supplied tls option containing a checkServerIdentity callback is silently dropped before it reaches the TLS layer. As a result, a TLS peer whose certificate a custom checkServerIdentity was written to reject, but which passes Node's default hostname and chain checks, is silently accepted. Because Agent is the default dispatcher behind request, fetch, and setGlobalDispatcher, this affects the path most applications use, and EnvHttpProxyAgent is affected on its direct and no-proxy routes as well, while only applications that pass a function-valued tls option such as a custom checkServerIdentity for certificate or public-key pinning are at risk. The issue is fixed in undici 6.29.1, 7.30.1, and 8.12.2, which preserve the tls option outside the JSON clone so custom verification callbacks are forwarded unchanged, and users should upgrade to one of those versions or later. As a workaround, pass the TLS options through connect instead of tls, or for proxied destinations use requestTls and proxyTls."
}
],
"lastModified": "2026-10-19T20:45:52.410",
"configurations": [
{
"nodes": [
{
"negate": false,
"cpeMatch": [
{
"criteria": "cpe:2.3:a:nodejs:undici:*:*:*:*:*:node.js:*:*",
"vulnerable": true,
"matchCriteriaId": "3CA67BD1-F776-44A7-9D0B-3C52B3E06E04",
"versionEndExcluding": "6.29.1",
"versionStartIncluding": "4.0.0"
},
{
"criteria": "cpe:2.3:a:nodejs:undici:*:*:*:*:*:node.js:*:*",
"vulnerable": true,
"matchCriteriaId": "13943E9B-0B0A-4C07-86AC-5FF89B86E47C",
"versionEndExcluding": "7.30.1",
"versionStartIncluding": "7.0.0"
},
{
"criteria": "cpe:2.3:a:nodejs:undici:*:*:*:*:*:node.js:*:*",
"vulnerable": true,
"matchCriteriaId": "58E7E81B-786E-47BB-BD33-DAADED999225",
"versionEndExcluding": "8.12.2",
"versionStartIncluding": "8.0.0"
}
],
"operator": "OR"
}
]
}
],
"sourceIdentifier": "ce714d77-add3-4f53-aff5-83d477b104bb"
}