
Nuxt3 Sicherheitslücke: Akzeptanz von fremden, nicht vertrauenswürdigen Daten als vertrauenswürdige Daten
Repository zur Einrichtung einer Umgebung für die Cache-Poisoning-Schwachstelle, die in nuxt3 >=3.0.0 <3.16.0 auftritt.
Wenn ein CDN vor dem nuxt-Server steht und das CDN nur den Pfad ohne URL-Abfragen als Cache-Schlüssel speichert, wird eine Anfrage an /?/_payload.json nur bis / als Cache-Schlüssel gespeichert. Wenn ein anderer Benutzer eine Anfrage an / sendet, wird anstelle der normalen Seite die Antwort von _payload.json aus dem Cache zurückgegeben – dies ist die Schwachstelle.
Wenn ein Angreifer in jedem Zyklus, in dem der Cache verschwindet, eine Anfrage an /?/_payload.json sendet, kann dies eine DoS-Schwachstelle auslösen, bei der andere Benutzer keine normalen Seiten mehr erhalten.
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
'/' : Seite zur Induktion von Cache-Poisoning
Wenn tatsächlich eine Anfrage an http://localhost/?/_payload.json gesendet wird, um einen Cache für den Pfad '/' zu erzeugen, wird beim Zugriff auf http://localhost/ nicht die Antwort der '/' Seite zurückgegeben, sondern der Inhalt des zwischengespeicherten _payload.json als JSON.
'/ex' : Seite, die automatisch einen Cache-Poisoning-Angriff durchführt
Target Origin : Pfad, auf dem der Cache-Poisoning-Angriff durchgeführt wird
In dieser Umgebung muss auf dem Host der nginx-Container nuxt-nginx verwendet werden, da der Angriffsautomatisierungsserver in einem anderen Container mit Flask erstellt wurde und bei einer Anfrage an localhost der localhost dieses Containers erkannt wird.
Cache Interval : Zeitintervall (in Sekunden) zum Senden der Anfragen. Es sollte etwas kürzer als der Zyklus eingestellt werden, in dem der CDN-Cache verschwindet.
In dieser Umgebung werden Anfragen 60 Sekunden lang im Cache gespeichert.