CVE-2024-23331
Vite dev server option `server.fs.deny` can be bypassed when hosted on case-insensitive filesystem
CVE-2024-23331 is a high vulnerability (CVSS 7.5) in Vitejs Vite, published January 19, 2024. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.78%, the 56th percentile. Fixed in vite 2.9.17.
Vite is a frontend tooling framework for javascript. The Vite dev server option server.fs.deny can be bypassed on case-insensitive file systems using case-augmented versions of filenames. Notably this affects servers hosted on Windows. This bypass is similar to CVE-2023-34092 -- with surface area reduced to hosts having case-insensitive filesystems. Since picomatch defaults to case-sensitive glob matching, but the file server doesn't discriminate; a blacklist bypass is possible. By requesting raw filesystem paths using augmented casing, the matcher derived from config.server.fs.deny fails to block access to sensitive files. This issue has been addressed in [email protected], [email protected], [email protected], and [email protected]. Users are advised to upgrade. Users unable to upgrade should restrict access to dev servers.
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
7.5
Vite dev server option `server.fs.deny` can be bypassed when hosted on case-insensitive filesystem
Vite is a frontend tooling framework for javascript. The Vite dev server option server.fs.deny can be bypassed on case-insensitive file systems using case-augmented versions of filenames. Notably this affects servers hosted on Windows. This bypass is similar to CVE-2023-34092 -- with surface area reduced to hosts having case-insensitive filesystems. Since picomatch defaults to case-sensitive glob matching, but the file server doesn't discriminate; a blacklist bypass is possible. By requesting raw filesystem paths using augmented casing, the matcher derived from config.server.fs.deny fails to block access to sensitive files. This issue has been addressed in [email protected], [email protected], [email protected], and [email protected]. Users are advised to upgrade. Users unable to upgrade should restrict access to dev servers.
- Record
CVE-2024-23331- 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-178, CWE-200, CWE-284
- Updated
- 2026-11-02
EUVDEUVD-2024-0322
7.5
Vite is a frontend tooling framework for javascript. The Vite dev server option server.fs.deny can be bypassed on case-insensitive file systems using case-augmented versions of filenames. Notably this affects servers hosted on Windows. This bypass is similar to CVE-2023-34092 -- with surface area reduced to hosts having case-insensitive filesystems. Since picomatch defaults to case-sensitive glob matching, but the file server doesn't discriminate; a blacklist bypass is possible. By requesting raw filesystem paths using augmented casing, the matcher derived from config.server.fs.deny fails to block access to sensitive files. This issue has been addressed in [email protected], [email protected], [email protected], and [email protected]. Users are advised to upgrade. Users unable to upgrade should restrict access to dev servers.
- Record
EUVD-2024-0322- 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 - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-c24v-8rfc-w8vw
7.5
Vite dev server option `server.fs.deny` can be bypassed when hosted on case-insensitive filesystem
Summary
Vite dev server option server.fs.deny can be bypassed on case-insensitive file systems using case-augmented versions of filenames. Notably this affects servers hosted on Windows.
This bypass is similar to https://nvd.nist.gov/vuln/detail/CVE-2023-34092 -- with surface area reduced to hosts having case-insensitive filesystems.
Patches
Fixed in [email protected], [email protected], [email protected], [email protected]
Details
Since picomatch defaults to case-sensitive glob matching, but the file server doesn't discriminate; a blacklist bypass is possible.
See picomatch usage, where nocase is defaulted to false: https://github.com/vitejs/vite/blob/v5.1.0-beta.1/packages/vite/src/node/server/index.ts#L632
By requesting raw filesystem paths using augmented casing, the matcher derived from config.server.fs.deny fails to block access to sensitive files.
PoC
Setup
- Created vanilla Vite project using
npm create vite@lateston a Standard Azure hosted Windows 10 instance.npm run dev -- --host 0.0.0.0- Publicly accessible for the time being here: http://20.12.242.81:5173/
- Created dummy secret files, e.g.
custom.secretandproduction.pem - Populated
vite.config.jswith
export default { server: { fs: { deny: ['.env', '.env.*', '*.{crt,pem}', 'custom.secret'] } } }
Reproduction
curl -s http://20.12.242.81:5173/@fs//- Descriptive error page reveals absolute filesystem path to project root
curl -s http://20.12.242.81:5173/@fs/C:/Users/darbonzo/Desktop/vite-project/vite.config.js- Discoverable configuration file reveals locations of secrets
curl -s http://20.12.242.81:5173/@fs/C:/Users/darbonzo/Desktop/vite-project/custom.sEcReT- Secrets are directly accessible using case-augmented version of filename
Proof
Impact
Who
- Users with exposed dev servers on environments with case-insensitive filesystems
What
- Files protected by
server.fs.denyare both discoverable, and accessible
- Record
GHSA-c24v-8rfc-w8vw- 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-178, CWE-200, CWE-284
- Updated
- 2026-11-02
NVD
7.5
Vite is a frontend tooling framework for javascript. The Vite dev server option server.fs.deny can be bypassed on case-insensitive file systems using case-augmented versions of filenames. Notably this affects servers hosted on Windows. This bypass is similar to CVE-2023-34092 -- with surface area reduced to hosts having case-insensitive filesystems. Since picomatch defaults to case-sensitive glob matching, but the file server doesn't discriminate; a blacklist bypass is possible. By requesting raw filesystem paths using augmented casing, the matcher derived from config.server.fs.deny fails to block access to sensitive files. This issue has been addressed in [email protected], [email protected], [email protected], and [email protected]. Users are advised to upgrade. Users unable to upgrade should restrict access to dev servers.
- Record
CVE-2024-23331- 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-178, CWE-200, CWE-284
- Updated
- 2026-11-02
OSV
7.5
Vite dev server option `server.fs.deny` can be bypassed when hosted on case-insensitive filesystem
Vite is a frontend tooling framework for javascript. The Vite dev server option server.fs.deny can be bypassed on case-insensitive file systems using case-augmented versions of filenames. Notably this affects servers hosted on Windows. This bypass is similar to CVE-2023-34092 -- with surface area reduced to hosts having case-insensitive filesystems. Since picomatch defaults to case-sensitive glob matching, but the file server doesn't discriminate; a blacklist bypass is possible. By requesting raw filesystem paths using augmented casing, the matcher derived from config.server.fs.deny fails to block access to sensitive files. This issue has been addressed in [email protected], [email protected], [email protected], and [email protected]. Users are advised to upgrade. Users unable to upgrade should restrict access to dev servers.
- Record
CVE-2024-23331- 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-178, CWE-200, CWE-284
- Updated
- 2026-11-02
OSVGHSA-c24v-8rfc-w8vw
7.5
Vite dev server option `server.fs.deny` can be bypassed when hosted on case-insensitive filesystem
Summary
Vite dev server option server.fs.deny can be bypassed on case-insensitive file systems using case-augmented versions of filenames. Notably this affects servers hosted on Windows.
This bypass is similar to https://nvd.nist.gov/vuln/detail/CVE-2023-34092 -- with surface area reduced to hosts having case-insensitive filesystems.
Patches
Fixed in [email protected], [email protected], [email protected], [email protected]
Details
Since picomatch defaults to case-sensitive glob matching, but the file server doesn't discriminate; a blacklist bypass is possible.
See picomatch usage, where nocase is defaulted to false: https://github.com/vitejs/vite/blob/v5.1.0-beta.1/packages/vite/src/node/server/index.ts#L632
By requesting raw filesystem paths using augmented casing, the matcher derived from config.server.fs.deny fails to block access to sensitive files.
PoC
Setup
- Created vanilla Vite project using
npm create vite@lateston a Standard Azure hosted Windows 10 instance.npm run dev -- --host 0.0.0.0- Publicly accessible for the time being here: http://20.12.242.81:5173/
- Created dummy secret files, e.g.
custom.secretandproduction.pem - Populated
vite.config.jswith
export default { server: { fs: { deny: ['.env', '.env.*', '*.{crt,pem}', 'custom.secret'] } } }
Reproduction
curl -s http://20.12.242.81:5173/@fs//- Descriptive error page reveals absolute filesystem path to project root
curl -s http://20.12.242.81:5173/@fs/C:/Users/darbonzo/Desktop/vite-project/vite.config.js- Discoverable configuration file reveals locations of secrets
curl -s http://20.12.242.81:5173/@fs/C:/Users/darbonzo/Desktop/vite-project/custom.sEcReT- Secrets are directly accessible using case-augmented version of filename
Proof
Impact
Who
- Users with exposed dev servers on environments with case-insensitive filesystems
What
- Files protected by
server.fs.denyare both discoverable, and accessible
- Record
GHSA-c24v-8rfc-w8vw- 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-178, CWE-200, CWE-284
- Updated
- 2026-11-02
Show 5 moreShow less
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-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-1792163424 No score
TuxCare security update for vite (4 CVEs)
TuxCare rebuilt vite to address 4 CVEs. Fixed in 4.5.0-tuxcare.4.
- Record
CLSA-2026-1792163424- 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
OSVopenSUSE-SU-2025:14663-1 No score
velociraptor-0.7.0.4.git142.862ef23-1.1 on GA media
These are all security issues fixed in the velociraptor-0.7.0.4.git142.862ef23-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2025:14663-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
vitenpm |
2.7.0 to 2.9.16 | 2.9.17 |
vitenpm |
3.0.0 to 3.2.7 | 3.2.8 |
vitenpm |
4.0.0 to 4.5.1 | 4.5.2 |
vitenpm |
5.0.0 to 5.0.11 | 5.0.12 |
viteTuxCare:npm |
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 |
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 |
4.5.0-tuxcare.0 up to 4.5.0-tuxcare.4, plus listed versions 4.5.04.5.0-tuxcare.14.5.0-tuxcare.24.5.0-tuxcare.3 |
4.5.0-tuxcare.4 |
@vitejs/plugin-reactTuxCare:npm |
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 |
vitenpm |
2.7.0 up to 2.9.17 | 2.9.17 |
vitenpm |
3.0.0 up to 3.2.8 | 3.2.8 |
vitenpm |
4.0.0 up to 4.5.2 | 4.5.2 |
vitenpm |
5.0.0 up to 5.0.12 | 5.0.12 |
velociraptoropenSUSE:Tumbleweed |
before 0.7.0.4.git142.862ef23-1.1 | 0.7.0.4.git142.862ef23-1.1 |
History
| When | Changed | Sources |
|---|---|---|
| 2026-11-02 | created | CVE List, EUVD, GitHub Advisories, NVD, OSV |
References
github.com/vitejs/vite/security/advisories/GHSA-c24v-8rfc-w8vw
github.com/vitejs/vite/commit/91641c4da0a011d4c5352e88fc68389d4e1289a5
vitejs.dev/config/server-options.html
nvd.nist.gov/vuln/detail/CVE-2023-34092
nvd.nist.gov/vuln/detail/CVE-2024-23331
github.com/vitejs/vite/commit/0cd769c279724cf27934b1270fbdd45d68217691
Show 33 moreShow less
github.com/vitejs/vite/commit/a26c87d20f9af306b5ce3ff1648be7fa5146c278
github.com/vitejs/vite/commit/eeec23bbc9d476c54a3a6d36e78455867185a7cb
github.com/advisories/GHSA-c24v-8rfc-w8vw
github.com/CVEProject/cvelistV5/tree/main/cves/2024/23xxx/CVE-2024-23331.json
github.com/vitejs/vite
lists.opensuse.org/archives/list/[email protected]/thread/IL7QOYRPFRGRS6UKU6ZYHI76FWFFUJNK
suse.com/security/cve/CVE-2023-1732
suse.com/security/cve/CVE-2023-44270
suse.com/security/cve/CVE-2023-45133
suse.com/security/cve/CVE-2023-45683
suse.com/security/cve/CVE-2023-46234
suse.com/security/cve/CVE-2024-21538
suse.com/security/cve/CVE-2024-23331
suse.com/security/cve/CVE-2024-24786
suse.com/security/cve/CVE-2024-28180
suse.com/security/cve/CVE-2024-31207
suse.com/security/cve/CVE-2024-37298
suse.com/security/cve/CVE-2024-4067
suse.com/security/cve/CVE-2024-4068
suse.com/security/cve/CVE-2024-42459
suse.com/security/cve/CVE-2024-42460
suse.com/security/cve/CVE-2024-42461
suse.com/security/cve/CVE-2024-45296
suse.com/security/cve/CVE-2024-45338
suse.com/security/cve/CVE-2024-45811
suse.com/security/cve/CVE-2024-45812
suse.com/security/cve/CVE-2024-47068
suse.com/security/cve/CVE-2024-47875
suse.com/security/cve/CVE-2024-48948
suse.com/security/cve/CVE-2024-48949
suse.com/security/cve/CVE-2024-51744
suse.com/security/cve/CVE-2024-55565
suse.com/security/cve/CVE-2024-6104