CVE-2024-23331
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 vite@5.0.12, vite@4.5.2, vite@3.2.8, and vite@2.9.17. 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 vite@5.0.12, vite@4.5.2, vite@3.2.8, and vite@2.9.17. 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 vite@5.0.12, vite@4.5.2, vite@3.2.8, and vite@2.9.17. 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 vite@5.0.12, vite@4.5.2, vite@3.2.8, vite@2.9.17
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 vite@5.0.12, vite@4.5.2, vite@3.2.8, and vite@2.9.17. 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 vite@5.0.12, vite@4.5.2, vite@3.2.8, and vite@2.9.17. 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-11
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 vite@5.0.12, vite@4.5.2, vite@3.2.8, vite@2.9.17
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-1784683083No 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-1789031855No 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-1792163424No 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-1792225953No 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-1No 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 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 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 4 CVEs | 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 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 |
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 From an advisory covering 27 CVEs | before 0.7.0.4.git142.862ef23-1.1 | 0.7.0.4.git142.862ef23-1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected | ||
| facts | OSV | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
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.
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/security-announce@lists.opensuse.org/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