CVE-2026-21884

Source
https://cve.org/CVERecord?id=CVE-2026-21884
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-21884.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-21884
Aliases
Published
2026-01-10T02:41:44.944Z
Modified
2026-01-15T05:48:26.563597Z
Severity
  • 8.2 (High) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:N CVSS Calculator
Summary
React Router SSR XSS in ScrollRestoration
Details

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.

Database specific
{
    "cna_assigner": "GitHub_M",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/21xxx/CVE-2026-21884.json",
    "cwe_ids": [
        "CWE-79"
    ]
}
References

Affected packages

Git / github.com/remix-run/react-router

Affected ranges

Type
GIT
Repo
https://github.com/remix-run/react-router
Events

Affected versions

7.*
7.6.2
@react-router/architect@7.*
@react-router/architect@7.0.0
@react-router/architect@7.0.1
@react-router/architect@7.0.2
@react-router/architect@7.1.0
@react-router/architect@7.1.1
@react-router/architect@7.1.2
@react-router/architect@7.1.3
@react-router/architect@7.1.4
@react-router/architect@7.1.5
@react-router/architect@7.10.0
@react-router/architect@7.10.1
@react-router/architect@7.11.0
@react-router/architect@7.2.0
@react-router/architect@7.3.0
@react-router/architect@7.4.0
@react-router/architect@7.4.1
@react-router/architect@7.5.0
@react-router/architect@7.5.1
@react-router/architect@7.5.2
@react-router/architect@7.5.3
@react-router/architect@7.6.0
@react-router/architect@7.6.1
@react-router/architect@7.6.3
@react-router/architect@7.7.0
@react-router/architect@7.7.1
@react-router/architect@7.8.0
@react-router/architect@7.8.1
@react-router/architect@7.8.2
@react-router/architect@7.9.0
@react-router/architect@7.9.1
@react-router/architect@7.9.2
@react-router/architect@7.9.3
@react-router/architect@7.9.4
@react-router/architect@7.9.5
@react-router/architect@7.9.6
@react-router/cloudflare@7.*
@react-router/cloudflare@7.0.0
@react-router/cloudflare@7.0.1
@react-router/cloudflare@7.0.2
@react-router/cloudflare@7.1.0
@react-router/cloudflare@7.1.1
@react-router/cloudflare@7.1.2
@react-router/cloudflare@7.1.3
@react-router/cloudflare@7.1.4
@react-router/cloudflare@7.1.5
@react-router/cloudflare@7.10.0
@react-router/cloudflare@7.10.1
@react-router/cloudflare@7.11.0
@react-router/cloudflare@7.2.0
@react-router/cloudflare@7.3.0
@react-router/cloudflare@7.4.0
@react-router/cloudflare@7.4.1
@react-router/cloudflare@7.5.0
@react-router/cloudflare@7.5.1
@react-router/cloudflare@7.5.2
@react-router/cloudflare@7.5.3
@react-router/cloudflare@7.6.0
@react-router/cloudflare@7.6.1
@react-router/cloudflare@7.6.3
@react-router/cloudflare@7.7.0
@react-router/cloudflare@7.7.1
@react-router/cloudflare@7.8.0
@react-router/cloudflare@7.8.1
@react-router/cloudflare@7.8.2
@react-router/cloudflare@7.9.0
@react-router/cloudflare@7.9.1
@react-router/cloudflare@7.9.2
@react-router/cloudflare@7.9.3
@react-router/cloudflare@7.9.4
@react-router/cloudflare@7.9.5
@react-router/cloudflare@7.9.6
@react-router/dev@7.*
@react-router/dev@7.0.0
@react-router/dev@7.0.1
@react-router/dev@7.0.2
@react-router/dev@7.1.0
@react-router/dev@7.1.1
@react-router/dev@7.1.2
@react-router/dev@7.1.3
@react-router/dev@7.1.4
@react-router/dev@7.1.5
@react-router/dev@7.10.0
@react-router/dev@7.10.1
@react-router/dev@7.11.0
@react-router/dev@7.2.0
@react-router/dev@7.3.0
@react-router/dev@7.4.0
@react-router/dev@7.4.1
@react-router/dev@7.5.0
@react-router/dev@7.5.1
@react-router/dev@7.5.2
@react-router/dev@7.5.3
@react-router/dev@7.6.0
@react-router/dev@7.6.1
@react-router/dev@7.6.3
@react-router/dev@7.7.0
@react-router/dev@7.7.1
@react-router/dev@7.8.0
@react-router/dev@7.8.1
@react-router/dev@7.8.2
@react-router/dev@7.9.0
@react-router/dev@7.9.1
@react-router/dev@7.9.2
@react-router/dev@7.9.3
@react-router/dev@7.9.4
@react-router/dev@7.9.5
@react-router/dev@7.9.6
@react-router/express@7.*
@react-router/express@7.0.0
@react-router/express@7.0.1
@react-router/express@7.0.2
@react-router/express@7.1.0
@react-router/express@7.1.1
@react-router/express@7.1.2
@react-router/express@7.1.3
@react-router/express@7.1.4
@react-router/express@7.1.5
@react-router/express@7.10.0
@react-router/express@7.10.1
@react-router/express@7.11.0
@react-router/express@7.2.0
@react-router/express@7.3.0
@react-router/express@7.4.0
@react-router/express@7.4.1
@react-router/express@7.5.0
@react-router/express@7.5.1
@react-router/express@7.5.2
@react-router/express@7.5.3
@react-router/express@7.6.0
@react-router/express@7.6.1
@react-router/express@7.6.3
@react-router/express@7.7.0
@react-router/express@7.7.1
@react-router/express@7.8.0
@react-router/express@7.8.1
@react-router/express@7.8.2
@react-router/express@7.9.0
@react-router/express@7.9.1
@react-router/express@7.9.2
@react-router/express@7.9.3
@react-router/express@7.9.4
@react-router/express@7.9.5
@react-router/express@7.9.6
@react-router/fs-routes@7.*
@react-router/fs-routes@7.0.0
@react-router/fs-routes@7.0.1
@react-router/fs-routes@7.0.2
@react-router/fs-routes@7.1.0
@react-router/fs-routes@7.1.1
@react-router/fs-routes@7.1.2
@react-router/fs-routes@7.1.3
@react-router/fs-routes@7.1.4
@react-router/fs-routes@7.1.5
@react-router/fs-routes@7.10.0
@react-router/fs-routes@7.10.1
@react-router/fs-routes@7.11.0
@react-router/fs-routes@7.2.0
@react-router/fs-routes@7.3.0
@react-router/fs-routes@7.4.0
@react-router/fs-routes@7.4.1
@react-router/fs-routes@7.5.0
@react-router/fs-routes@7.5.1
@react-router/fs-routes@7.5.2
@react-router/fs-routes@7.5.3
@react-router/fs-routes@7.6.0
@react-router/fs-routes@7.6.1
@react-router/fs-routes@7.6.3
@react-router/fs-routes@7.7.0
@react-router/fs-routes@7.7.1
@react-router/fs-routes@7.8.0
@react-router/fs-routes@7.8.1
@react-router/fs-routes@7.8.2
@react-router/fs-routes@7.9.0
@react-router/fs-routes@7.9.1
@react-router/fs-routes@7.9.2
@react-router/fs-routes@7.9.3
@react-router/fs-routes@7.9.4
@react-router/fs-routes@7.9.5
@react-router/fs-routes@7.9.6
@react-router/node@7.*
@react-router/node@7.0.0
@react-router/node@7.0.1
@react-router/node@7.0.2
@react-router/node@7.1.0
@react-router/node@7.1.1
@react-router/node@7.1.2
@react-router/node@7.1.3
@react-router/node@7.1.4
@react-router/node@7.1.5
@react-router/node@7.10.0
@react-router/node@7.10.1
@react-router/node@7.11.0
@react-router/node@7.2.0
@react-router/node@7.3.0
@react-router/node@7.4.0
@react-router/node@7.4.1
@react-router/node@7.5.0
@react-router/node@7.5.1
@react-router/node@7.5.2
@react-router/node@7.5.3
@react-router/node@7.6.0
@react-router/node@7.6.1
@react-router/node@7.6.3
@react-router/node@7.7.0
@react-router/node@7.7.1
@react-router/node@7.8.0
@react-router/node@7.8.1
@react-router/node@7.8.2
@react-router/node@7.9.0
@react-router/node@7.9.1
@react-router/node@7.9.2
@react-router/node@7.9.3
@react-router/node@7.9.4
@react-router/node@7.9.5
@react-router/node@7.9.6
@react-router/remix-routes-option-adapter@7.*
@react-router/remix-routes-option-adapter@7.0.0
@react-router/remix-routes-option-adapter@7.0.1
@react-router/remix-routes-option-adapter@7.0.2
@react-router/remix-routes-option-adapter@7.1.0
@react-router/remix-routes-option-adapter@7.1.1
@react-router/remix-routes-option-adapter@7.1.2
@react-router/remix-routes-option-adapter@7.1.3
@react-router/remix-routes-option-adapter@7.1.4
@react-router/remix-routes-option-adapter@7.1.5
@react-router/remix-routes-option-adapter@7.10.0
@react-router/remix-routes-option-adapter@7.10.1
@react-router/remix-routes-option-adapter@7.11.0
@react-router/remix-routes-option-adapter@7.2.0
@react-router/remix-routes-option-adapter@7.3.0
@react-router/remix-routes-option-adapter@7.4.0
@react-router/remix-routes-option-adapter@7.4.1
@react-router/remix-routes-option-adapter@7.5.0
@react-router/remix-routes-option-adapter@7.5.1
@react-router/remix-routes-option-adapter@7.5.2
@react-router/remix-routes-option-adapter@7.5.3
@react-router/remix-routes-option-adapter@7.6.0
@react-router/remix-routes-option-adapter@7.6.1
@react-router/remix-routes-option-adapter@7.6.3
@react-router/remix-routes-option-adapter@7.7.0
@react-router/remix-routes-option-adapter@7.7.1
@react-router/remix-routes-option-adapter@7.8.0
@react-router/remix-routes-option-adapter@7.8.1
@react-router/remix-routes-option-adapter@7.8.2
@react-router/remix-routes-option-adapter@7.9.0
@react-router/remix-routes-option-adapter@7.9.1
@react-router/remix-routes-option-adapter@7.9.2
@react-router/remix-routes-option-adapter@7.9.3
@react-router/remix-routes-option-adapter@7.9.4
@react-router/remix-routes-option-adapter@7.9.5
@react-router/remix-routes-option-adapter@7.9.6
@react-router/serve@7.*
@react-router/serve@7.0.0
@react-router/serve@7.0.1
@react-router/serve@7.0.2
@react-router/serve@7.1.0
@react-router/serve@7.1.1
@react-router/serve@7.1.2
@react-router/serve@7.1.3
@react-router/serve@7.1.4
@react-router/serve@7.1.5
@react-router/serve@7.10.0
@react-router/serve@7.10.1
@react-router/serve@7.11.0
@react-router/serve@7.2.0
@react-router/serve@7.3.0
@react-router/serve@7.4.0
@react-router/serve@7.4.1
@react-router/serve@7.5.0
@react-router/serve@7.5.1
@react-router/serve@7.5.2
@react-router/serve@7.5.3
@react-router/serve@7.6.0
@react-router/serve@7.6.1
@react-router/serve@7.6.3
@react-router/serve@7.7.0
@react-router/serve@7.7.1
@react-router/serve@7.8.0
@react-router/serve@7.8.1
@react-router/serve@7.8.2
@react-router/serve@7.9.0
@react-router/serve@7.9.1
@react-router/serve@7.9.2
@react-router/serve@7.9.3
@react-router/serve@7.9.4
@react-router/serve@7.9.5
@react-router/serve@7.9.6
create-react-router@7.*
create-react-router@7.0.0
create-react-router@7.0.1
create-react-router@7.0.2
create-react-router@7.1.0
create-react-router@7.1.1
create-react-router@7.1.2
create-react-router@7.1.3
create-react-router@7.1.4
create-react-router@7.1.5
create-react-router@7.10.0
create-react-router@7.10.1
create-react-router@7.11.0
create-react-router@7.2.0
create-react-router@7.3.0
create-react-router@7.4.0
create-react-router@7.4.1
create-react-router@7.5.0
create-react-router@7.5.1
create-react-router@7.5.2
create-react-router@7.5.3
create-react-router@7.6.0
create-react-router@7.6.1
create-react-router@7.6.3
create-react-router@7.7.0
create-react-router@7.7.1
create-react-router@7.8.0
create-react-router@7.8.1
create-react-router@7.8.2
create-react-router@7.9.0
create-react-router@7.9.1
create-react-router@7.9.2
create-react-router@7.9.3
create-react-router@7.9.4
create-react-router@7.9.5
create-react-router@7.9.6
react-router-dom@7.*
react-router-dom@7.0.0
react-router-dom@7.0.1
react-router-dom@7.0.2
react-router-dom@7.1.0
react-router-dom@7.1.1
react-router-dom@7.1.2
react-router-dom@7.1.3
react-router-dom@7.1.4
react-router-dom@7.1.5
react-router-dom@7.10.0
react-router-dom@7.10.1
react-router-dom@7.11.0
react-router-dom@7.2.0
react-router-dom@7.3.0
react-router-dom@7.4.0
react-router-dom@7.4.1
react-router-dom@7.5.0
react-router-dom@7.5.1
react-router-dom@7.5.2
react-router-dom@7.5.3
react-router-dom@7.6.0
react-router-dom@7.6.1
react-router-dom@7.6.3
react-router-dom@7.7.0
react-router-dom@7.7.1
react-router-dom@7.8.0
react-router-dom@7.8.1
react-router-dom@7.8.2
react-router-dom@7.9.0
react-router-dom@7.9.1
react-router-dom@7.9.2
react-router-dom@7.9.3
react-router-dom@7.9.4
react-router-dom@7.9.5
react-router-dom@7.9.6
react-router@7.*
react-router@7.0.0
react-router@7.0.1
react-router@7.0.2
react-router@7.1.0
react-router@7.1.1
react-router@7.1.2
react-router@7.1.3
react-router@7.1.4
react-router@7.1.5
react-router@7.10.0
react-router@7.10.1
react-router@7.11.0
react-router@7.2.0
react-router@7.3.0
react-router@7.4.0
react-router@7.4.1
react-router@7.5.0
react-router@7.5.1
react-router@7.5.2
react-router@7.5.3
react-router@7.6.0
react-router@7.6.1
react-router@7.6.2
react-router@7.6.3
react-router@7.7.0
react-router@7.7.1
react-router@7.8.0
react-router@7.8.1
react-router@7.8.2
react-router@7.9.0
react-router@7.9.1
react-router@7.9.2
react-router@7.9.3
react-router@7.9.4
react-router@7.9.5
react-router@7.9.6

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-21884.json"