CVE Catalog

CVE-2026-39804

HighCVSS 8.2
Published: Updated: Translated: NVD NIST

Exploitation Probability (EPSS)

Elevated risk
0.76%

55th percentile - higher than 55% of all known CVEs

Summary

The bandit library (mtrudel) versions 0.5.9 through 1.11.0 has an allocation of resources without limits vulnerability during WebSocket permessage-deflate decompression. The inflate/2 function calls :zlib.inflate/2 without an output-size cap, allowing an unauthenticated attacker to send a single highly compressed frame and exhaust the BEAM node's memory.

Risk Assessment

An attacker can remotely cause a denial of service by exhausting memory and triggering an OOM kill. The vulnerability only affects applications with WebSocket compression enabled (compress: true); default Phoenix and LiveView configurations are not affected.

Recommendation

Update the bandit library to version 1.11.0 or later. If updating is not possible, disable permessage-deflate compression in WebSocket.

Other vulnerabilities in bandit

See all
Original NVD description (English source)

Allocation of Resources Without Limits or Throttling vulnerability in mtrudel bandit allows unauthenticated remote denial of service via memory exhaustion when WebSocket permessage-deflate compression is enabled. 'Elixir.Bandit.WebSocket.PerMessageDeflate':inflate/2 in lib/bandit/websocket/permessage_deflate.ex calls :zlib.inflate/2 with no output-size cap, then materializes the entire decompressed payload as a single binary via IO.iodata_to_binary/1. The websocket_options.max_frame_size option only bounds the on-the-wire (compressed) frame size, not the decompressed output. A high-ratio compressed frame (e.g. uniform data at ~1024:1 ratio) can stay well under any wire-size limit while forcing GiB-scale heap allocations in the connection process before any application code runs. An unauthenticated attacker who can open a WebSocket connection can send a single such frame to exhaust the BEAM node's memory and trigger an OOM kill. This vulnerability requires both Bandit's server-level websocket_options.compress and the per-upgrade compress: true option passed to WebSockAdapter.upgrade/4 to be enabled. Stock Phoenix and LiveView applications are not affected as they default to compress: false. This issue affects bandit: from 0.5.9 before 1.11.0.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS