
Vulnerabilidad de aceptación de datos extraños no confiables con datos confiables en Nuxt3
Repositorio para configurar el entorno de la vulnerabilidad de envenenamiento de caché que ocurre en nuxt3 >=3.0.0 <3.16.0
Cuando hay un CDN delante del servidor nuxt y el CDN guarda solo la ruta, excluyendo los parámetros de la URL, como clave de caché, la solicitud a /?/_payload.json se almacena con la clave de caché limitada a /. Por lo tanto, cuando otro usuario envía una solicitud a /, se devuelve desde la caché la respuesta de _payload.json en lugar de la página normal.
Si el atacante envía solicitudes a /?/_payload.json en cada ciclo en el que desaparece la caché, se puede provocar una vulnerabilidad DoS que impide que otros usuarios reciban la página normal.
https://preo123.tistory.com/19
git clone https://github.com/jiseoung/CVE-2025-27415-PoC.git
cd CVE-2025-27415-PoC
docker-compose up --build
'/' : página para inducir el envenenamiento de caché
Al enviar una solicitud a http://localhost/?/_payload.json, se genera una caché para la ruta '/' y, al acceder a http://localhost/, no se devuelve la respuesta de la página '/', sino que el contenido de _payload.json almacenado en la caché se devuelve como JSON.
'/ex' : página que ejecuta automáticamente el ataque de envenenamiento de caché
Target Origin : ruta sobre la que se ejecutará el ataque de envenenamiento de caché
En este entorno, se debe usar nuxt-nginx, el contenedor de nginx, en el host. Esto se debe a que el servidor de automatización del ataque está construido con Flask en otro contenedor, por lo que si se envía a localhost, se interpretará como el localhost de ese contenedor.
Cache Interval : intervalo (en segundos) en el que se envían las solicitudes. Se configura ligeramente más corto que el período en el que la caché del CDN desaparece.
En este entorno, las solicitudes se almacenan en la caché durante 60 segundos.