CVE-2026-109829

Estado: AnalizadaCrítica (9.1)—
Gravedad9.1Crítica · CVSS 3.1
Probabilidad de explotación0.15 %mayor que el 4 % de las CVE
Explotación activaNono figura en el catálogo de CISA
Exploit públicoNo conocidosin código público localizado

undici es una biblioteca cliente HTTP para Node.js. En las versiones 7.0.0 hasta 7.30.0 y 8.0.0 hasta 8.12.1, cuando un Agent sin origen compone los interceptores de redirección y de caché en ese orden con un almacén de caché compartido, la caché construye su clave a partir de la URL original de la solicitud antes de que el manejador de redirecciones cambie el origen, de modo que una respuesta generada tras una redirección entre orígenes se almacena bajo la clave original.

Leer descripción completaMostrar menos

Un atacante que controle el destino de una redirección desde una URL de confianza puede hacer que su respuesta se almacene en caché bajo esa URL de confianza y se sirva a los usuarios posteriores, lo que permite un envenenamiento persistente de la caché; asimismo, esta confusión de claves permite que una respuesta de redirección privada, no almacenable, a un recurso específico de un usuario se almacene bajo la URL original y se sirva a un usuario posterior no autenticado, revelando datos privados. Las aplicaciones solo se ven afectadas cuando se utilizan simultáneamente un Agent sin origen, un almacén de caché compartido y la composición de redirección seguida de caché. El problema está corregido en undici 7.30.1 y 8.12.2, que verifican que el origen que produjo la respuesta sigue coincidiendo con la clave de caché y conservan la política de control de caché de cada salto de redirección antes de almacenar, por lo que los usuarios deben actualizar a una de esas versiones o posteriores. Como solución alternativa, compone el interceptor de caché antes que el interceptor de redirección, utiliza despachadores y almacenes de caché por origen, o desactiva la caché compartida en las solicitudes que puedan redirigirse.

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.15 %
Percentil entre todas las CVEs puntuadas
4
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.

Vector AV:N/PR:N/UI:N; la respuesta de un redirect cruzado queda cacheada bajo la URL original de confianza, envenenando la caché y sirviendo datos a otros usuarios.

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

Referencias

Mostrar las 2 referencias

JSON original (NVD)

Mostrar
{
  "id": "CVE-2026-109829",
  "cveTags": [],
  "metrics": {
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "id": "CVE-2026-109829",
          "role": "CISA Coordinator",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "total"
            }
          ],
          "version": "2.0.3",
          "timestamp": "2026-10-16T20:03:57.700768Z"
        }
      }
    ],
    "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": "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:21.513",
  "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-4w7w-5xrc-9h26",
      "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-346"
        },
        {
          "lang": "en",
          "value": "CWE-524"
        }
      ]
    }
  ],
  "descriptions": [
    {
      "lang": "en",
      "value": "undici is an HTTP client library for Node.js. In versions 7.0.0 through 7.30.0 and 8.0.0 through 8.12.1, when an originless Agent composes the redirect and cache interceptors in that order with a shared cache store, the cache builds its key from the original request URL before the redirect handler changes the origin, so a response produced after a cross-origin redirect is stored under the original key. An attacker who controls the target of a redirect from a trusted URL can have their response cached under that trusted URL and served to later callers, allowing persistent cache poisoning, and the same key confusion lets a private, non-stored redirect response to a user-specific resource be stored under the original URL and served to a later unauthenticated caller, disclosing private data. Applications are affected only when an originless Agent, a shared cache store, and the redirect-then-cache composition are all used. The issue is fixed in undici 7.30.1 and 8.12.2, which verify the producing origin still matches the cache key and preserve each redirect hop's cache-control policy before storing, and users should upgrade to one of those versions or later. As a workaround, compose the cache interceptor before the redirect interceptor, use per-origin dispatchers and cache stores, or disable shared caching on redirect-capable requests."
    }
  ],
  "lastModified": "2026-10-19T20:45:43.390",
  "configurations": [
    {
      "nodes": [
        {
          "negate": false,
          "cpeMatch": [
            {
              "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"
}