章
目
录
Vite作为一款热门的开发工具,给开发者带来了诸多便利,然而,近期发现的CVE-2025-30208安全漏洞,却给使用Vite的开发者敲响了警钟。下面,让我们详细了解一下这个漏洞。
一、漏洞详情
(一)漏洞原理
Vite在开发服务器模式下,提供了@fs
功能,原本是为了让开发者访问服务允许范围内的文件。正常情况下,如果请求的文件超出了这个允许范围,Vite应该返回“403 Restricted”,提示访问受限。但攻击者发现了一个“漏洞”,当在请求URL中添加?raw??
或?import&raw??
这样的特殊参数时,就能绕过原本的文件访问限制检查。
这是为什么呢?原来,Vite在处理请求的多个环节中,会移除类似?
的结尾分隔符,但在查询字符串的正则匹配过程中,却没有考虑到这种特殊情况,这就给攻击者可乘之机,他们利用这个缺陷,就能读取目标文件的内容。
(二)漏洞影响
在特定的配置下,攻击者可以借助这个漏洞,访问服务器上任意位置的文件。比如说,服务器上/tmp/secret.txt
这类文件,如果里面包含敏感数据,像账号密码、重要配置信息等,攻击者一旦获取到这些文件内容,就会造成严重的信息泄露。
不过,需要注意的是,只有当Vite开发服务器被显式暴露,比如使用--host
参数,或者在server.host
中配置为对外可访问时,外部攻击者才能直接发起请求读取文件。
二、受影响版本与部署方式
(一)影响版本
根据官方和社区发布的信息,存在该漏洞的Vite版本有不少。具体来说,包括= 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
。简单概括就是,在6.2.3
、6.1.2
、6.0.12
、5.4.15
、4.5.10
之前的版本都受影响。
(二)修复版本
目前,官方已经发布了修复版本,分别是6.2.3
及以上、6.1.2
、6.0.12
、5.4.15
、4.5.10
。只有升级到这些版本及更高版本,才能修复这个漏洞。
(三)受影响部署方式
如果在生产环境或者外部环境中运行Vite Dev Server,并且开启了对外网的访问权限(通过--host
或在vite.config.js
中的server.host
配置),那么就存在被攻击的风险。
(四)不受影响场景
如果只是在本地开发环境使用Vite,并且没有对外暴露端口,仅仅自己访问localhost
,那就不用担心这个漏洞。另外,已经把代码打包后交给Nginx、Tomcat、Egg等服务器代理,在生产环境中没有开启Vite Dev Server的情况,也不会受到影响。使用修复后的Vite版本自然也不会受到漏洞影响。
三、漏洞利用示例
以官方提供的示例来说明。正常情况下,当我们尝试访问http://localhost:5173/@fs/tmp/secret.txt
时,会得到如下返回结果:
403 Restricted
The request url "/tmp/secret.txt" is outside of Vite serving allow list.
这表明访问的文件超出了允许范围。但如果在请求后面加上?import&raw??
,使用命令:
curl "http://localhost:5173/@fs/tmp/secret.txt?import&raw??"
此时返回的结果就可能是该文件的内容,比如:
export default "top secret content\n"
//# sourceMappingURL=data:application/json;...
这就直观地展示了漏洞的危害。
四、修复与缓解措施
(一)升级到安全版本
最直接有效的方法就是立即将Vite升级到6.2.3
、6.1.2
、6.0.12
、5.4.15
、4.5.10
或更高版本,这样就能利用官方的修复来保障安全。
(二)临时措施
如果因为某些原因暂时无法升级,也可以采取一些临时措施。比如,不要在生产环境开放Vite Dev Server对外访问,只在内网或者本地使用;在防火墙或者Nginx层设置IP访问限制,只允许可信的IP访问;在代理层对包含?raw??
/?import&raw??
字样的请求进行拦截,阻止直接访问Vite Dev Server。
五、漏洞事件时间线(示例)
- 2025-03-24:CVE-2025-30208在NVD上公开,大家开始关注这个漏洞。
- 2025-03-25:社区和官方经过研究确认了受影响的版本以及相应的修补方式。
- 2025-03-26:Vite发布多条Commit进行修复,并发布了对应的安全公告。
- 2025-03-27:修复版本(
6.2.3
、6.1.2
等)正式上线,并通知用户进行升级。
六、总结
CVE-2025-30208这个漏洞提醒我们,即使是用于开发调试的工具,安全控制也至关重要。在生产环境中,尽量避免直接使用Vite Dev Server。如果必须在生产环境使用,一定要升级到官方修复版本。对于内网或测试场景,也要谨慎设置,确保只在可信网络中启用对外访问,或者给Vite Dev Server配置严格的访问限制。如果只是在本地开发环境使用Vite,且线上没有暴露Vite Dev Server,那么就不用担心这个漏洞。