Staging Environment: Content and features may be unstable or change without notice.
Search for packages
Package details: pkg:npm/react-router@0.0.0-experimental-add6f8aa
purl pkg:npm/react-router@0.0.0-experimental-add6f8aa
Next non-vulnerable version 0.0.0
Latest non-vulnerable version 7.12.0
Risk 4.0
Vulnerabilities affecting this package (2)
Vulnerability Summary Fixed by
VCID-98v3-32bv-2qg9
Aliases:
CVE-2025-43864
GHSA-f46r-rw29-r322
React Router allows a DoS via cache poisoning by forcing SPA mode ## Summary After some research, it turns out that it is possible to force an application to switch to SPA mode by adding a header to the request. If the application uses SSR and is forced to switch to SPA, this causes an error that completely corrupts the page. If a cache system is in place, this allows the response containing the error to be cached, resulting in a cache poisoning that strongly impacts the availability of the application. ## Details The vulnerable header is `X-React-Router-SPA-Mode`; adding it to a request sent to a page/endpoint using a loader throws an error. Here is [the vulnerable code](https://github.com/remix-run/react-router/blob/e6c53a0130559b4a9bd47f9cf76ea5b08a69868a/packages/react-router/lib/server-runtime/server.ts#L407) : <img width="672" alt="Capture d’écran 2025-04-07 à 08 28 20" src="https://github.com/user-attachments/assets/0a0e9c41-70fd-4dba-9061-892dd6797291" /> To use the header, React-router must be used in Framework mode, and for the attack to be possible the target page must use a loader. ## Steps to reproduce Versions used for our PoC: - "@react-router/node": "^7.5.0", - "@react-router/serve": "^7.5.0", - "react": "^19.0.0" - "react-dom": "^19.0.0" - "react-router": "^7.5.0" 1. Install React-Router with its default configuration in Framework mode (https://reactrouter.com/start/framework/installation) 2. Add a simple page using a loader (example: `routes/ssr`) ![image](https://github.com/user-attachments/assets/d7d04e86-c549-4f4a-9200-2d1b6ac96aad) 3. Send a request to the endpoint using the loader (`/ssr` in our case) adding the following header: ``` X-React-Router-SPA-Mode: yes ``` Notice the difference between a request with and without the header; **Normal request** ![Capture d’écran 2025-04-07 à 08 36 27](https://github.com/user-attachments/assets/da372b70-7c68-41c1-aac1-e5be94f22526) **With the header** ![Capture d’écran 2025-04-07 à 08 37 01](https://github.com/user-attachments/assets/98101720-cb5b-44e9-bff5-463c0b4dab2a) ![image](https://github.com/user-attachments/assets/c16a101e-688c-4757-9e05-61308ed8a2de) ## Impact If a system cache is in place, it is possible to poison the response by completely altering its content (*by an error message*), strongly impacting its availability, making the latter impractical via a cache-poisoning attack. ## Credits - Rachid Allam (zhero;) - Yasser Allam (inzo_)
0.0.0
Affected by 0 other vulnerabilities.
7.5.2
Affected by 5 other vulnerabilities.
VCID-fvgg-y3kj-wyew
Aliases:
CVE-2025-43865
GHSA-cpj6-fhp6-mr6j
React Router allows pre-render data spoofing on React-Router framework mode ## Summary After some research, it turns out that it's possible to modify pre-rendered data by adding a header to the request. This allows to completely spoof its contents and modify all the values ​​of the data object passed to the HTML. Latest versions are impacted. ## Details The vulnerable header is `X-React-Router-Prerender-Data`, a specific JSON object must be passed to it in order for the spoofing to be successful as we will see shortly. Here is [the vulnerable code](https://github.com/remix-run/react-router/blob/e6c53a0130559b4a9bd47f9cf76ea5b08a69868a/packages/react-router/lib/server-runtime/routes.ts#L87) : <img width="776" alt="Capture d’écran 2025-04-07 à 05 36 58" src="https://github.com/user-attachments/assets/c95b0b33-15ce-4d30-9f5e-b10525dd6ab4" /> To use the header, React-router must be used in Framework mode, and for the attack to be possible the target page must use a loader. ## Steps to reproduce Versions used for our PoC: - "@react-router/node": "^7.5.0", - "@react-router/serve": "^7.5.0", - "react": "^19.0.0" - "react-dom": "^19.0.0" - "react-router": "^7.5.0" 1. Install React-Router with its default configuration in Framework mode (https://reactrouter.com/start/framework/installation) 2. Add a simple page using a loader (example: `routes/ssr`) 3. Access your page (*which uses the loader*) by suffixing it with `.data`. In our case the page is called `/ssr`: ![image](https://github.com/user-attachments/assets/d7d04e86-c549-4f4a-9200-2d1b6ac96aad) We access it by adding the suffix `.data` and retrieve the data object, needed for the header: ![image](https://github.com/user-attachments/assets/ea0ca23e-6ba5-49c1-980d-1b04a05acf56) 4. Send your request by adding the `X-React-Router-Prerender-Data` header with the previously retrieved object as its value. You can change any value of your `data` object (do not touch the other values, the latter being necessary for the object to be processed correctly and not throw an error): ![Capture d’écran 2025-04-07 à 05 56 10](https://github.com/user-attachments/assets/42ca7c9e-5cd3-4eff-9711-1e78755c9046) As you can see, all values ​​have been changed/overwritten by the values ​​provided via the header. ## Impact The impact is significant, if a cache system is in place, it is possible to poison a response in which all of the data transmitted via a loader would be altered by an attacker allowing him to take control of the content of the page and modify it as he wishes via a cache-poisoning attack. This can lead to several types of attacks including potential stored XSS depending on the context in which the data is injected and/or how the data is used on the client-side. ## Credits - Rachid Allam (zhero;) - Yasser Allam (inzo_)
0.0.0
Affected by 0 other vulnerabilities.
7.5.2
Affected by 5 other vulnerabilities.
Vulnerabilities fixed by this package (0)
Vulnerability Summary Aliases
This package is not known to fix vulnerabilities.

Date Actor Action Vulnerability Source VulnerableCode Version
2026-04-29T22:08:41.958545+00:00 GitLab Importer Affected by VCID-98v3-32bv-2qg9 https://gitlab.com/gitlab-org/advisories-community/-/blob/main/npm/react-router/GHSA-f46r-rw29-r322.yml 38.5.0
2026-04-29T22:08:40.297635+00:00 GitLab Importer Affected by VCID-fvgg-y3kj-wyew https://gitlab.com/gitlab-org/advisories-community/-/blob/main/npm/react-router/GHSA-cpj6-fhp6-mr6j.yml 38.5.0
2026-04-16T23:27:17.805836+00:00 GitLab Importer Affected by VCID-98v3-32bv-2qg9 https://gitlab.com/gitlab-org/advisories-community/-/blob/main/npm/react-router/GHSA-f46r-rw29-r322.yml 38.4.0
2026-04-16T23:27:16.089752+00:00 GitLab Importer Affected by VCID-fvgg-y3kj-wyew https://gitlab.com/gitlab-org/advisories-community/-/blob/main/npm/react-router/GHSA-cpj6-fhp6-mr6j.yml 38.4.0
2026-04-12T00:46:47.555715+00:00 GitLab Importer Affected by VCID-98v3-32bv-2qg9 https://gitlab.com/gitlab-org/advisories-community/-/blob/main/npm/react-router/GHSA-f46r-rw29-r322.yml 38.3.0
2026-04-12T00:46:45.746528+00:00 GitLab Importer Affected by VCID-fvgg-y3kj-wyew https://gitlab.com/gitlab-org/advisories-community/-/blob/main/npm/react-router/GHSA-cpj6-fhp6-mr6j.yml 38.3.0
2026-04-03T00:54:48.098134+00:00 GitLab Importer Affected by VCID-98v3-32bv-2qg9 https://gitlab.com/gitlab-org/advisories-community/-/blob/main/npm/react-router/GHSA-f46r-rw29-r322.yml 38.1.0
2026-04-03T00:54:46.067423+00:00 GitLab Importer Affected by VCID-fvgg-y3kj-wyew https://gitlab.com/gitlab-org/advisories-community/-/blob/main/npm/react-router/GHSA-cpj6-fhp6-mr6j.yml 38.1.0