CVE-2026-21884
React Router is a router for React. In @remix-run/react version prior to 2.17.3. and react-router 7.0.0 through 7.11.0, a XSS vulnerability exists in in React Router's <ScrollRestoration> API in Framework Mode when using the getKey/storageKey props during Server-Side Rendering which could allow arbitrary JavaScript execution during SSR if untrusted content is used to generate the keys. There is no impact if server-side rendering in Framework Mode is disabled, or if Declarative Mode (<BrowserRouter>) or Data Mode (createBrowserRouter/<RouterProvider>) is being used. This issue has been patched in @remix-run/react version 2.17.3 and react-router version 7.12.0.
CVSS
- Versión: 3.1
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:N
- Puntuación base: 8.2
Probabilidad de explotación (EPSS)
- Probabilidad de explotación en los próximos 30 días: 0.53%
- Percentil entre todas las CVEs puntuadas: 43
- Fecha de la puntuación: 6/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
T1189Drive-by Compromiseinitial access95 % - Impacto principal
T1059.007JavaScriptexecution90 %
XSS en React Router durante SSR (CWE-79) permite ejecución de JavaScript arbitrario. Vector CVSS con UI:R y descripción explícita de 'arbitrary JavaScript execution' confirman T1189 como explotación y T1059.007 como impacto.
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 (2)
CWE
- CWE-79
- CWE-79
Referencias
- https://github.com/remix-run/react-router/security/advisories/GHSA-8v8x-cx79-35w7
- https://access.redhat.com/errata/RHSA-2026:19712
- https://access.redhat.com/errata/RHSA-2026:3782
- https://access.redhat.com/errata/RHSA-2026:3958
- https://access.redhat.com/errata/RHSA-2026:3960
- https://access.redhat.com/security/cve/CVE-2026-21884
- https://bugzilla.redhat.com/show_bug.cgi?id=2428421
- https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-21884.json
JSON original (NVD)
Mostrar
{
"id": "CVE-2026-21884",
"cveTags": [],
"metrics": {
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"id": "CVE-2026-21884",
"role": "CISA Coordinator",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "total"
}
],
"version": "2.0.3",
"timestamp": "2026-01-13T04:55:52.068631Z"
}
}
],
"cvssMetricV31": [
{
"type": "Secondary",
"source": "security-advisories@github.com",
"cvssData": {
"scope": "CHANGED",
"version": "3.1",
"baseScore": 8.2,
"attackVector": "NETWORK",
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:N",
"integrityImpact": "LOW",
"userInteraction": "REQUIRED",
"attackComplexity": "LOW",
"availabilityImpact": "NONE",
"privilegesRequired": "NONE",
"confidentialityImpact": "HIGH"
},
"impactScore": 4.7,
"exploitabilityScore": 2.8
},
{
"type": "Secondary",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c",
"cvssData": {
"scope": "CHANGED",
"version": "3.1",
"baseScore": 8.2,
"attackVector": "NETWORK",
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:N",
"integrityImpact": "LOW",
"userInteraction": "REQUIRED",
"attackComplexity": "LOW",
"availabilityImpact": "NONE",
"privilegesRequired": "NONE",
"confidentialityImpact": "HIGH"
},
"impactScore": 4.7,
"exploitabilityScore": 2.8
}
]
},
"affected": [
{
"source": "security-advisories@github.com",
"affectedData": [
{
"vendor": "remix-run",
"product": "react-router",
"versions": [
{
"status": "affected",
"version": "@remix-run/react < 2.17.3"
},
{
"status": "affected",
"version": "react-router >= 7.0.0, < 7.12.0"
}
]
}
]
},
{
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c",
"affectedData": [
{
"cpes": [
"cpe:/a:redhat:ansible_automation_platform:2.6::el9"
],
"vendor": "Red Hat",
"product": "Red Hat Ansible Automation Platform 2.6 for RHEL 9",
"versions": [
{
"status": "unaffected",
"version": "0:2.6.6-1.el9ap",
"lessThan": "*",
"versionType": "rpm"
}
],
"packageName": "automation-platform-ui",
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"defaultStatus": "affected"
},
{
"cpes": [
"cpe:/a:redhat:ansible_automation_platform:2.6::el9"
],
"vendor": "Red Hat",
"product": "Red Hat Ansible Automation Platform 2.6",
"versions": [
{
"status": "unaffected",
"version": "1772543959",
"lessThan": "*",
"versionType": "rpm"
}
],
"packageName": "ansible-automation-platform-26/gateway-rhel9",
"collectionURL": "https://catalog.redhat.com/software/containers/",
"defaultStatus": "affected"
},
{
"cpes": [
"cpe:/a:redhat:openshift_ai:2.25::el9"
],
"vendor": "Red Hat",
"product": "Red Hat OpenShift AI 2.25",
"versions": [
{
"status": "unaffected",
"version": "1772093424",
"lessThan": "*",
"versionType": "rpm"
}
],
"packageName": "rhoai/odh-dashboard-rhel9",
"collectionURL": "https://catalog.redhat.com/software/containers/",
"defaultStatus": "affected"
},
{
"cpes": [
"cpe:/a:redhat:openshift_ai:2.25::el9"
],
"vendor": "Red Hat",
"product": "Red Hat OpenShift AI 2.25",
"versions": [
{
"status": "unaffected",
"version": "1772093498",
"lessThan": "*",
"versionType": "rpm"
}
],
"packageName": "rhoai/odh-mod-arch-model-registry-rhel9",
"collectionURL": "https://catalog.redhat.com/software/containers/",
"defaultStatus": "affected"
},
{
"cpes": [
"cpe:/a:redhat:openshift_ai:3.3::el9"
],
"vendor": "Red Hat",
"product": "Red Hat OpenShift AI 3.3",
"versions": [
{
"status": "unaffected",
"version": "1779189627",
"lessThan": "*",
"versionType": "rpm"
}
],
"packageName": "rhoai/odh-dashboard-rhel9",
"collectionURL": "https://catalog.redhat.com/software/containers/",
"defaultStatus": "affected"
},
{
"cpes": [
"cpe:/a:redhat:openshift_ai:3.3::el9"
],
"vendor": "Red Hat",
"product": "Red Hat OpenShift AI 3.3",
"versions": [
{
"status": "unaffected",
"version": "1778473763",
"lessThan": "*",
"versionType": "rpm"
}
],
"packageName": "rhoai/odh-mod-arch-gen-ai-rhel9",
"collectionURL": "https://catalog.redhat.com/software/containers/",
"defaultStatus": "affected"
},
{
"cpes": [
"cpe:/a:redhat:openshift_ai:3.3::el9"
],
"vendor": "Red Hat",
"product": "Red Hat OpenShift AI 3.3",
"versions": [
{
"status": "unaffected",
"version": "1778666987",
"lessThan": "*",
"versionType": "rpm"
}
],
"packageName": "rhoai/odh-mod-arch-model-registry-rhel9",
"collectionURL": "https://catalog.redhat.com/software/containers/",
"defaultStatus": "affected"
},
{
"cpes": [
"cpe:/a:redhat:kueue_operator:1"
],
"vendor": "Red Hat",
"product": "Red Hat Build of Kueue",
"packageName": "kueue/kueue-must-gather-rhel9",
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"defaultStatus": "unaffected"
},
{
"cpes": [
"cpe:/a:redhat:kueue_operator:1"
],
"vendor": "Red Hat",
"product": "Red Hat Build of Kueue",
"packageName": "kueue/kueue-operator-bundle",
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"defaultStatus": "unaffected"
},
{
"cpes": [
"cpe:/a:redhat:kueue_operator:1"
],
"vendor": "Red Hat",
"product": "Red Hat Build of Kueue",
"packageName": "kueue/kueue-rhel9",
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"defaultStatus": "unaffected"
},
{
"cpes": [
"cpe:/a:redhat:kueue_operator:1"
],
"vendor": "Red Hat",
"product": "Red Hat Build of Kueue",
"packageName": "kueue/kueue-rhel9-operator",
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"defaultStatus": "unaffected"
},
{
"cpes": [
"cpe:/o:redhat:enterprise_linux:10"
],
"vendor": "Red Hat",
"product": "Red Hat Enterprise Linux 10",
"packageName": "ipa",
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"defaultStatus": "unaffected"
},
{
"cpes": [
"cpe:/o:redhat:enterprise_linux:9"
],
"vendor": "Red Hat",
"product": "Red Hat Enterprise Linux 9",
"packageName": "ipa",
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"defaultStatus": "unaffected"
}
]
}
],
"published": "2026-01-10T03:15:48.673",
"references": [
{
"url": "https://github.com/remix-run/react-router/security/advisories/GHSA-8v8x-cx79-35w7",
"tags": [
"Third Party Advisory"
],
"source": "security-advisories@github.com"
},
{
"url": "https://access.redhat.com/errata/RHSA-2026:19712",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c"
},
{
"url": "https://access.redhat.com/errata/RHSA-2026:3782",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c"
},
{
"url": "https://access.redhat.com/errata/RHSA-2026:3958",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c"
},
{
"url": "https://access.redhat.com/errata/RHSA-2026:3960",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c"
},
{
"url": "https://access.redhat.com/security/cve/CVE-2026-21884",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c"
},
{
"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2428421",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c"
},
{
"url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-21884.json",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c"
}
],
"vulnStatus": "Modified",
"weaknesses": [
{
"type": "Secondary",
"source": "security-advisories@github.com",
"description": [
{
"lang": "en",
"value": "CWE-79"
}
]
},
{
"type": "Secondary",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c",
"description": [
{
"lang": "en",
"value": "CWE-79"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "React Router is a router for React. In @remix-run/react version prior to 2.17.3. and react-router 7.0.0 through 7.11.0, a XSS vulnerability exists in in React Router's <ScrollRestoration> API in Framework Mode when using the getKey/storageKey props during Server-Side Rendering which could allow arbitrary JavaScript execution during SSR if untrusted content is used to generate the keys. There is no impact if server-side rendering in Framework Mode is disabled, or if Declarative Mode (<BrowserRouter>) or Data Mode (createBrowserRouter/<RouterProvider>) is being used. This issue has been patched in @remix-run/react version 2.17.3 and react-router version 7.12.0."
},
{
"lang": "es",
"value": "React Router es un router para React. En la versión de @remix-run/react anterior a la 2.17.3 y react-router de la 7.0.0 a la 7.11.0, existe una vulnerabilidad de XSS en la API de React Router en Modo Framework al usar las props getKey/storageKey durante la Renderización del Lado del Servidor, lo que podría permitir la ejecución arbitraria de JavaScript durante SSR si se utiliza contenido no confiable para generar las claves. No hay impacto si la renderización del lado del servidor en Modo Framework está deshabilitada, o si se está utilizando el Modo Declarativo () o el Modo de Datos (createBrowserRouter/). Este problema ha sido parcheado en la versión 2.17.3 de @remix-run/react y la versión 7.12.0 de react-router."
}
],
"lastModified": "2026-07-15T02:18:31.757",
"configurations": [
{
"nodes": [
{
"negate": false,
"cpeMatch": [
{
"criteria": "cpe:2.3:a:shopify:react-router:*:*:*:*:*:node.js:*:*",
"vulnerable": true,
"matchCriteriaId": "6928DE33-6137-4682-8610-1A6646F1B2A5",
"versionEndIncluding": "7.11.0",
"versionStartIncluding": "7.0.0"
},
{
"criteria": "cpe:2.3:a:shopify:remix-run\\/react:*:*:*:*:*:node.js:*:*",
"vulnerable": true,
"matchCriteriaId": "CD7006C4-2033-446C-A472-DAD51EB06396",
"versionEndExcluding": "2.17.3"
}
],
"operator": "OR"
}
]
}
],
"sourceIdentifier": "security-advisories@github.com"
}