漏洞详情
webpack-dev-server是一款主要用于测试的开发服务器。 webpack-dev-server 3.1.6之前版本中的lib/Server.js文件存在安全漏洞,该漏洞源于程序没有检测请求包头中的Origin字段。攻击者可通过从任意来源连接ws://127.0.0.1:8080/利用该漏洞接收WebSocket服务器发送的HMR消息。
漏洞影响
webpack-dev-server 3.1.6之前版本
漏洞分析
漏洞利用
为了省去繁琐的配置,这里以 Vue.js 脚手架里的 Webpack 模板为例。
安装:npm install -g vue-cli
创建:vue init webpack webpack-hmr
运行:cd webpack-hmr && npm run dev
运行后 Webpack 默认在 8080 端口启动 dev-server 和用于 HMR 的 WebSocket Server。在 webpack-dev-server/lib/Server.js 中可以看到 WSS 确实有对 Header 进行检查,但它检查的是 Host,而不是 Origin:
sockServer.on('connection', (conn) => { if (!conn) return; if (!this.checkHost(conn.heade