MediumGHSA-4qv8-2p9j-2685CVE-2026-109924

undici vulnerable to Denial of Service via unbounded memory in the EventSource parser

Published 23 Oct 2026 · Updated 23 Oct 2026

Affected packages

Affected
>=6.5.0 <6.29.1
Fixed in
6.29.1
Update to the fixed version for your release line, for example:npm install undici@6.29.1
Affected
>=7.0.0 <7.30.1
Fixed in
7.30.1
Update to the fixed version for your release line, for example:npm install undici@7.30.1
Affected
>=8.0.0 <8.12.2
Fixed in
8.12.2
Update to the fixed version for your release line, for example:npm install undici@8.12.2

Details

Impact

undici's EventSource client can be driven to exhaust process memory by a malicious or compromised Server-Sent Events peer. By sending millions of tiny completed data: fields with no blank event separator, or a single unfinished line split across many chunks, the parser retains a growing amount of per-field and per-chunk state. The byte-based maxEventSize and maxResponseSize limits do not bound that retained state, and maxResponseSize is enforced on the compressed body before decompression, so a small compressed response can expand into enough retained memory to terminate the process. The application only needs to maintain an EventSource connection to an untrusted peer, which controls only the response. Availability is the only impact.

Patches

Upgrade to 6.29.1, 7.30.1, or 8.12.2, which bound the retained EventSource parser state (the number of data fields and buffered chunks, the unfinished-line length, and per-field byte totals) independently of the byte limits.

Workarounds

None.

Is GHSA-4qv8-2p9j-2685 in any of your client repos?

Checking one package by hand is fine. Checking it across forty client projects is not. NPMscan reads the lockfiles in every GitHub repo you pick, finds each project with an affected undici, and gives you the command that fixes it.

References

Advisory data from OSV.dev (opens OSV.dev in a new tab), refreshed daily.