« Volver al listado

CVE-2026-107353

Estado: Pendiente de análisisMedia (6.9)—

Las versiones de traverse (npm) desde la 0.3.6 hasta la 0.3.9, desde la 0.4.0 hasta la 0.4.6, desde la 0.5.0 hasta la 0.5.2 y desde la 0.6.0 hasta la 0.6.11 permiten la contaminación de prototipos (prototype pollution) a través de set(). Cuando la ruta pasada a set() atraviesa un valor primitivo, el siguiente segmento de la ruta se resuelve en el prototipo integrado de ese primitivo, por lo que una aplicación que pasa una ruta no confiable a set() permite a un atacante añadir o sobrescribir propiedades de String.prototype, Number.prototype o Boolean.prototype usando datos JSON simples, por ejemplo traverse({ name: 'bob' }).set(['name', '__proto__', 'polluted'], 'yes'). Object.prototype solo era alcanzable con un segmento de ruta que no fuera de datos, como un objeto cuyo toString devuelve un valor diferente en cada llamada, o a través de un Proxy que acepta una asignación sin almacenarla. Esto está corregido en 0.3.10, 0.4.7, 0.5.3 y 0.6.12.

Traducción automática del texto original de NVD (en inglés).

CVSS

Probabilidad de explotación (EPSS)

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.

Librería npm expuesta públicamente vulnerable a prototype pollution (CWE-1321) vía parámetro untrusted path en set(), permitiendo manipulación de propiedades de prototipos integrados (String, Number, Boolean) y potencial ejecución de código malicioso.

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)

⚠ Inferidas por IA a partir de la descripción — NVD aún no ha analizado esta CVE; no son CPE verificados.

CWE

Referencias

JSON original (NVD)

Mostrar
{
  "id": "CVE-2026-107353",
  "cveTags": [],
  "metrics": {
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "id": "CVE-2026-107353",
          "role": "CISA Coordinator",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "yes"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "version": "2.0.3",
          "timestamp": "2026-10-07T20:36:56.178663Z"
        }
      }
    ],
    "cvssMetricV31": [
      {
        "type": "Secondary",
        "source": "7ffcee3d-2c14-4c3e-b844-86c6a321a158",
        "cvssData": {
          "scope": "UNCHANGED",
          "version": "3.1",
          "baseScore": 6.5,
          "attackVector": "NETWORK",
          "baseSeverity": "MEDIUM",
          "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:L",
          "integrityImpact": "LOW",
          "userInteraction": "NONE",
          "attackComplexity": "LOW",
          "availabilityImpact": "LOW",
          "privilegesRequired": "NONE",
          "confidentialityImpact": "NONE"
        },
        "impactScore": 2.5,
        "exploitabilityScore": 3.9
      }
    ],
    "cvssMetricV40": [
      {
        "type": "Secondary",
        "source": "7ffcee3d-2c14-4c3e-b844-86c6a321a158",
        "cvssData": {
          "Safety": "NOT_DEFINED",
          "version": "4.0",
          "Recovery": "NOT_DEFINED",
          "baseScore": 6.9,
          "Automatable": "NOT_DEFINED",
          "attackVector": "NETWORK",
          "baseSeverity": "MEDIUM",
          "valueDensity": "NOT_DEFINED",
          "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
          "exploitMaturity": "NOT_DEFINED",
          "providerUrgency": "NOT_DEFINED",
          "userInteraction": "NONE",
          "attackComplexity": "LOW",
          "attackRequirements": "NONE",
          "privilegesRequired": "NONE",
          "subIntegrityImpact": "NONE",
          "vulnIntegrityImpact": "LOW",
          "integrityRequirement": "NOT_DEFINED",
          "modifiedAttackVector": "NOT_DEFINED",
          "subAvailabilityImpact": "NONE",
          "vulnAvailabilityImpact": "LOW",
          "availabilityRequirement": "NOT_DEFINED",
          "modifiedUserInteraction": "NOT_DEFINED",
          "modifiedAttackComplexity": "NOT_DEFINED",
          "subConfidentialityImpact": "NONE",
          "vulnConfidentialityImpact": "NONE",
          "confidentialityRequirement": "NOT_DEFINED",
          "modifiedAttackRequirements": "NOT_DEFINED",
          "modifiedPrivilegesRequired": "NOT_DEFINED",
          "modifiedSubIntegrityImpact": "NOT_DEFINED",
          "modifiedVulnIntegrityImpact": "NOT_DEFINED",
          "vulnerabilityResponseEffort": "NOT_DEFINED",
          "modifiedSubAvailabilityImpact": "NOT_DEFINED",
          "modifiedVulnAvailabilityImpact": "NOT_DEFINED",
          "modifiedSubConfidentialityImpact": "NOT_DEFINED",
          "modifiedVulnConfidentialityImpact": "NOT_DEFINED"
        }
      }
    ]
  },
  "affected": [
    {
      "source": "7ffcee3d-2c14-4c3e-b844-86c6a321a158",
      "affectedData": [
        {
          "repo": "https://github.com/ljharb/js-traverse",
          "vendor": "ljharb",
          "product": "traverse",
          "versions": [
            {
              "status": "affected",
              "version": "0.3.6",
              "lessThan": "0.3.10",
              "versionType": "semver"
            },
            {
              "status": "affected",
              "version": "0.4.0",
              "lessThan": "0.4.7",
              "versionType": "semver"
            },
            {
              "status": "affected",
              "version": "0.5.0",
              "lessThan": "0.5.3",
              "versionType": "semver"
            },
            {
              "status": "affected",
              "version": "0.6.0",
              "lessThan": "0.6.12",
              "versionType": "semver"
            }
          ],
          "packageName": "traverse",
          "collectionURL": "https://www.npmjs.com",
          "defaultStatus": "unaffected",
          "programRoutines": [
            {
              "name": "set"
            }
          ]
        }
      ]
    }
  ],
  "published": "2026-10-07T20:17:11.860",
  "references": [
    {
      "url": "https://github.com/ljharb/js-traverse/commit/37a9ebd103d2a259c824c29cdcc3f0dfe1acffce",
      "source": "7ffcee3d-2c14-4c3e-b844-86c6a321a158"
    },
    {
      "url": "https://github.com/ljharb/js-traverse/commit/81ccab43e379cf42eb2a5f689630f7f79b3d71b8",
      "source": "7ffcee3d-2c14-4c3e-b844-86c6a321a158"
    },
    {
      "url": "https://github.com/ljharb/js-traverse/security/advisories/GHSA-rj28-8w7x-jmqc",
      "source": "7ffcee3d-2c14-4c3e-b844-86c6a321a158"
    }
  ],
  "vulnStatus": "Awaiting Analysis",
  "weaknesses": [
    {
      "type": "Secondary",
      "source": "7ffcee3d-2c14-4c3e-b844-86c6a321a158",
      "description": [
        {
          "lang": "en",
          "value": "CWE-1321"
        }
      ]
    }
  ],
  "descriptions": [
    {
      "lang": "en",
      "value": "traverse (npm) versions 0.3.6 through 0.3.9, 0.4.0 through 0.4.6, 0.5.0 through 0.5.2, and 0.6.0 through 0.6.11 allow prototype pollution through set(). When the path passed to set() crosses a primitive value, the next path segment is resolved on that primitive's built-in prototype, so an application that passes an untrusted path to set() lets an attacker add or overwrite properties of String.prototype, Number.prototype, or Boolean.prototype using plain JSON data, for example traverse({ name: 'bob' }).set(['name', '__proto__', 'polluted'], 'yes'). Object.prototype was reachable only with a non-data path segment, such as an object whose toString returns a different value on each call, or through a Proxy that accepts an assignment without storing it. This is fixed in 0.3.10, 0.4.7, 0.5.3, and 0.6.12."
    }
  ],
  "lastModified": "2026-10-08T21:34:48.800",
  "sourceIdentifier": "7ffcee3d-2c14-4c3e-b844-86c6a321a158"
}