本周最新的、复现超简单的Vite任意文件读取漏洞(CVE-2025-30208)
本周最新的、复现超简单的Vite任意文件读取漏洞(CVE-2025-30208)
原创 a1batr0ss 天翁安全 2025-03-28 18:16
免责声明:
本公众号所发布的全部内容,包括但不限于技术文章、POC脚本、漏洞利用工具及相关测试环境,均仅限于合法的网络安全学习、研究和教学用途。所有人在使用上述内容时,应严格遵守中华人民共和国相关法律法规以及道德伦理要求。未经明确的官方书面授权,严禁将公众号内的任何内容用于未经授权的渗透测试、漏洞利用或攻击行为。 所有人仅可在自己合法拥有或管理的系统环境中进行本地漏洞复现与安全测试,或用于具有明确授权的合法渗透测试项目。所有人不得以任何形式利用公众号内提供的内容从事非法、侵权或其他不当活动。 如因违反上述规定或不当使用本公众号提供的任何内容,造成的一切法律责任、经济损失、纠纷及其他任何形式的不利后果,均由相关成员自行承担,与本公众号无任何关联。
漏洞介绍
Vite 是一个由 Evan You(Vue.js 作者)开发的前端构建工具,主打快速启动和高效构建
。它利用原生 ES 模块特性,在开发环境下实现即时模块热更新(HMR)
,几乎零延迟启动项目;在生产环境下则基于 Rollup 进行打包,兼顾速度与优化。Vite 支持多种框架(如 Vue、React、Svelte 等),配置简单、插件体系灵活,是现代前端开发的高效利器。
Vite 是一个前端开发工具提供者,其在 6.2.3、6.1.2、6.0.12、5.4.15 和 4.5.10 之前的版本中存在一个安全漏洞。该漏洞源于 @fs
原本用于拒绝访问 Vite 允许列表之外的文件,但通过在 URL 中添加 ?raw??
或 ?import&raw??
,可以绕过这一限制并返回文件内容(如果文件存在)。绕过的原因是在多个处理环节中会移除类似 ?
的结尾分隔符,而正则表达式在解析查询字符串时未考虑这一点,导致限制失效。攻击者可借此漏洞将任意文件内容返回到浏览器。只有那些通过 –host 参数或 server.host 配置显式暴露 Vite 开发服务器到网络的应用会受到影响。
该问题已在 6.2.3、6.1.2、6.0.12、5.4.15 和 4.5.10 版本中修复。
漏洞条件
•
= 6.2.0:<= 6.2.2
•
= 6.1.0:<= 6.1.1
•
= 6.0.0:<= 6.0.11
•
= 5.0.0:<= 5.4.14
•
<= 4.5.9
环境搭建
docker-compose up -d
访问
http://your-ip:5173
即可
漏洞对比
Vite 默认只允许访问项目根目录(root
)下的文件。但是在某些高级用法中,开发者可能需要访问项目根目录之外的文件,比如使用本地绝对路径,这时就用到了 @fs
。
在几年前的CNVD-2022-44615(Vite任意文件读取漏洞)中,访问/@fs/etc/passwd
即可读取到/etc/passwd
文件。
漏洞复现
我们尝试像CNVD-2022-44615一样访问/@fs/etc/passwd
,发现已经被403禁止访问了
但我们尝试在/@fs/etc/passwd
后添加?raw??
时,发现绕过了限制成功读取到了/etc/passwd
文件
在/@fs/etc/passwd
后添加?import&raw??
时,也可以绕过
漏洞修复
临时解决方案:
•
禁止在生产环境开放 Vite Dev Server,仅限本地或内网使用。
•
在防火墙或代理层配置 IP 白名单,限制仅可信地址访问 Dev Server。
•
在代理层拦截含 /@fs/
、?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 以上版本
知识星球
漏洞POC及复现环境可在知识星球内自行领取
星球不定期更新市面上最新的热点漏洞及复现环境,欢迎加入交流和学习:
市面热点漏洞,与deepseek本地部署
息息相关的:Ollama任意文件读取漏洞(CVE-2024-37032)复现环境及POC
本月最新披露
漏洞:Label Studio前台XSS漏洞(CVE-2025-25296)复现及漏洞环境
一些比较新奇有趣的漏洞分享:Windows拖拽图标
而触发的漏洞
知识星球限时新人立减券发放