Wysoka

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

  • Ujawniono: 24.04.2025
  • Aktualizacja: 11.10.2026 10:22

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)

image

  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 Capture d’écran 2025-04-07 à 08 36 27

With the header Capture d’écran 2025-04-07 à 08 37 01 image

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_)

Czego dotyczy

Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.

PlatformaPaczkaPodatne wersjePoprawka w wersji
Paczka npm react-router >= 7.2.0, < 7.5.2 7.5.2

Odnośniki

Ocena CVSS 7.5/10
Wektor CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Słabość (CWE)
CWE-755
Platforma
npm
Paczka
react-router
Ujawniono
24.04.2025
Aktualizacja
11.10.2026 10:22

Źródła i licencje

OSV / GitHub Advisory Database - GHSA-f46r-rw29-r322 - CC BY 4.0

Historia podatności: react-router

Wszystkie opisane podatności tej paczki (Paczka npm), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.

Wszystkie (20) w archiwum
Wszystkich wpisów
20
Pierwsza → ostatnia
04.2025 07.2026
Bez poprawki
0
Wykorzystywana w atakach
0

Rozkład istotności

  • Wysoka 11
  • Średnia 8
  • Niska 1

Ujawnienia w latach

  1. 2025: 2
  2. 2026: 18
Istotność:
  1. Wysoka ghsa-qwww-vcr4-c8h2 >= 7.12.0, < 7.18.2, >= 8.0.0, < 8.3.0 7.18.2, 8.3.0
  2. Wysoka · 7.5 CVE-2026-34077 >= 7.0.0, < 7.14.0 7.14.0
  3. Wysoka · 7.5 CVE-2026-42342 >= 7.0.0, < 7.15.0 7.15.0
  4. Wysoka · 8.0 CVE-2026-22029 >= 7.0.0, < 7.12.0 7.12.0
  5. Wysoka · 8.2 CVE-2026-21884 >= 7.0.0, < 7.12.0 7.12.0
  6. Wysoka · 7.6 CVE-2025-59057 >= 7.0.0, < 7.9.0 7.9.0
  7. Wysoka · 8.2 CVE-2025-43865 >= 7.0.0-pre.0, < 7.5.2 7.5.2
  8. React Router allows a DoS via cache poisoning by forcing SPA mode ten wpis
    Wysoka · 7.5 CVE-2025-43864 >= 7.2.0, < 7.5.2 7.5.2

Dowiedz się, które podatności dotyczą Twojej aplikacji

Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.

Podłącz swoją aplikację
Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.