Vite: Dateien außerhalb von `server.fs.allow` könnten ausgeliefert werden, wenn Projektpfade Systempfaden auf Nicht-Windows-Systemen entsprechen
Zusammenfassung
Der Inhalt von Dateien außerhalb der Konfiguration server.fs kann an den Browser zurückgegeben werden, wenn das Projekt einen Dateipfad importiert, der mit root verkettet ist. Wenn das Projekt beispielsweise auf <path-to-project-root>/etc/hosts verweist, konnte der Inhalt von /etc/hosts zurückgegeben werden.
Der Inhalt von Dateien außerhalb der Option server.fs.allow kann an den Browser zurückgegeben werden, wenn ein Projekt eine Datei importiert, deren pfadrelativer Projekt-Root-Pfad mit einem absoluten Pfad auf dem Host übereinstimmt. Ein Verweis auf <project-root>/etc/hosts könnte beispielsweise dazu führen, dass Vite die Datei /etc/hosts des Hosts ausliefert.
Auswirkungen
Nur Anwendungen, die alle folgenden Bedingungen erfüllen, sind betroffen:
- Der Vite-Entwicklungsserver wird explizit im Netzwerk freigegeben (über
--hostoder dieserver.host-Option))). - Das Projekt enthält eine importierte Datei, deren Root-relative Browser-URL auch dem absoluten Pfad einer lesbaren Datei auf dem Host entspricht.
- Die sensible Datei wird nicht durch
server.fs.deny) abgedeckt. - Der Entwicklungsserver läuft nicht unter Windows.
Details
Wenn Vite einen Import innerhalb des Roots analysiert, wird die aufgelöste Modul-ID in eine Browser-URL wie /etc/hostname umgeschrieben. In den betroffenen Versionen konvertiert Vite diese URL mit fsPathFromUrl und fügt das Ergebnis zu safeModulePaths hinzu. Da fsPathFromUrl einen führenden Schrägstrich sicherstellt, ohne die URL gegen das Projekt-Root aufzulösen, wird die Projekt-URL /etc/hostname so erfasst, als wäre sie der absolute Dateisystempfad /etc/hostname.
Bei einer späteren Anfrage an /@fs/etc/hostname interpretiert die Dateisystem-Middleware /etc/hostname als absoluten Pfad. Die Zugriffskontrolle wendet server.fs.deny an und akzeptiert anschließend Pfade in safeModulePaths, bevor server.fs.allow geprüft wird. Dadurch kann die Anfrage die Host-Datei anstelle der ursprünglichen Projektdatei zurückgeben, die safeModulePaths befüllt hat.
PoC
Das folgende Beispiel erfordert Linux mit einer lesbaren Datei /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
In einem weiteren Terminal:
$ 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
Was zu tun ist
Aktualisieren Sie vite auf Version 6.4.4, 7.3.7, 8.1.6, 8.2.4, 8.3.3 oder höher und vite-plus auf Version 1.1.0 oder höher.
Betroffene Software
Klicken Sie auf eine Technologie, um alle zugehörigen Schwachstellen anzuzeigen.
Verweise
- 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
- CVSS-Vektor
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- Schwäche (CWE)
CWE-22, CWE-284- Plattform
- npm
- Paket
vite, vite-plus- Veröffentlicht
- 21.10.2026
- Aktualisiert
- 21.10.2026 19:17
Quellen und Lizenzen · Von DockRay bearbeitet oder übersetzt; Rechte und Lizenzen der Quellen bleiben erhalten.
OSV / GitHub Advisory Database - GHSA-rq7h-c2jc-7f22 - CC BY 4.0
Schwachstellenhistorie: vite
Alle veröffentlichten Schwachstellen dieses Pakets (npm-Paket), neueste zuerst. Zeigt, ob es ein einmaliger Ausrutscher ist oder ein Paket, das man im Auge behalten muss.
- Einträge insgesamt
- 27
- Erste → letzte
- 08.2022 10.2026
- Ohne Fix
- 0
- In Angriffen ausgenutzt
- 1
Verteilung nach Schweregrad
- Hoch 8
- Mittel 16
- Niedrig 3
Veröffentlichungen pro Jahr
- 2022: 1
- 2023: 2
- 2024: 4
- 2025: 9
- 2026: 11
-
Vite: Dateien außerhalb von `server.fs.allow` könnten ausgeliefert werden, wenn Projektpfade Systempfaden auf Nicht-Windows-Systemen entsprechen dieser Eintrag
Erkennen Sie Schwachstellen in Ihrer Anwendung
Mit der DockRay-Integration und aktivierter Softwareinventarisierung prüft DockRay gemeldete Komponentenversionen auf bekannte Schwachstellen und benachrichtigt Sie über bestätigte Treffer. Die Abdeckung hängt von der unterstützten Technologie und den verfügbaren Meldungen ab.