Eavan's Blog LogoEavan's Blog
TAGSFRIENDSBOOKSSEARCH
TAGS
FRIENDS
BOOKS
SEARCH
深色
Eavan's Blog LogoEAVAN
·

心如止水,字如清风

流水不争先 ·

简析 vite 最新漏洞 CVE-2025-30208

03/28/2025
3 分钟
目录

标签

相关

参考

精选

AI 摘要

Vite框架开发服务器存在CVE-2025-30208漏洞,攻击者可通过特殊查询参数(如?raw??)绕过文件访问控制,任意读取系统文件。漏洞源于transformMiddleware函数对查询字符串尾部字符的验证缺陷。影响范围限于公开暴露的开发服务器(使用--host或server.host非localhost配置)。官方已发布修复版本(6.2.3等),临时方案建议网络隔离、防火墙限制或反向代理过滤。该漏洞类似SQL注入,需尽快升级或实施防护措施。

9.15s
~2512 tokens

感觉前脚 nextjs 出现大洞,后脚 vite 也爆出 bug,搞安全的白帽黑帽直呼最近过年了 🤣

前两天还看到尤大对 nextjs 有点幸灾乐祸的感慨,谁知下一刻自己就被偷家了

现在来分析一下漏洞吧

概述

CVE-2025-30208是一个影响Vite框架开发服务器安全的漏洞。该漏洞出现在Vite在处理带有特定查询参数(例如“?raw??”或“?import&raw??”)的文件请求时,由于内部输入验证存在缺陷,导致攻击者可以绕过文件访问控制,从而任意读取敏感文件内容。需要特别注意的是,漏洞仅对将Vite开发服务器向网络公开的应用产生影响,即使用了“--host”或在配置文件中设置了“server.host”为非localhost值的情况。

漏洞根本原因

Vite开发服务器设计目标是利用@fs前缀允许直接从文件系统加载模块,同时通过配置“server.fs.allow”限制可访问的目录。然而,该漏洞产生的根本原因在于处理特殊查询参数时的输入验证缺陷。具体而言:

  • 当请求URL中含有例如“?raw??”或“?import&raw??”时,Vite内部的transformMiddleware函数在解析查询字符串时,会错误地忽略尾部多余的分隔符(例如连续的问号“?”)
  • 这一处理过程中未能严格校验查询参数的格式,导致原有基于允许列表的访问限制失效,进而使得本应被拒绝的文件被错误地返回。

漏洞利用方式

攻击者能够构造恶意HTTP请求,通过在URL中添加专门格式的查询参数来触发该漏洞。常见的利用示例如下:

  • Linux系统:
    GET /@fs/etc/passwd?raw??
    该请求通过附加“?raw??”参数,使得Vite绕过对/etc/passwd文件的访问限制,从而返回文件内容。
  • Windows系统:
    GET /@fs/C:/Windows/win.ini?raw??
    同理,构造包含“?raw??”参数的请求即可获取目标文件的内容。

这个漏洞有点像“URL 注入”版的 SQL 注入

代码缺陷和补丁说明

github.com
GitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.
网站图标github.com
预览图片
  • 代码位置与缺陷描述:
    漏洞主要出现在Vite项目的packages/vite/src/node/server/middlewares/transform.ts文件中。该文件中的transformMiddleware函数负责处理文件请求,并在对查询字符串尾部特殊字符的标准化时存在缺陷,未能严格校验由“?raw??”等恶意参数引入的异常字符,导致访问控制判断不充分。
  • 补丁提交:
    根据公开安全分析和官方说明,漏洞补丁的提交commit hash为 网站图标f234b57。该补丁在Vite修复版本6.2.3、6.1.2、6.0.12、5.4.15和4.5.10中均有体现

生产环境防护与临时加强方案

虽然短期内最好的应对方式是升级到官方修复版本,但许多生产环境尚难迅速完成升级,因此以下是一些非版本升级的临时加固方案:

网络隔离与访问限制

  • 禁止直接暴露:
    建议尽量避免将开发服务器通过“--host”或在配置中将“server.host”设置为公共IP直接暴露到公网,改为绑定在localhost或内部专用网络上。
  • 防火墙规则配置:
    通过防火墙或网络ACL规则屏蔽开发服务器常用端口(例如默认端口5173)的公网访问,限制只有来自可信网络的流量可以访问。
  • 反向代理策略:
    部署反向代理,建立白名单机制和应用层验证,对进入开发服务器的请求进行过滤,只允许经过验证的请求转发。


结论

在生产环境中可以采用最小化原则,仅在构建阶段安装调试工具,并使用沙盒化技术来增强对其他工作负载的隔离保护,以快速提高安全性

如未标记非原创,转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,未经站长允许不得对文章文字内容进行修改演绎,不得用于商业目的。
本文采用CC BY-NC-SA 4.0 - 非商业性使用 - 相同方式共享 4.0 国际进行许可。