CVE-2025-46565
Vite's server.fs.deny bypassed with /. for files under project root
Impact
### Summary The contents of files in [the project `root`](https://vite.dev/config/shared-options.html#root) that are denied by a file matching pattern 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. Only files that are under [project `root`](https://vite.dev/config/shared-options.html#root) and are denied by a file matching pattern can be bypassed. - Examples of file matching patterns: `.env`, `.env.*`, `*.{crt,pem}`, `**/.env` - Examples of other patterns: `**/.git/**`, `.git/**`, `.git/**/*` ### Details [`server.fs.deny`](https://vite.dev/config/server-options.html#server-fs-deny) can contain patterns matching against files (by default it includes `.env`, `.env.*`, `*.{crt,pem}` as such patterns). These patterns were able to bypass for files under `root` by using a combination of slash and dot (`/.`). ### PoC ``` npm create vite@latest cd vite-project/ cat "secret" > .env npm install npm run dev curl --request-target /.env/. http://localhost:5173 ```  
Affected packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| npm | vite | >= 6.3.0, <= 6.3.3 | 6.3.4 |
Affected products
| Vendor | Product | Affected versions |
|---|---|---|
| Vitejs | Vite | before 4.5.14 from 5.0.0 before 5.4.19 from 6.0.0 before 6.1.6 from 6.2.0 before 6.2.7 from 6.3.0 before 6.3.4 |