{"schema_version":"1.9.0","id":"CVE-2024-23331","published":"2024-01-19T19:43:17.404Z","modified":"2026-08-12T03:51:35.283342577Z","aliases":["GHSA-c24v-8rfc-w8vw"],"related":["CGA-rhqx-9rr2-h824","openSUSE-SU-2025:14663-1"],"summary":"Vite dev server option `server.fs.deny` can be bypassed when hosted on case-insensitive filesystem","details":"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.","affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/vitejs/vite","events":[{"introduced":"075128a8dd0a2680540179dad2277a797f793199"},{"fixed":"3441f120fbd44b9c408706840647b4c8248b48fb"},{"introduced":"b8c625cec4db938032ad754c7095bd246a4698ee"},{"fixed":"7e3a86638e1585702e7fb8eaf8ede43740a6a44e"},{"introduced":"566d4c7bb51cf56550a5374ee46e1e1cbea1cf1f"},{"fixed":"d0360c12476ccc61e9e78c500ed1bd74ed65a2cf"},{"introduced":"0c3125833033fec4356ab4e90e806e02e8644c40"},{"fixed":"ee81e196769c102a6b1bf30f8444ccde236e71d5"},{"fixed":"91641c4da0a011d4c5352e88fc68389d4e1289a5"}],"database_specific":{"cpe":"cpe:2.3:a:vitejs:vite:*:*:*:*:*:node.js:*:*","extracted_events":[{"introduced":"2.7.0"},{"fixed":"2.9.17"},{"introduced":"3.0.0"},{"fixed":"3.2.8"},{"introduced":"4.0.0"},{"fixed":"4.5.2"},{"introduced":"5.0.0"},{"fixed":"5.0.12"}],"source":["CPE_RANGE","REFERENCES"]}}],"versions":["v2.9.16","v3.2.7","v4.5.1","v5.0.11","v5.0.10","v5.0.9","create-vite@5.1.0","v5.0.8","v5.0.7","v5.0.6","v5.0.5","v4.4.11","v5.0.4","v5.0.3","plugin-legacy@5.2.0","v5.0.2","plugin-legacy@5.1.0","v5.0.1","create-vite@5.0.0","plugin-legacy@5.0.0","v5.0.0","v4.5.0","v4.4.10","v4.4.9","v4.4.8","v4.4.7","v4.4.6","create-vite@4.4.1","plugin-legacy@4.1.1","v4.4.5","v4.4.4","v4.4.3","v4.4.2","v4.4.1","create-vite@4.4.0","plugin-legacy@4.1.0","v4.4.0","v4.4.0-beta.4","v4.4.0-beta.3","v4.4.0-beta.2","plugin-legacy@4.0.5","v4.4.0-beta.1","v4.4.0-beta.0","create-vite@4.3.2","v4.3.9","create-vite@2.9.5","v3.2.6","v4.0.4","v4.1.4","plugin-legacy@4.0.4","v4.3.8","v4.3.7","v4.3.6","v4.3.5","v4.3.4","v4.3.3","create-vite@4.3.1","plugin-legacy@4.0.3","v4.3.2","v4.3.1","create-vite@4.3.0","v4.3.0","v4.3.0-beta.8","v3.2.5","v4.2.1","v4.3.0-beta.7","v4.3.0-beta.6","v4.3.0-beta.5","v4.3.0-beta.4","v4.3.0-beta.3","create-vite@4.3.0-beta.0","v4.3.0-beta.2","v4.3.0-beta.1","v4.3.0-beta.0","create-vite@4.2.0","plugin-legacy@4.0.2","v4.2.0","v4.2.0-beta.2","create-vite@4.2.0-beta.1","create-vite@4.2.0-beta.0","v4.2.0-beta.1","v4.2.0-beta.0","v4.1.3","v4.1.2","v4.1.1","plugin-legacy@4.0.1","create-vite@4.1.0","plugin-legacy@4.0.0","v4.1.0","v4.1.0-beta.2","create-vite@4.1.0-beta.0","v4.1.0-beta.1","v4.1.0-beta.0","v4.0.3","v4.0.2","v4.0.1","create-vite@4.0.0","plugin-legacy@3.0.1","plugin-legacy@3.0.0","v4.0.0","v3.2.4","create-vite@3.2.1","plugin-legacy@2.3.1","plugin-vue-jsx@2.1.1","v3.2.3","v3.2.2","v3.2.1","create-vite@3.2.0","plugin-legacy@2.3.0","plugin-react@2.2.0","plugin-vue-jsx@2.1.0","plugin-vue@3.2.0","v3.2.0","v3.2.0-beta.4","v3.2.0-beta.3","v3.2.0-beta.2","v3.2.0-beta.1","plugin-legacy@2.3.0-beta.0","plugin-react@2.2.0-beta.0","plugin-vue-jsx@2.1.0-beta.0","plugin-vue@3.2.0-beta.0","v3.2.0-beta.0","v3.1.3","plugin-legacy@2.2.0","v3.1.2","v3.1.1","create-vite@3.1.0","plugin-legacy@2.1.0","plugin-react@2.1.0","plugin-vue@3.1.0","v3.1.0","v3.1.0-beta.2","plugin-vue-jsx@2.0.1","plugin-legacy@2.1.0-beta.0","plugin-vue@3.1.0-beta.0","plugin-react@2.1.0-beta.0","v3.1.0-beta.1","v3.1.0-beta.0","v3.0.9","v3.0.8","create-vite@3.0.2","plugin-vue@3.0.3","v3.0.7","plugin-vue@2.3.4","v2.9.15","create-vite@3.0.1","plugin-legacy@2.0.1","plugin-react@2.0.1","plugin-vue@3.0.2","v3.0.6","v3.0.5","v3.0.4","v3.0.3","v2.9.14","v3.0.2","plugin-vue@3.0.1","v3.0.1","create-vite@3.0.0","plugin-legacy@2.0.0","plugin-react@2.0.0","plugin-vue-jsx@2.0.0","plugin-vue@3.0.0","v3.0.0","v2.9.13","v2.9.12","v2.9.11","v2.9.10","create-vite@2.9.4","plugin-vue@2.3.3","v2.9.9","plugin-vue@2.3.2","v2.9.8","create-vite@2.9.3","plugin-react@1.3.2","plugin-legacy@1.8.2","v2.9.7","v2.9.6","create-vite@2.9.2","v2.9.5","v2.9.4","v2.9.3","create-vite@2.9.1","plugin-legacy@1.8.1","plugin-react@1.3.1","plugin-vue-jsx@1.3.10","v2.9.2","v2.9.1","plugin-vue@2.3.1","create-vite@2.9.0","plugin-legacy@1.8.0","plugin-react@1.3.0","plugin-vue-jsx@1.3.9","plugin-vue@2.3.0","v2.9.0","v2.9.0-beta.11","v2.9.0-beta.10","v2.9.0-beta.9","v2.9.0-beta.8","v2.9.0-beta.7","plugin-vue@2.3.0-beta.0","v2.9.0-beta.6","v2.9.0-beta.5","v2.9.0-beta.4","v2.9.0-beta.3","v2.9.0-beta.2","v2.9.0-beta.1","v2.9.0-beta.0","v2.8.6","plugin-vue-jsx@1.3.8","plugin-vue@2.2.4","plugin-vue@2.2.3","v2.8.5","plugin-vue@2.2.2","plugin-vue@2.2.1","v2.8.4","v2.8.3","v2.8.2","plugin-vue-jsx@1.3.7","plugin-vue-jsx@1.3.6","v2.8.1","create-vite@2.8.0","plugin-legacy@1.7.0","plugin-react@1.2.0","plugin-vue-jsx@1.3.4","plugin-vue@2.2.0","v2.8.0","v2.8.0-beta.7","v2.8.0-beta.6","v2.8.0-beta.5","v2.8.0-beta.4","plugin-vue@2.1.0","v2.8.0-beta.3","v2.8.0-beta.2","v2.8.0-beta.1","v2.8.0-beta.0","plugin-react@1.1.4","v2.7.9","v2.7.8","v2.7.7","v2.7.6","v2.7.5","v2.7.4","plugin-vue-jsx@1.3.3","v2.7.3","plugin-vue@2.0.1","plugin-react@1.1.3","create-vite@2.7.2","plugin-react@1.1.2","v2.7.2","plugin-vue-jsx@1.3.2","create-vite@2.7.1","plugin-vue@2.0.0","v2.7.1","create-vite@2.7.0","plugin-legacy@1.6.4","plugin-react@1.1.1","plugin-vue-jsx@1.3.1","plugin-vue@1.10.2","v2.7.0"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2024-23331.json"}}],"references":[{"type":"WEB","url":"https://vitejs.dev/config/server-options.html#server-fs-deny"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/23xxx/CVE-2024-23331.json"},{"type":"ADVISORY","url":"https://github.com/vitejs/vite/security/advisories/GHSA-c24v-8rfc-w8vw"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2024-23331"},{"type":"FIX","url":"https://github.com/vitejs/vite/commit/91641c4da0a011d4c5352e88fc68389d4e1289a5"}],"database_specific":{"cna_assigner":"GitHub_M","cwe_ids":["CWE-178","CWE-200","CWE-284"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/23xxx/CVE-2024-23331.json"},"severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N"}]}