Vite框架开发服务器存在CVE-2025-30208漏洞,攻击者可通过特殊查询参数(如?raw??)绕过文件访问控制,任意读取系统文件。漏洞源于transformMiddleware函数对查询字符串尾部字符的验证缺陷。影响范围限于公开暴露的开发服务器(使用--host或server.host非localhost配置)。官方已发布修复版本(6.2.3等),临时方案建议网络隔离、防火墙限制或反向代理过滤。该漏洞类似SQL注入,需尽快升级或实施防护措施。
感觉前脚 nextjs 出现大洞,后脚 vite 也爆出 bug,搞安全的白帽黑帽直呼最近过年了 🤣
前两天还看到尤大对 nextjs 有点幸灾乐祸的感慨,谁知下一刻自己就被偷家了
现在来分析一下漏洞吧
CVE-2025-30208是一个影响Vite框架开发服务器安全的漏洞。该漏洞出现在Vite在处理带有特定查询参数(例如“?raw??”或“?import&raw??”)的文件请求时,由于内部输入验证存在缺陷,导致攻击者可以绕过文件访问控制,从而任意读取敏感文件内容。需要特别注意的是,漏洞仅对将Vite开发服务器向网络公开的应用产生影响,即使用了“--host”或在配置文件中设置了“server.host”为非localhost值的情况。
Vite开发服务器设计目标是利用@fs前缀允许直接从文件系统加载模块,同时通过配置“server.fs.allow”限制可访问的目录。然而,该漏洞产生的根本原因在于处理特殊查询参数时的输入验证缺陷。具体而言:
攻击者能够构造恶意HTTP请求,通过在URL中添加专门格式的查询参数来触发该漏洞。常见的利用示例如下:
GET /@fs/etc/passwd?raw??
/etc/passwd
文件的访问限制,从而返回文件内容。GET /@fs/C:/Windows/win.ini?raw??
这个漏洞有点像“URL 注入”版的 SQL 注入
packages/vite/src/node/server/middlewares/transform.ts
文件中。该文件中的transformMiddleware函数负责处理文件请求,并在对查询字符串尾部特殊字符的标准化时存在缺陷,未能严格校验由“?raw??”等恶意参数引入的异常字符,导致访问控制判断不充分。虽然短期内最好的应对方式是升级到官方修复版本,但许多生产环境尚难迅速完成升级,因此以下是一些非版本升级的临时加固方案:
在生产环境中可以采用最小化原则,仅在构建阶段安装调试工具,并使用沙盒化技术来增强对其他工作负载的隔离保护,以快速提高安全性