CVE-2026-53571
Vite: `server.fs.deny` bypass on Windows alternate paths
Vite is a frontend tooling framework for JavaScript. Prior to 8.0.16, 7.3.5, and 6.4.3, the contents of files that are specified by server.fs.deny can be returned to the browser on Windows. Vite’s dev server denies direct access to sensitive files through server.fs.deny, including entries such as .env, .env.*, and *.{crt,pem}. However, on Windows, the deny logic does not correctly normalize NTFS ADS path forms before access checks are applied. Because of this, requests such as /.env::$DATA?raw are treated as allowed paths, while Windows resolves them to the original file's default data stream. Similar to that, Windows allows accessing a file using a different name with the 8.3 short name compatibility feature. Vite did not reject accessing files via them. This vulnerability is fixed in 8.0.16, 7.3.5, and 6.4.3.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- None
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
8.2
Vite: `server.fs.deny` bypass on Windows alternate paths
Vite is a frontend tooling framework for JavaScript. Prior to 8.0.16, 7.3.5, and 6.4.3, the contents of files that are specified by server.fs.deny can be returned to the browser on Windows. Vite’s dev server denies direct access to sensitive files through server.fs.deny, including entries such as .env, .env.*, and *.{crt,pem}. However, on Windows, the deny logic does not correctly normalize NTFS ADS path forms before access checks are applied. Because of this, requests such as /.env::$DATA?raw are treated as allowed paths, while Windows resolves them to the original file's default data stream. Similar to that, Windows allows accessing a file using a different name with the 8.3 short name compatibility feature. Vite did not reject accessing files via them. This vulnerability is fixed in 8.0.16, 7.3.5, and 6.4.3.
- Record
CVE-2026-53571- CVSS 4.0
- 8.2 High
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-22, CWE-200
- Updated
- 2026-11-02
EUVDEUVD-2026-38303
8.2
Vite is a frontend tooling framework for JavaScript. Prior to 8.0.16, 7.3.5, and 6.4.3, the contents of files that are specified by server.fs.deny can be returned to the browser on Windows. Vite’s dev server denies direct access to sensitive files through server.fs.deny, including entries such as .env, .env.*, and *.{crt,pem}. However, on Windows, the deny logic does not correctly normalize NTFS ADS path forms before access checks are applied. Because of this, requests such as /.env::$DATA?raw are treated as allowed paths, while Windows resolves them to the original file's default data stream. Similar to that, Windows allows accessing a file using a different name with the 8.3 short name compatibility feature. Vite did not reject accessing files via them. This vulnerability is fixed in 8.0.16, 7.3.5, and 6.4.3.
- Record
EUVD-2026-38303- CVSS 4.0
- 8.2 High
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-fx2h-pf6j-xcff
6.9
vite: `server.fs.deny` bypass on Windows alternate paths
Summary
The contents of files that are specified by server.fs.deny can be returned to the browser on Windows.
Impact
Only apps that match the following conditions are affected:
- explicitly exposes the Vite dev server to the network (using
--hostorserver.hostconfig option) - the sensitive file exists in the allowed directories specified by
server.fs.allow - either of:
- the sensitive file exists in an NTFS volume
- the dev server is running on Windows and the sensitive file exists in a volume that 8.3 short name generation is enabled (it is enabled by default on system volumes)
Details
Vite’s dev server denies direct access to sensitive files through server.fs.deny, including entries such as .env, .env.*, and *.{crt,pem}. However, on Windows, the deny logic does not correctly normalize NTFS ADS path forms before access checks are applied.
Because of this, requests such as /.env::$DATA?raw are treated as allowed paths, while Windows resolves them to the original file's default data stream.
Similar to that, Windows allows accessing a file using a different name with the 8.3 short name compatibility feature. Vite did not reject accessing files via them.
PoC
$ npm create vite@latest
$ cd vite-project/
$ npm install
$ npm run dev
Access via browser at http://localhost:5173/.env::$DATA?raw
<img width="388" height="129" alt="deecc1315123883cfd0f9c26a002845a" src="https://github.com/user-attachments/assets/895c6012-4e2e-4a35-babb-69bbf3ee7170" />
Example expected result:
/.env::$DATA?rawreturns the contents of.env/tls.pem::$DATA?rawreturns the contents oftls.pem
- Record
GHSA-fx2h-pf6j-xcff- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:H/SI:N/SA:N - Weakness
- CWE-22, CWE-200
- Updated
- 2026-11-02
NVD
8.2
Vite is a frontend tooling framework for JavaScript. Prior to 8.0.16, 7.3.5, and 6.4.3, the contents of files that are specified by server.fs.deny can be returned to the browser on Windows. Vite’s dev server denies direct access to sensitive files through server.fs.deny, including entries such as .env, .env.*, and *.{crt,pem}. However, on Windows, the deny logic does not correctly normalize NTFS ADS path forms before access checks are applied. Because of this, requests such as /.env::$DATA?raw are treated as allowed paths, while Windows resolves them to the original file's default data stream. Similar to that, Windows allows accessing a file using a different name with the 8.3 short name compatibility feature. Vite did not reject accessing files via them. This vulnerability is fixed in 8.0.16, 7.3.5, and 6.4.3.
- Record
CVE-2026-53571- CVSS 4.0
- 8.2 High
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-22, CWE-200
- Updated
- 2026-11-02
OSV
8.2
Vite: `server.fs.deny` bypass on Windows alternate paths
Vite is a frontend tooling framework for JavaScript. Prior to 8.0.16, 7.3.5, and 6.4.3, the contents of files that are specified by server.fs.deny can be returned to the browser on Windows. Vite’s dev server denies direct access to sensitive files through server.fs.deny, including entries such as .env, .env.*, and *.{crt,pem}. However, on Windows, the deny logic does not correctly normalize NTFS ADS path forms before access checks are applied. Because of this, requests such as /.env::$DATA?raw are treated as allowed paths, while Windows resolves them to the original file's default data stream. Similar to that, Windows allows accessing a file using a different name with the 8.3 short name compatibility feature. Vite did not reject accessing files via them. This vulnerability is fixed in 8.0.16, 7.3.5, and 6.4.3.
- Record
CVE-2026-53571- CVSS 4.0
- 8.2 High
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-200, CWE-22
- Updated
- 2026-11-04
OSVGHSA-fx2h-pf6j-xcff
6.9
vite: `server.fs.deny` bypass on Windows alternate paths
Summary
The contents of files that are specified by server.fs.deny can be returned to the browser on Windows.
Impact
Only apps that match the following conditions are affected:
- explicitly exposes the Vite dev server to the network (using
--hostorserver.hostconfig option) - the sensitive file exists in the allowed directories specified by
server.fs.allow - either of:
- the sensitive file exists in an NTFS volume
- the dev server is running on Windows and the sensitive file exists in a volume that 8.3 short name generation is enabled (it is enabled by default on system volumes)
Details
Vite’s dev server denies direct access to sensitive files through server.fs.deny, including entries such as .env, .env.*, and *.{crt,pem}. However, on Windows, the deny logic does not correctly normalize NTFS ADS path forms before access checks are applied.
Because of this, requests such as /.env::$DATA?raw are treated as allowed paths, while Windows resolves them to the original file's default data stream.
Similar to that, Windows allows accessing a file using a different name with the 8.3 short name compatibility feature. Vite did not reject accessing files via them.
PoC
$ npm create vite@latest
$ cd vite-project/
$ npm install
$ npm run dev
Access via browser at http://localhost:5173/.env::$DATA?raw
<img width="388" height="129" alt="deecc1315123883cfd0f9c26a002845a" src="https://github.com/user-attachments/assets/895c6012-4e2e-4a35-babb-69bbf3ee7170" />
Example expected result:
/.env::$DATA?rawreturns the contents of.env/tls.pem::$DATA?rawreturns the contents oftls.pem
- Record
GHSA-fx2h-pf6j-xcff- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:H/SI:N/SA:N - Weakness
- CWE-200, CWE-22
- Updated
- 2026-11-02
Show 20 moreShow less
OSVCLSA-2026-1784423356 No score
TuxCare security update for vite (1 CVE)
TuxCare rebuilt vite to address 1 CVE. Fixed in 5.4.21-tuxcare.2.
- Record
CLSA-2026-1784423356- Updated
- 2026-11-02
OSVCLSA-2026-1784596270 No score
TuxCare security update for vite (3 CVEs)
TuxCare rebuilt vite to address 3 CVEs. Fixed in 4.5.14-tuxcare.3.
- Record
CLSA-2026-1784596270- Updated
- 2026-11-02
OSVCLSA-2026-1784683083 No score
TuxCare security update for vite (6 CVEs)
TuxCare rebuilt vite to address 6 CVEs. Fixed in 2.9.18-tuxcare.2.
- Record
CLSA-2026-1784683083- Updated
- 2026-11-02
OSVCLSA-2026-1786362148 No score
TuxCare security update for vite (3 CVEs)
TuxCare rebuilt vite to address 3 CVEs. Fixed in 4.5.5-tuxcare.9.
- Record
CLSA-2026-1786362148- Updated
- 2026-11-02
OSVCLSA-2026-1787839491 No score
TuxCare security update for vite (1 CVE)
TuxCare rebuilt vite to address 1 CVE. Fixed in 6.4.2-tuxcare.1.
- Record
CLSA-2026-1787839491- Updated
- 2026-11-02
OSVCLSA-2026-1788814439 No score
TuxCare security update for vite (1 CVE)
TuxCare rebuilt vite to address 1 CVE. Fixed in 3.2.11-tuxcare.4.
- Record
CLSA-2026-1788814439- Updated
- 2026-11-02
OSVCLSA-2026-1788966294 No score
TuxCare security update for vite (2 CVEs)
TuxCare rebuilt vite to address 2 CVEs. Fixed in 8.0.12-tuxcare.1.
- Record
CLSA-2026-1788966294- Updated
- 2026-11-02
OSVCLSA-2026-1788967519 No score
TuxCare security update for vite (2 CVEs)
TuxCare rebuilt vite to address 2 CVEs. Fixed in 8.0.10-tuxcare.1.
- Record
CLSA-2026-1788967519- Updated
- 2026-11-02
OSVCLSA-2026-1788976179 No score
TuxCare security update for vite (2 CVEs)
TuxCare rebuilt vite to address 2 CVEs. Fixed in 7.3.2-tuxcare.1.
- Record
CLSA-2026-1788976179- Updated
- 2026-11-02
OSVCLSA-2026-1789031855 No score
TuxCare security update for vite (16 CVEs)
TuxCare rebuilt vite to address 16 CVEs. Fixed in 4.1.5-tuxcare.1.
- Record
CLSA-2026-1789031855- Updated
- 2026-11-02
OSVCLSA-2026-1789032018 No score
TuxCare security update for vite (2 CVEs)
TuxCare rebuilt vite to address 2 CVEs. Fixed in 8.0.8-tuxcare.1.
- Record
CLSA-2026-1789032018- Updated
- 2026-11-02
OSVCLSA-2026-1790080922 No score
TuxCare security update for vite (2 CVEs)
TuxCare rebuilt vite to address 2 CVEs. Fixed in 5.4.14-tuxcare.3.
- Record
CLSA-2026-1790080922- Updated
- 2026-11-02
OSVCLSA-2026-1790758113 No score
TuxCare security update for vite (2 CVEs)
TuxCare rebuilt vite to address 2 CVEs. Fixed in 8.0.9-tuxcare.1.
- Record
CLSA-2026-1790758113- Updated
- 2026-11-02
OSVCLSA-2026-1790759630 No score
TuxCare security update for vite (2 CVEs)
TuxCare rebuilt vite to address 2 CVEs. Fixed in 7.3.3-tuxcare.1.
- Record
CLSA-2026-1790759630- Updated
- 2026-11-02
OSVCLSA-2026-1791795546 No score
TuxCare security update for vite (2 CVEs)
TuxCare rebuilt vite to address 2 CVEs. Fixed in 5.0.12-tuxcare.4.
- Record
CLSA-2026-1791795546- Updated
- 2026-11-02
OSVCLSA-2026-1791807914 No score
TuxCare security update for vite (3 CVEs)
TuxCare rebuilt vite to address 3 CVEs. Fixed in 4.5.0-tuxcare.2.
- Record
CLSA-2026-1791807914- Updated
- 2026-11-02
OSVCLSA-2026-1791897792 No score
TuxCare security update for vite (8 CVEs)
TuxCare rebuilt vite to address 8 CVEs. Fixed in 5.4.10-tuxcare.4.
- Record
CLSA-2026-1791897792- Updated
- 2026-11-02
OSVCLSA-2026-1792225953 No score
TuxCare security update for @vitejs/plugin-react (7 CVEs)
TuxCare rebuilt @vitejs/plugin-react to address 7 CVEs. Fixed in 2.9.18-tuxcare.2.
- Record
CLSA-2026-1792225953- Updated
- 2026-11-02
OSVCLSA-2026-1792225954 No score
TuxCare security update for @vitejs/plugin-react (1 CVE)
TuxCare rebuilt @vitejs/plugin-react to address 1 CVE. Fixed in 3.2.11-tuxcare.4.
- Record
CLSA-2026-1792225954- Updated
- 2026-11-02
OSVROOT-APP-NPM-CVE-2026-53571 No score
CVE-2026-53571 in vite - Patched by Root
Root has patched CVE-2026-53571 in the vite package for Root:npm. Multiple fixed versions available.
- Record
ROOT-APP-NPM-CVE-2026-53571- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
vitenpm |
8.0.0 to 8.0.15 | 8.0.16 |
vitenpm |
7.0.0 to 7.3.4 | 7.3.5 |
vitenpm |
through 6.4.2 | 6.4.3 |
vite-plusnpm |
through 0.1.23 | 0.1.24 |
viteTuxCare:npm |
5.4.21-tuxcare.0 up to 5.4.21-tuxcare.2, plus listed versions 5.4.215.4.21-tuxcare.1 |
5.4.21-tuxcare.2 |
viteTuxCare:npm From an advisory covering 3 CVEs |
4.5.14-tuxcare.0 up to 4.5.14-tuxcare.3, plus listed versions 4.5.144.5.14-tuxcare.14.5.14-tuxcare.2 |
4.5.14-tuxcare.3 |
viteTuxCare:npm From an advisory covering 6 CVEs |
2.9.18-tuxcare.0 up to 2.9.18-tuxcare.2, plus listed versions 2.9.182.9.18-tuxcare.1 |
2.9.18-tuxcare.2 |
viteTuxCare:npm From an advisory covering 3 CVEs |
4.5.5-tuxcare.0 up to 4.5.5-tuxcare.9, plus listed versions 4.5.54.5.5-tuxcare.14.5.5-tuxcare.24.5.5-tuxcare.34.5.5-tuxcare.4 Show 4 moreShow less4.5.5-tuxcare.54.5.5-tuxcare.64.5.5-tuxcare.74.5.5-tuxcare.8 |
4.5.5-tuxcare.9 |
viteTuxCare:npm |
6.4.2-tuxcare.0 up to 6.4.2-tuxcare.1, plus listed versions 6.4.2 |
6.4.2-tuxcare.1 |
viteTuxCare:npm |
3.2.11-tuxcare.0 up to 3.2.11-tuxcare.4, plus listed versions 3.2.113.2.11-tuxcare.13.2.11-tuxcare.23.2.11-tuxcare.3 |
3.2.11-tuxcare.4 |
Show 19 moreShow less
| Package | Affected | Fixed |
|---|---|---|
viteTuxCare:npm From an advisory covering 2 CVEs |
8.0.12-tuxcare.0 up to 8.0.12-tuxcare.1, plus listed versions 8.0.12 |
8.0.12-tuxcare.1 |
viteTuxCare:npm From an advisory covering 2 CVEs |
8.0.10-tuxcare.0 up to 8.0.10-tuxcare.1, plus listed versions 8.0.10 |
8.0.10-tuxcare.1 |
viteTuxCare:npm From an advisory covering 2 CVEs |
7.3.2-tuxcare.0 up to 7.3.2-tuxcare.1, plus listed versions 7.3.2 |
7.3.2-tuxcare.1 |
viteTuxCare:npm From an advisory covering 16 CVEs |
4.1.5-tuxcare.0 up to 4.1.5-tuxcare.1, plus listed versions 4.1.5 |
4.1.5-tuxcare.1 |
viteTuxCare:npm From an advisory covering 2 CVEs |
8.0.8-tuxcare.0 up to 8.0.8-tuxcare.1, plus listed versions 8.0.8 |
8.0.8-tuxcare.1 |
viteTuxCare:npm From an advisory covering 2 CVEs |
5.4.14-tuxcare.0 up to 5.4.14-tuxcare.3, plus listed versions 5.4.145.4.14-tuxcare.15.4.14-tuxcare.2 |
5.4.14-tuxcare.3 |
viteTuxCare:npm From an advisory covering 2 CVEs |
8.0.9-tuxcare.0 up to 8.0.9-tuxcare.1, plus listed versions 8.0.9 |
8.0.9-tuxcare.1 |
viteTuxCare:npm From an advisory covering 2 CVEs |
7.3.3-tuxcare.0 up to 7.3.3-tuxcare.1, plus listed versions 7.3.3 |
7.3.3-tuxcare.1 |
viteTuxCare:npm From an advisory covering 2 CVEs |
5.0.12-tuxcare.0 up to 5.0.12-tuxcare.4, plus listed versions 5.0.125.0.12-tuxcare.15.0.12-tuxcare.25.0.12-tuxcare.3 |
5.0.12-tuxcare.4 |
viteTuxCare:npm From an advisory covering 3 CVEs |
4.5.0-tuxcare.0 up to 4.5.0-tuxcare.2, plus listed versions 4.5.04.5.0-tuxcare.1 |
4.5.0-tuxcare.2 |
viteTuxCare:npm From an advisory covering 8 CVEs |
5.4.10-tuxcare.0 up to 5.4.10-tuxcare.4, plus listed versions 5.4.105.4.10-tuxcare.15.4.10-tuxcare.25.4.10-tuxcare.3 |
5.4.10-tuxcare.4 |
@vitejs/plugin-reactTuxCare:npm From an advisory covering 7 CVEs |
2.9.18-tuxcare.0 up to 2.9.18-tuxcare.2, plus listed versions 2.9.182.9.18-tuxcare.1 |
2.9.18-tuxcare.2 |
@vitejs/plugin-reactTuxCare:npm |
3.2.11-tuxcare.0 up to 3.2.11-tuxcare.4, plus listed versions 3.2.113.2.11-tuxcare.13.2.11-tuxcare.23.2.11-tuxcare.3 |
3.2.11-tuxcare.4 |
vitenpm |
8.0.0 up to 8.0.16 | 8.0.16 |
vitenpm |
7.0.0 up to 7.3.5 | 7.3.5 |
vitenpm |
before 6.4.3 | 6.4.3 |
vite-plusnpm |
before 0.1.24 | 0.1.24 |
viteRoot:npm |
before 5.4.21-aikido.3 | 5.4.21-aikido.38.0.14-aikido.18.0.13-aikido.16.4.1-aikido.36.4.1-aikido.45.4.21-aikido.4 |
@rootio/viteRoot:npm |
before 5.4.21-root.io.3 | 5.4.21-root.io.38.0.14-root.io.18.0.13-root.io.16.4.1-root.io.36.4.1-root.io.45.4.21-root.io.4 |
Public exploits
Links only. Every CVE stores no exploit code.
| Source | Link | Date |
|---|---|---|
| PoC in GitHub | TazmiDev/CVE-2026-53571 | 2026-07-09 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected | ||
| facts | OSV | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV, PoC in GitHub |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-53571 is a high vulnerability (CVSS 8.2) in Vitejs Vite, published June 15, 2026. Public exploit code exists. EPSS puts the chance of exploitation in the next 30 days at 0.58%, the 47th percentile. Fixed in vite 8.0.16.