CVE-2025-43864
React Router allows a DoS via cache poisoning by forcing SPA mode
React Router is a router for React. Starting in version 7.2.0 and prior to version 7.5.2, 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. This issue has been patched in version 7.5.2.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
7.5
React Router allows a DoS via cache poisoning by forcing SPA mode
React Router is a router for React. Starting in version 7.2.0 and prior to version 7.5.2, 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. This issue has been patched in version 7.5.2.
- Record
CVE-2025-43864- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-755
- Updated
- 2026-11-02
EUVDEUVD-2025-11980
7.5
React Router is a router for React. Starting in version 7.2.0 and prior to version 7.5.2, 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. This issue has been patched in version 7.5.2.
- Record
EUVD-2025-11980- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-f46r-rw29-r322
7.5
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 :
<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"
- Install React-Router with its default configuration in Framework mode (https://reactrouter.com/start/framework/installation)
- Add a simple page using a loader (example:
routes/ssr)
- Send a request to the endpoint using the loader (
/ssrin 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
With the header
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_)
- Record
GHSA-f46r-rw29-r322- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-755
- Updated
- 2026-11-02
NVD
7.5
React Router is a router for React. Starting in version 7.2.0 and prior to version 7.5.2, 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. This issue has been patched in version 7.5.2.
- Record
CVE-2025-43864- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-755
- Updated
- 2026-11-02
OSV
7.5
React Router allows a DoS via cache poisoning by forcing SPA mode
React Router is a router for React. Starting in version 7.2.0 and prior to version 7.5.2, 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. This issue has been patched in version 7.5.2.
- Record
CVE-2025-43864- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-755
- Updated
- 2026-11-02
OSVGHSA-f46r-rw29-r322
7.5
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 :
<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"
- Install React-Router with its default configuration in Framework mode (https://reactrouter.com/start/framework/installation)
- Add a simple page using a loader (example:
routes/ssr)
- Send a request to the endpoint using the loader (
/ssrin 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
With the header
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_)
- Record
GHSA-f46r-rw29-r322- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-755
- Updated
- 2026-11-02
Show 11 moreShow less
OSVCLSA-2026-1775521859 No score
TuxCare security update for react-router (2 CVEs)
TuxCare rebuilt react-router to address 2 CVEs. Fixed in 7.5.1-tuxcare.1.
- Record
CLSA-2026-1775521859- Updated
- 2026-11-02
OSVCLSA-2026-1792253396 No score
TuxCare security update for react-router-dom (2 CVEs)
TuxCare rebuilt react-router-dom to address 2 CVEs. Fixed in 7.5.1-tuxcare.1.
- Record
CLSA-2026-1792253396- Updated
- 2026-11-02
OSVCLSA-2026-1792419110 No score
TuxCare security update for @react-router/architect (2 CVEs)
TuxCare rebuilt @react-router/architect to address 2 CVEs. Fixed in 7.5.1-tuxcare.1.
- Record
CLSA-2026-1792419110- Updated
- 2026-11-02
OSVCLSA-2026-1792419187 No score
TuxCare security update for @react-router/cloudflare (2 CVEs)
TuxCare rebuilt @react-router/cloudflare to address 2 CVEs. Fixed in 7.5.1-tuxcare.1.
- Record
CLSA-2026-1792419187- Updated
- 2026-11-02
OSVCLSA-2026-1792419266 No score
TuxCare security update for @react-router/express (2 CVEs)
TuxCare rebuilt @react-router/express to address 2 CVEs. Fixed in 7.5.1-tuxcare.1.
- Record
CLSA-2026-1792419266- Updated
- 2026-11-02
OSVCLSA-2026-1792419622 No score
TuxCare security update for @react-router/node (2 CVEs)
TuxCare rebuilt @react-router/node to address 2 CVEs. Fixed in 7.5.1-tuxcare.1.
- Record
CLSA-2026-1792419622- Updated
- 2026-11-02
OSVCLSA-2026-1792421940 No score
TuxCare security update for @react-router/remix-routes-option-adapter (2 CVEs)
TuxCare rebuilt @react-router/remix-routes-option-adapter to address 2 CVEs. Fixed in 7.5.1-tuxcare.1.
- Record
CLSA-2026-1792421940- Updated
- 2026-11-02
OSVCLSA-2026-1792424729 No score
TuxCare security update for @react-router/dev (2 CVEs)
TuxCare rebuilt @react-router/dev to address 2 CVEs. Fixed in 7.5.1-tuxcare.1.
- Record
CLSA-2026-1792424729- Updated
- 2026-11-02
OSVCLSA-2026-1792425404 No score
TuxCare security update for @react-router/fs-routes (2 CVEs)
TuxCare rebuilt @react-router/fs-routes to address 2 CVEs. Fixed in 7.5.1-tuxcare.1.
- Record
CLSA-2026-1792425404- Updated
- 2026-11-02
OSVCLSA-2026-1792428105 No score
TuxCare security update for @react-router/serve (2 CVEs)
TuxCare rebuilt @react-router/serve to address 2 CVEs. Fixed in 7.5.1-tuxcare.1.
- Record
CLSA-2026-1792428105- Updated
- 2026-11-02
OSVCLSA-2026-1792430029 No score
TuxCare security update for create-react-router (2 CVEs)
TuxCare rebuilt create-react-router to address 2 CVEs. Fixed in 7.5.1-tuxcare.1.
- Record
CLSA-2026-1792430029- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
react-routernpm |
7.2.0 to 7.5.1 | 7.5.2 |
react-routerTuxCare:npm From an advisory covering 2 CVEs |
7.5.1-tuxcare.0 up to 7.5.1-tuxcare.1, plus listed versions 7.5.1 |
7.5.1-tuxcare.1 |
react-router-domTuxCare:npm From an advisory covering 2 CVEs |
7.5.1-tuxcare.0 up to 7.5.1-tuxcare.1, plus listed versions 7.5.1 |
7.5.1-tuxcare.1 |
@react-router/architectTuxCare:npm From an advisory covering 2 CVEs |
7.5.1-tuxcare.0 up to 7.5.1-tuxcare.1, plus listed versions 7.5.1 |
7.5.1-tuxcare.1 |
@react-router/cloudflareTuxCare:npm From an advisory covering 2 CVEs |
7.5.1-tuxcare.0 up to 7.5.1-tuxcare.1, plus listed versions 7.5.1 |
7.5.1-tuxcare.1 |
@react-router/expressTuxCare:npm From an advisory covering 2 CVEs |
7.5.1-tuxcare.0 up to 7.5.1-tuxcare.1, plus listed versions 7.5.1 |
7.5.1-tuxcare.1 |
@react-router/nodeTuxCare:npm From an advisory covering 2 CVEs |
7.5.1-tuxcare.0 up to 7.5.1-tuxcare.1, plus listed versions 7.5.1 |
7.5.1-tuxcare.1 |
@react-router/remix-routes-option-adapterTuxCare:npm From an advisory covering 2 CVEs |
7.5.1-tuxcare.0 up to 7.5.1-tuxcare.1, plus listed versions 7.5.1 |
7.5.1-tuxcare.1 |
@react-router/devTuxCare:npm From an advisory covering 2 CVEs |
7.5.1-tuxcare.0 up to 7.5.1-tuxcare.1, plus listed versions 7.5.1 |
7.5.1-tuxcare.1 |
@react-router/fs-routesTuxCare:npm From an advisory covering 2 CVEs |
7.5.1-tuxcare.0 up to 7.5.1-tuxcare.1, plus listed versions 7.5.1 |
7.5.1-tuxcare.1 |
@react-router/serveTuxCare:npm From an advisory covering 2 CVEs |
7.5.1-tuxcare.0 up to 7.5.1-tuxcare.1, plus listed versions 7.5.1 |
7.5.1-tuxcare.1 |
create-react-routerTuxCare:npm From an advisory covering 2 CVEs |
7.5.1-tuxcare.0 up to 7.5.1-tuxcare.1, plus listed versions 7.5.1 |
7.5.1-tuxcare.1 |
react-routernpm |
7.2.0 up to 7.5.2 | 7.5.2 |
Public exploits
Links only. Every CVE stores no exploit code.
| Source | Link | Date |
|---|---|---|
| PoC in GitHub | pouriam23/DoS-via-cache-poisoning-by-forcing-SPA-mode-CVE-2025-43864- | 2025-04-27 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV, PoC in GitHub |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2025-43864 is a high vulnerability (CVSS 7.5) in @tanstack React-router, published April 24, 2025. Public exploit code exists. EPSS puts the chance of exploitation in the next 30 days at 20.5%, the 97th percentile. Fixed in react-router 7.5.2.
References
github.com/remix-run/react-router/security/advisories/GHSA-f46r-rw29-r322
github.com/remix-run/react-router/commit/c84302972a152d851cf5dd859ff332b354b70111
github.com/remix-run/react-router/blob/e6c53a0130559b4a9bd47f9cf76ea5b08a69868a/packages/react-router/lib/server-runtime/server.ts
nvd.nist.gov/vuln/detail/CVE-2025-43864
github.com/advisories/GHSA-f46r-rw29-r322
github.com/CVEProject/cvelistV5/tree/main/cves/2025/43xxx/CVE-2025-43864.json
github.com/remix-run/react-router