漏洞描述
在Vite的开发服务器(dev server)模式下,由于路径处理存在缺陷,攻击者可以构造特殊的请求路径,绕过正常的资源服务规则,从而读取项目根目录之外的任意文件。
漏洞源于Vite在处理URL查询参数时的逻辑缺陷。当请求路径包含特定参数(如?raw??或?import&raw??)时,Vite对URL尾部分隔符(如?和&)的正则匹配不严格,导致安全检查被绕过。例如,攻击者可构造类似/@fs/etc/passwd?raw??的请求,利用@fs机制(本用于访问项目允许列表内的文件)读取系统敏感文件官方修复方案通过正则表达式/[?&]+$/移除URL末尾的冗余分隔符,从而阻断绕过路径。
影响版本
Vite: < 5.0.0-beta.2
Vite: < 4.4.10
Vite: < 4.3.9
Vite: < 4.2.5
Vite: < 4.1.5
Vite: < 4.0.5
Vite: <= 3.0.x (所有版本均受影响)
漏洞浮现
# Linux示例
http://目标IP:端口/@fs/etc/passwd?raw??# Windows示例
http://目标IP:端口/@fs/c://windows/win.ini?import&raw??