CVE-2025-31486: Vite allows server.fs.deny to be bypassed with .svg or relative paths
Summary
The contents of arbitrary files can be returned to the browser.
Impact
Only apps explicitly exposing the Vite dev server to the network (using --host or server.host config option) are affected.
Details
.svg
Requests ending with .svg are loaded at this line. https://github.com/vitejs/vite/blob/037f801075ec35bb6e52145d659f71a23813c48f/packages/vite/src/node/plugins/asset.ts#L285-L290 By adding ?.svg with ?.wasm?init or with sec-fetch-dest: script header, the restriction was able to bypass.
This bypass is only possible if the file is smaller than build.assetsInlineLimit (default: 4kB) and when using Vite 6.0+.
relative paths
The check was applied before the id normalization. This allowed requests to bypass with relative paths (e.g. ../../).
PoC
bash npm create vite@latest cd vite-project/ npm install npm run dev
send request to read etc/passwd
bash curl 'http://127.0.0.1:5173/etc/passwd?.svg?.wasm?init'
bash curl 'http://127.0.0.1:5173/@fs/x/x/x/vite-project/?/../../../../../etc/passwd?import&?raw'
Other sources
Vite is a frontend tooling framework for javascript. The contents of arbitrary files can be returned to the browser. By adding ?.svg with ?.wasm?init or with sec-fetch-dest: script header, the server.fs.deny restriction was able to bypass. This bypass is only possible if the file is smaller than build.assetsInlineLimit (default: 4kB) and when using Vite 6.0+. Only apps explicitly exposing the Vite dev server to the network (using --host or server.host config option) are affected. This vulnerability is fixed in 4.5.12, 5.4.17, 6.0.14, 6.1.4, and 6.2.5.
— NVD
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2025-31486?
CVE-2025-31486 has a critical severity rating due to the potential for arbitrary file disclosure.
How do I fix CVE-2025-31486?
To mitigate CVE-2025-31486, upgrade to a patched version of Vite that addresses the file access restrictions.
Which versions of Vite are affected by CVE-2025-31486?
CVE-2025-31486 affects Vite versions 6.0 and above, including specific versions between 4.5.12 and 6.2.5.
What type of vulnerability is CVE-2025-31486?
CVE-2025-31486 is a security vulnerability that allows arbitrary file contents to be returned to the browser.
Is there a workaround for CVE-2025-31486?
While upgrading is recommended, implementing stricter access control rules may serve as a temporary workaround for CVE-2025-31486.