Vite 开发服务器存在任意文件读取漏洞
漏洞描述
Vite 是一个现代前端构建工具,用于快速启动和开发 Vue、React 等应用。在受影响版本中,由于对 @fs
路径的访问控制不严,攻击者可通过构造特殊查询参数(如 ?raw??
或 ?import&raw??
)绕过安全限制,读取服务器上的任意文件(如 /etc/passwd
、项目源码、配置文件等)
影响范围
-
受影响版本:
-
Vite ≤ 6.2.2(6.x 分支)
-
Vite ≤ 5.4.14(5.x 分支)
-
Vite ≤ 4.5.9(4.x 分支)
-
受影响场景:
-
开发模式下显式配置
server.host: '0.0.0.0'
或启动时使用--host
参数,将开发服务器暴露到公网。
-
-
fofa搜索语法
(header="vite" || body="/@vite/client" || body="__vite_ping")
&& (port="3000" || port="5173" || port="8080" || port="4173")
复现过程
我们尝试像CNVD-2022-44615一样访问/@fs/etc/passwd
,发现已经被403禁止访问了
在后面继续拼接?raw??
在后面拼接?import&raw??,同样也可以绕过
漏洞修复
升级至以下安全版本:
对于Vite = 6.2.0:升级到 6.2.2 以上版本
对于Vite = 6.1.0:升级到 6.1.1 以上版本
对于Vite = 6.0.0:升级到 6.0.11 以上版本
对于Vite = 5.0.0:升级到 5.4.14 以上版本
对于Vite <= 4.5.9:升级到 4.5.9 以上版本
临时解决方案:
禁止在生产环境开放 Vite Dev Server,仅限本地或内网使用。
在防火墙或代理层配置 IP 白名单,限制仅可信地址访问 Dev Server。
在代理层拦截含 /@fs/
、?raw
、?import&raw
的请求,防止绕过访问本地文件系统。