Monitor vulnerabilities like this one.
Sign up free to get alerted when software you use is affected.
7.5
undici WebSocket client crashes when connecting to malicious server
CVE-2026-2229
GHSA-v9p9-hfj2-hcw8
Summary
A security issue in the undici WebSocket client can cause it to crash if it connects to a specially crafted server. This can happen if the server sends an invalid value for compression settings. To protect against this, update your undici client to the latest version.
What to do
- Update undici to version 6.24.0.
- Update undici to version 7.24.0.
Affected software
| Vendor | Product | Affected versions | Fix available |
|---|---|---|---|
| – | undici | <= 6.24.0 | 6.24.0 |
| – | undici | > 7.0.0 , <= 7.24.0 | 7.24.0 |
Original title
Undici has Unhandled Exception in WebSocket Client Due to Invalid server_max_window_bits Validation
Original description
### Impact
The undici WebSocket client is vulnerable to a denial-of-service attack due to improper validation of the `server_max_window_bits` parameter in the permessage-deflate extension. When a WebSocket client connects to a server, it automatically advertises support for permessage-deflate compression. A malicious server can respond with an out-of-range `server_max_window_bits` value (outside zlib's valid range of 8-15). When the server subsequently sends a compressed frame, the client attempts to create a zlib InflateRaw instance with the invalid windowBits value, causing a synchronous RangeError exception that is not caught, resulting in immediate process termination.
The vulnerability exists because:
1. The `isValidClientWindowBits()` function only validates that the value contains ASCII digits, not that it falls within the valid range 8-15
2. The `createInflateRaw()` call is not wrapped in a try-catch block
3. The resulting exception propagates up through the call stack and crashes the Node.js process
### Patches
_Has the problem been patched? What versions should users upgrade to?_
### Workarounds
_Is there a way for users to fix or remediate the vulnerability without upgrading?_
The undici WebSocket client is vulnerable to a denial-of-service attack due to improper validation of the `server_max_window_bits` parameter in the permessage-deflate extension. When a WebSocket client connects to a server, it automatically advertises support for permessage-deflate compression. A malicious server can respond with an out-of-range `server_max_window_bits` value (outside zlib's valid range of 8-15). When the server subsequently sends a compressed frame, the client attempts to create a zlib InflateRaw instance with the invalid windowBits value, causing a synchronous RangeError exception that is not caught, resulting in immediate process termination.
The vulnerability exists because:
1. The `isValidClientWindowBits()` function only validates that the value contains ASCII digits, not that it falls within the valid range 8-15
2. The `createInflateRaw()` call is not wrapped in a try-catch block
3. The resulting exception propagates up through the call stack and crashes the Node.js process
### Patches
_Has the problem been patched? What versions should users upgrade to?_
### Workarounds
_Is there a way for users to fix or remediate the vulnerability without upgrading?_
nvd CVSS3.1
7.5
Vulnerability type
CWE-248
CWE-1284
- https://cna.openjsf.org/security-advisories.html
- https://datatracker.ietf.org/doc/html/rfc7692
- https://github.com/nodejs/undici/security/advisories/GHSA-v9p9-hfj2-hcw8
- https://hackerone.com/reports/3487486
- https://nodejs.org/api/zlib.html#class-zlibinflateraw
- https://nvd.nist.gov/vuln/detail/CVE-2026-2229
- https://github.com/advisories/GHSA-v9p9-hfj2-hcw8
Published: 13 Mar 2026 · Updated: 14 Mar 2026 · First seen: 12 Mar 2026