Vite: Pliki spoza `server.fs.allow` mogły być serwowane, gdy ścieżki projektu odpowiadają ścieżkom systemowym na maszynach innych niż Windows
Podsumowanie
Zawartość plików spoza konfiguracji server.fs może zostać zwrócona do przeglądarki, jeśli projekt importuje ścieżkę pliku połączoną z root. Na przykład, jeśli projekt odwołuje się do <path-to-project-root>/etc/hosts, możliwe było zwrócenie zawartości /etc/hosts.
Zawartość plików spoza opcji server.fs.allow może zostać zwrócona do przeglądarki, gdy projekt importuje plik, którego ścieżka względem katalogu głównego projektu odpowiada bezwzględnej ścieżce na hoście. Na przykład odwołanie do <project-root>/etc/hosts mogło sprawić, że Vite zwróci plik /etc/hosts hosta.
Wpływ
Podatne są wyłącznie aplikacje spełniające wszystkie poniższe warunki:
- serwer deweloperski Vite jest jawnie udostępniony w sieci (za pomocą
--hostlub opcjiserver.host))), - zawierają importowany plik, którego adres URL w przeglądarce względem katalogu głównego jest jednocześnie bezwzględną ścieżką do możliwego do odczytu pliku na hoście,
- poufny plik nie pasuje do reguły
server.fs.deny), - serwer deweloperski nie działa w systemie Windows.
Szczegóły
Gdy Vite analizuje import wewnątrz katalogu głównego, przepisuje rozwiązany identyfikator modułu na adres URL przeglądarki, taki jak /etc/hostname. W wersjach dotkniętych podatnością Vite konwertuje ten adres URL za pomocą fsPathFromUrl i dodaje wynik do safeModulePaths. Ponieważ fsPathFromUrl zapewnia wiodący ukośnik bez rozwiązywania adresu URL względem katalogu głównego projektu, adres URL projektu /etc/hostname jest rejestrowany tak, jakby był bezwzględną ścieżką w systemie plików /etc/hostname.
Przy późniejszym żądaniu do /@fs/etc/hostname oprogramowanie pośredniczące bezpośredniego dostępu do systemu plików interpretuje /etc/hostname jako ścieżkę bezwzględną. Kontrola dostępu stosuje server.fs.deny, a następnie akceptuje ścieżki obecne w safeModulePaths przed sprawdzeniem server.fs.allow. W rezultacie żądanie może zwrócić plik hosta zamiast pliku projektu, który pierwotnie wypełnił safeModulePaths.
PoC
Poniższy przykład wymaga systemu Linux z możliwością odczytu pliku /etc/hostname:
$ mkdir vite-safe-module-path-poc
$ cd vite-safe-module-path-poc
$ npm init -y
$ npm install vite@8.3.1
$ mkdir -p etc
$ echo 'PROJECT-DECOY\n' > etc/hostname
$ echo 'import "./etc/hostname"\n' > main.js
$ npx vite --host 127.0.0.1
W osobnym terminalu:
$ curl -o /dev/null -s -w '%{http_code}\n' http://127.0.0.1:5173/main.js
200
$ curl -sS -o response -w '%{http_code}\n' http://127.0.0.1:5173/@fs/etc/hostname
200
$ cmp -s response /etc/hostname && echo 'response matches host file'
response matches host file
Co trzeba zrobić
Zaktualizuj pakiet vite do wersji 6.4.4, 7.3.7, 8.1.6, 8.2.4, 8.3.3 lub nowszej, a pakiet vite-plus do wersji 1.1.0 lub nowszej.
Czego dotyczy
Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.
| Platforma | Paczka | Podatne wersje | Poprawka w wersji |
|---|---|---|---|
| Paczka npm | vite | >= 8.3.0, < 8.3.3, >= 8.2.0, < 8.2.4, >= 8.0.0, < 8.1.6, >= 7.0.0, < 7.3.7, < 6.4.4 | 8.3.3, 8.2.4, 8.1.6, 7.3.7, 6.4.4 |
| Paczka npm | vite-plus | < 1.1.0 | 1.1.0 |
Odnośniki
- https://github.com/vitejs/vite/security/advisories/GHSA-rq7h-c2jc-7f22
- https://nvd.nist.gov/vuln/detail/CVE-2026-112946
- https://github.com/vitejs/vite/pull/23656
- https://github.com/vitejs/vite/commit/170b92791421bcd484f7325936d989a82d6bd4aa
- https://github.com/vitejs/vite/commit/45c0e3392a298626955a0ab93a8e51232daac721
- https://github.com/vitejs/vite/commit/c3e06f92e969952466b4e2f5801e85e1e00cd905
- https://github.com/vitejs/vite/commit/e570d8d016096b5f8f6f09808376ca6cf73f27d0
- https://github.com/vitejs/vite/commit/f0d76c7da13d5e794807b82f0b86c1931a8438e3
- https://github.com/vitejs/vite
- Wektor CVSS
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N- Słabość (CWE)
CWE-22, CWE-284- Platforma
- npm
- Paczka
vite, vite-plus- Ujawniono
- 21.10.2026
- Aktualizacja
- 21.10.2026 19:17
Źródła i licencje · Redakcja lub tłumaczenie: DockRay. Zachowano prawa źródeł i obowiązujące licencje.
OSV / GitHub Advisory Database - GHSA-rq7h-c2jc-7f22 - CC BY 4.0
Historia podatności: vite
Wszystkie opisane podatności tej paczki (Paczka npm), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.
- Wszystkich wpisów
- 27
- Pierwsza → ostatnia
- 08.2022 10.2026
- Bez poprawki
- 0
- Wykorzystywana w atakach
- 1
Rozkład istotności
- Wysoka 8
- Średnia 16
- Niska 3
Ujawnienia w latach
- 2022: 1
- 2023: 2
- 2024: 4
- 2025: 9
- 2026: 11
-
Vite: Pliki spoza `server.fs.allow` mogły być serwowane, gdy ścieżki projektu odpowiadają ścieżkom systemowym na maszynach innych niż Windows ten wpis
Dowiedz się, które podatności dotyczą Twojej aplikacji
Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.