IPBUF安全漏洞报告
English
CVE-2026-45736 CVSS 4.4 中危

CVE-2026-45736 ws库未初始化内存泄露漏洞

披露日期: 2026-05-15

漏洞信息

漏洞编号
CVE-2026-45736
漏洞类型
信息泄露
CVSS评分
4.4 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
ws

相关标签

信息泄露内存安全Node.jsWebSocketCVE-2026-45736

漏洞概述

Node.js的WebSocket库ws在8.20.1之前的版本中存在安全漏洞。当调用websocket.close()方法并传入TypedArray作为reason参数时,由于实现缺陷,可能导致未初始化的内存被泄露给攻击者。该漏洞CVSS评分为4.4,属于中危漏洞,主要影响数据的机密性。

技术细节

该漏洞位于ws库处理WebSocket连接关闭逻辑的代码中。根据WebSocket协议,关闭连接时可以携带状态码和原因。在受影响的版本中,当开发者在调用close()方法时,错误地将TypedArray(如Uint8Array)对象作为reason参数传入,底层代码未能正确处理该类型数据的内存边界。这导致在构建关闭帧时,除了包含TypedArray的数据外,还可能将紧邻的未初始化内存区域一并发送。由于CVSS向量显示需要高权限(PR:H),攻击者通常需要能够影响服务器端的WebSocket行为或诱导高权限客户端执行特定的关闭操作,从而在接收端捕获并分析这些泄露的内存数据,可能导致敏感信息泄露。

攻击链分析

STEP 1
侦察
攻击者确认目标应用使用了易受攻击的ws库版本(< 8.20.1)。
STEP 2
建立连接
攻击者与目标WebSocket服务建立正常的连接通道。
STEP 3
触发漏洞
攻击者利用高权限上下文或诱导服务端逻辑,触发websocket.close()方法,并精心构造TypedArray作为reason参数。
STEP 4
信息泄露
攻击者接收服务端返回的关闭帧,分析其中包含的数据,提取未初始化内存中的敏感信息。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
const WebSocket = require('ws'); // Vulnerable Server setup const wss = new WebSocket.Server({ port: 8080 }); wss.on('connection', ws => { // Simulate a scenario where data is prepared in a TypedArray // and passed as a reason to close(). // In vulnerable versions (< 8.20.1), this may leak uninitialized memory. const reasonBuffer = new Uint8Array([0x03, 0xe8]); // Normal close code bytes // Note: The vulnerability specifically triggers when the implementation // fails to handle the TypedArray correctly, reading beyond intended bounds. ws.close(1000, reasonBuffer); }); console.log('Server running on port 8080');

影响范围

ws < 8.20.1

防御指南

临时缓解措施
若无法立即升级,应确保在调用websocket.close()方法时,reason参数仅传递字符串类型,避免传递TypedArray对象,以防止触发内存泄露路径。

参考链接

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