W frameworku Vitest przed wersjami 3.2.5 i 4.1.0 błędna obsługa funkcji isFileServingAllowed na systemach Windows pozwala atakującemu na odczyt dowolnych plików spoza katalogu projektu poprzez path traversal z użyciem sekwencji \\?\\..\\. Dodatkowo ekspozycja API umożliwia wykonanie arbitralnego kodu.
▸ Pokaż oryginał (EN)
Vitest is a testing framework powered by Vite. Prior to 3.2.5 and 4.1.0, the Vitest UI/API server on Windows used isFileServingAllowed incorrectly for /__vitest_attachment__, allowing \\?\\..\\ path traversal to read files outside the project; exposed API write and rerun features such as saveTestFile and rerun could also allow arbitrary script execution. This issue is fixed in versions 3.2.5 and 4.1.0.
Serwer UI/API Vitest na Windows nieprawidłowo stosuje funkcję isFileServingAllowed dla ścieżki /__vitest_attachment__, co pozwala na ominięcie kontroli dostępu za pomocą specjalnej sekwencji path traversal \\?\\..\\. Atakujący może w ten sposób odczytywać pliki poza katalogiem projektu. Co więcej, publicznie dostępne funkcje API, takie jak saveTestFile i rerun, mogą zostać wykorzystane do zapisu złośliwych skryptów i ich uruchomienia, co prowadzi do wykonania arbitralnego kodu.
Atakujący bez uwierzytelnienia może odczytać dowolne pliki z systemu plików ofiary (np. klucze, konfiguracje, sekrety) oraz wykonać arbitralny kod na maszynie, na której działa serwer Vitest.
Należy zaktualizować Vitest do wersji 3.2.5 lub 4.1.0. Patche dostępne są w oficjalnych wydaniach projektu na GitHub (v3.2.5, v4.1.0). Do czasu aktualizacji zaleca się wyłączenie serwera UI/API Vitest lub ograniczenie dostępu do niego wyłącznie do zaufanych, lokalnych interfejsów sieciowych.
Vitest w wersjach przed 3.2.5 (gałąź 3.x) oraz przed 4.1.0 (gałąź 4.x) działający na systemach Windows z włączonym UI/API server
Podatność dotyczy wyłącznie systemów Windows — specyficzna sekwencja \\?\\..\\ jest charakterystyczna dla parsowania ścieżek na tej platformie. Poprawka wprowadzona w commitach 20e00ef7 oraz af88b1f5 dostępnych w repozytorium GitHub projektu Vitest.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HVitest.dev Vitest
APPVitest.Dev< 3.2.54.0.0 – 4.1.0 (bez)