Alta

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

  • Publicada: 24.04.2025
  • Actualizado: 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_)

Software afectado

Haz clic en una tecnología para ver todas sus vulnerabilidades.

PlataformaPaqueteVersiones vulnerablesCorregida en
Paquete de npm react-router >= 7.2.0, < 7.5.2 7.5.2

Referencias

Puntuación CVSS 7.5/10
Vector CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Debilidad (CWE)
CWE-755
Plataforma
npm
Paquete
react-router
Publicada
24.04.2025
Actualizado
11.10.2026 10:22

Fuentes y licencias

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

Historial de vulnerabilidades: react-router

Todas las vulnerabilidades publicadas de este paquete (Paquete de npm), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.

Todas (20) en el archivo
Entradas en total
20
Primera → última
04.2025 07.2026
Sin corrección
0
Explotada en ataques
0

Distribución por gravedad

  • Alta 11
  • Media 8
  • Baja 1

Divulgaciones por año

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

Identifica las vulnerabilidades de tu aplicación

Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.

Conectar tu aplicación
Newsletter DockRay

La seguridad de tus aplicaciones en tu correo

Vulnerabilidades importantes, recomendaciones concretas y consejos prácticos para tus aplicaciones. Elige tus tecnologías y sigue lo que importa para tu proyecto.

  • Un resumen diario de nuevas vulnerabilidades, también las críticas.
  • Avisos sobre actualizaciones importantes.
  • Consejos prácticos sobre seguridad y monitorización de aplicaciones.

Déjalo vacío para recibir avisos de todas las tecnologías.

Suscripción gratuita. Date de baja con un clic en cualquier correo.