Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Network-reachable and unauthenticated, but AC:H because it requires the app to use a TypedArray close reason, and C:L since only opportunistic uninitialized heap leaks.
Primary rating from NVD.
CVSS VectorNVD
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Lifecycle Timeline
10Blast Radius
ecosystem impact- 31 npm packages depend on ws (21 direct, 11 indirect)
Ecosystem-wide dependent count for version 8.0.0.
DescriptionNVD
ws is an open source WebSocket client and server for Node.js. Prior to 8.20.1, the websocket.close() implementation is vulnerable to uninitialized memory disclosure when a TypedArray is passed as the reason argument. This vulnerability is fixed in 8.20.1.
AnalysisAI
Uninitialized memory disclosure in the ws WebSocket library for Node.js (versions 8.0.0 through 8.20.0) allows a connected peer to receive leaked process memory when an application calls websocket.close() with a TypedArray as the reason argument. Because the close-frame reason buffer is not zero-initialized, fragments of adjacent heap memory - potentially containing secrets, tokens, or other clients' data - are transmitted over the wire. No public exploit is identified at time of analysis (SSVC lists POC-class maturity but EPSS is only 0.01%), and the issue is fixed in ws 8.20.1.
Technical ContextAI
ws is one of the most widely used WebSocket client/server implementations in the Node.js ecosystem, shipped as a transitive dependency of countless frameworks (Socket.IO, express-ws, etc.). The flaw is rooted in CWE-908 (Use of Uninitialized Resource): when websocket.close(code, reason) is invoked with a TypedArray reason, ws allocates a buffer for the close-frame payload without fully initializing it, so previously-freed or never-written heap bytes are copied into the outbound frame. The affected component is identified by CPE cpe:2.3:a:ws_project:ws for the node.js target. The control frame's reason field is then sent to the remote peer per RFC 6455, turning an internal memory-handling bug into a network-observable information leak.
RemediationAI
Vendor-released patch: ws 8.20.1 - upgrade the ws dependency (including transitive copies pulled in by frameworks such as Socket.IO) to 8.20.1 or later, then audit your lockfile to ensure no nested older copies remain. Red Hat consumers should apply the corresponding errata (RHSA-2026:7655, RHSA-2026:26638, RHSA-2026:26994, RHSA-2026:27171, RHSA-2026:29197) via the platform package manager; see https://access.redhat.com/errata/RHSA-2026:29197 and the advisory at https://github.com/websockets/ws/security/advisories/GHSA-58qx-3vcg-4xpx. If you cannot upgrade immediately, a targeted compensating control is to ensure application code never passes a TypedArray (e.g., Uint8Array) to websocket.close() - instead pass the reason as a string or omit it - which avoids the vulnerable allocation path entirely; the trade-off is a code change in every place that closes a socket with a binary reason, but it has no protocol-level side effects since string reasons are fully supported by RFC 6455. The upstream fix commit is https://github.com/websockets/ws/commit/c0327ec15a54d701eb6ccefaa8bef328cfc03086.
FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote
Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t
Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete
Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc
An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner
Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi
Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin
The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic
Directory traversal vulnerability in lib/app/index.js in Geddy before 13.0.8 for Node.js allows remote attackers to read
Credential-harvesting malware compromised 84 versions of 42 TanStack npm packages on 2026-05-11 via chained GitHub Actio
Eval injection vulnerability in index.js in the syntax-error package before 1.1.1 for Node.js 0.10.x, as used in IBM Rat
The HTTP server in Node.js 0.10.x before 0.10.21 and 0.8.x before 0.8.26 allows remote attackers to cause a denial of se
Same weakness CWE-908 – Use of Uninitialized Resource
View allSame technique Information Disclosure
View allVendor StatusVendor
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-30543
GHSA-58qx-3vcg-4xpx