CVE-2026-25224: 
JavaScript vulnerability analysis and mitigation

Overview

CVE-2026-25224 is a Denial of Service vulnerability in the Fastify Node.js web framework caused by unbounded memory allocation in its sendWebStream function. It affects all Fastify versions up to and including 5.7.2 (npm package). The vulnerability was published on February 2, 2026, and patched in version 5.7.3. It carries a CVSS v3.1 base score of 3.7 (Low) (Github Advisory, Fastify Advisory).

Technical details

The root cause is classified as CWE-770 (Allocation of Resources Without Limits or Throttling). In the vulnerable sendWebStream function within lib/reply.js, when a route handler returns a ReadableStream or a Response with a Web Stream body via reply.send(), the framework continuously reads from the stream and writes to the HTTP response socket without checking the return value of res.write(). When a slow or non-reading client causes the socket's write buffer to fill up, res.write() returns false to signal backpressure — but the original code ignored this signal and continued reading and buffering stream chunks without bound, leading to unbounded heap growth. The fix (commit eb11156) adds a waitingDrain flag and a drain event listener so that further reads are paused until the socket is ready to accept more data (Fastify Advisory, Patch Commit).

Impact

Successful exploitation causes unbounded heap memory growth in the Node.js process, which can lead to process crashes via out-of-memory (OOM) errors or severe performance degradation affecting all users of the service. Only the availability of the affected server is impacted — there is no confidentiality or integrity impact. The vulnerability is scoped to the affected Fastify process and does not enable lateral movement or data exfiltration (Github Advisory, Red Hat Bugzilla).

Exploitability

No public exploit code or in-the-wild exploitation has been reported. The EPSS score is approximately 0.02% (6th percentile), indicating a very low probability of exploitation in the near term. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. Exploitation requires high attack complexity — specifically, the attacker must be able to act as a slow or non-reading HTTP client against an endpoint that streams a Web Stream response, which limits opportunistic exploitation (Github Advisory).

Exploitation steps

  1. Reconnaissance: Identify a Fastify-based application (version ≤ 5.7.2) that exposes an HTTP endpoint returning a ReadableStream or Response with a Web Stream body via reply.send().
  2. Establish a slow connection: Open an HTTP connection to the target endpoint using a tool or custom script that deliberately reads the response body very slowly or not at all (e.g., using curl with rate limiting, or a custom socket client that opens the connection but never reads from it).
  3. Trigger unbounded buffering: Because the client is not consuming data, the TCP socket's send buffer fills up and res.write() returns false. The vulnerable Fastify code ignores this backpressure signal and continues reading from the stream, buffering all chunks in memory.
  4. Exhaust server memory: Maintain the slow/non-reading connection(s) while the server's stream source continues producing data. Heap memory grows without bound until the Node.js process crashes with an OOM error or becomes severely degraded, denying service to legitimate users (Fastify Advisory, Patch Commit).

Indicators of compromise

  • Process: Rapidly increasing Node.js heap memory usage (observable via process.memoryUsage(), APM tools, or OS-level monitoring) on a Fastify server serving Web Stream responses; eventual OOM crash of the Node.js process.
  • Logs: Node.js process crash logs or system OOM killer logs (e.g., dmesg entries referencing the Node.js PID being killed); application logs showing abrupt termination without a handled exception.
  • Network: Persistent, long-lived HTTP connections to streaming endpoints that transfer little or no data to the client side; unusually high number of open connections with low throughput on stream-serving routes.

Mitigation and workarounds

The issue is fixed in Fastify version 5.7.3; all users should upgrade immediately. As a temporary workaround for those unable to upgrade, avoid returning Web Streams (ReadableStream or Response with a Web Stream body) from Fastify route handlers — use Node.js stream.Readable streams or buffered payloads instead, which are not affected by this issue. IBM API Connect users should refer to the IBM advisories for product-specific patch guidance (Fastify Advisory, IBM Advisory 1, IBM Advisory 2).

Community reactions

The vulnerability was discovered by security researcher onlybugs05 via HackerOne (report #3524779) and remediated by Fastify maintainer mcollina. Red Hat tracked the issue via Bugzilla and assessed it as low severity. IBM subsequently issued advisories for affected IBM API Connect products. No significant broader media coverage or notable community controversy has been observed (Fastify Advisory, Red Hat Bugzilla).

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

RHEL / CentOS

Unknown

Source: This report was generated using AI

Related JavaScript vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

GHSA-gvwc-5hr5-44p8HIGH7.5
  • JavaScript logoJavaScript
  • probe-image-size
NoYesOct 26, 2026
GHSA-5jh3-w3fj-6758LOW3.7
  • JavaScript logoJavaScript
  • probe-image-size
NoYesOct 26, 2026
GHSA-5v8x-rm7w-m4c7LOW3.7
  • JavaScript logoJavaScript
  • probe-image-size
NoYesOct 26, 2026
GHSA-7pqp-3q23-mwr8LOW3.7
  • JavaScript logoJavaScript
  • probe-image-size
NoYesOct 26, 2026
GHSA-3qg4-7mq2-gm93MEDIUMN/A
  • JavaScript logoJavaScript
  • probe-image-size
NoYesOct 26, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Additional Wiz resources

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management