{"schema_version":"1.9.0","id":"GHSA-8v8x-cx79-35w7","published":"2026-01-08T20:50:05Z","modified":"2026-09-08T16:45:04.190133160Z","aliases":["CVE-2026-21884"],"summary":"React Router SSR XSS in ScrollRestoration","details":"A XSS vulnerability exists in in React Router's `<ScrollRestoration>` API in [Framework Mode](https://reactrouter.com/start/modes#framework) 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.\n\n> [!NOTE]\n> This does not impact applications if developers have [disabled server-side rendering](https://reactrouter.com/how-to/spa) in Framework Mode, or if they are using [Declarative Mode](https://reactrouter.com/start/modes#declarative) (`<BrowserRouter>`) or [Data Mode](https://reactrouter.com/start/modes#data) (`createBrowserRouter`/`<RouterProvider>`).","affected":[{"package":{"name":"react-router","ecosystem":"npm","purl":"pkg:npm/react-router"},"ranges":[{"type":"SEMVER","events":[{"introduced":"7.0.0"},{"fixed":"7.12.0"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/01/GHSA-8v8x-cx79-35w7/GHSA-8v8x-cx79-35w7.json"}},{"package":{"name":"@remix-run/react","ecosystem":"npm","purl":"pkg:npm/%40remix-run/react"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"2.17.3"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/01/GHSA-8v8x-cx79-35w7/GHSA-8v8x-cx79-35w7.json"}}],"references":[{"type":"WEB","url":"https://github.com/remix-run/react-router/security/advisories/GHSA-8v8x-cx79-35w7"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-21884"},{"type":"WEB","url":"https://github.com/remix-run/react-router/pull/14705"},{"type":"WEB","url":"https://github.com/remix-run/react-router/commit/c89c32c562a7723c45ee71dab1c892acaf7a608d"},{"type":"WEB","url":"https://access.redhat.com/errata/RHSA-2026:19712"},{"type":"WEB","url":"https://access.redhat.com/errata/RHSA-2026:3782"},{"type":"WEB","url":"https://access.redhat.com/errata/RHSA-2026:3958"},{"type":"WEB","url":"https://access.redhat.com/errata/RHSA-2026:3960"},{"type":"WEB","url":"https://access.redhat.com/security/cve/CVE-2026-21884"},{"type":"WEB","url":"https://bugzilla.redhat.com/show_bug.cgi?id=2428421"},{"type":"PACKAGE","url":"https://github.com/remix-run/react-router"},{"type":"WEB","url":"https://github.com/remix-run/react-router/blob/react-router%407.12.0/CHANGELOG.md#v7120"},{"type":"WEB","url":"https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-21884.json"}],"database_specific":{"cwe_ids":["CWE-79"],"github_reviewed":true,"github_reviewed_at":"2026-01-08T20:50:05Z","nvd_published_at":"2026-01-10T03:15:48Z","severity":"HIGH"},"severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:N"}]}