
Vulnerabilità di accettazione di dati non fidati estranei con dati fidati in Nuxt3
Repository per configurare l'ambiente della vulnerabilità di cache poisoning presente in nuxt3 >=3.0.0 <3.16.0
Quando c'è una CDN davanti al server nuxt e la CDN memorizza come chiave di cache solo il percorso escludendo le query URL, la richiesta per /?/_payload.json viene memorizzata con chiave di cache solo fino a /, quindi quando un altro utente invia una richiesta per /, non viene restituita la pagina normale ma la risposta per _payload.json dalla cache.
Se un attaccante invia richieste a /?/_payload.json ogni volta che la cache scade, può causare una vulnerabilità DoS in cui gli altri utenti non possono ricevere pagine normali.
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
'/' : Pagina per indurre il cache poisoning
Inviando una richiesta a http://localhost/?/_payload.json si crea una cache per il percorso '/', quindi quando si accede a http://localhost/ non viene restituita la pagina '/' ma il contenuto di _payload.json memorizzato nella cache come JSON.
'/ex' : Pagina che esegue automaticamente l'attacco di cache poisoning
Target Origin : Percorso per eseguire l'attacco di cache poisoning
In questo ambiente, bisogna usare il contenitore nginx nuxt-nginx sull'host. Perché il server di automazione dell'attacco è stato costruito in un altro contenitore con Flask, quindi se si invia a localhost, viene riconosciuto come localhost di quel contenitore.
Cache Interval : Intervallo (secondi) per inviare le richieste. Impostare leggermente inferiore al periodo di scadenza della cache della CDN.
In questo ambiente, le richieste vengono memorizzate nella cache per 60 secondi.