The undici WebSocket client is vulnerable to a denial-of-service attack via unbounded memory consumption during permessage-deflate decompression. When a WebSocket connection negotiates the permessage-deflate extension, the client decompresses incoming compressed frames without enforcing any limit on the decompressed data size. A malicious WebSocket server can send a small compressed frame (a "decompression bomb") that expands to an extremely large size in memory, causing the Node.js process to exhaust available memory and crash or become unresponsive. The vulnerability exists in the PerMessageDeflate.decompress() method, which accumulates all decompressed chunks in memory and concatenates them into a single Buffer without checking whether the total size exceeds a safe threshold.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:HNode.js Undici
APPNodejs< 6.24.07.0.0 – 7.24.0 (bez)
Related vulnerabilities
Impact: The undici WebSocket client enforces maxPayloadSize per-frame but does not enforce the cumulative size...
Impact: undici's ProxyAgent silently drops the requestTls option when configured with a SOCKS5 proxy URI (sock...
Impact: The undici WebSocket client enforces maxPayloadSize on the cumulative byte count of fragments in a mes...
Impact: When using Socks5ProxyAgent, undici reuses a single connection pool across different origins without v...
ImpactThe undici WebSocket client is vulnerable to a denial-of-service attack due to improper validation of th...