Every CVE Search/ Get API key

CVE-2025-43864

React Router allows a DoS via cache poisoning by forcing SPA mode

7.5 HighPublic exploitFix available

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

20.5%Up 20.4 points since Apr 25, 2025
90%50%10%1%

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 HighCVSS: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 HighCVSS: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"
  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)

  1. 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

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 HighCVSS: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 HighCVSS: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 HighCVSS: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"
  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)

  1. 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

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 HighCVSS: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

Affected packages
PackageAffectedFixed
react-router
npm
7.2.0 to 7.5.1
7.5.2
react-router
TuxCare: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-dom
TuxCare: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/architect
TuxCare: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/cloudflare
TuxCare: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/express
TuxCare: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/node
TuxCare: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-adapter
TuxCare: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/dev
TuxCare: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-routes
TuxCare: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/serve
TuxCare: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-router
TuxCare: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
npm
7.2.0 up to 7.5.2
7.5.2

Public exploits

Links only. Every CVE stores no exploit code.

Public exploits
SourceLinkDate
PoC in GitHubpouriam23/DoS-via-cache-poisoning-by-forcing-SPA-mode-CVE-2025-43864-2025-04-27

History

History
RecordedChangedSources
affected, facts
first indexedCVE 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

MoveEnter Open