Katalog CVE

CVE-2026-39804

WysokieCVSS 8.2
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Podwyższone ryzyko
0.76%

Percentyl 55 - wyżej niż 55% wszystkich znanych CVE

Streszczenie

Biblioteka bandit (mtrudel) w wersjach od 0.5.9 do 1.11.0 ma podatność polegającą na braku ograniczeń zasobów podczas dekompresji permessage-deflate w WebSocket. Funkcja inflate/2 wywołuje :zlib.inflate/2 bez limitu rozmiaru wyjściowego, co pozwala nieuwierzytelnionemu atakującemu na wysłanie jednej silnie skompresowanej ramki i wyczerpanie pamięci węzła BEAM.

Ocena ryzyka

Atakujący może zdalnie wywołać atak typu denial of service poprzez wyczerpanie pamięci i zabicie procesu OOM. Podatność dotyczy tylko aplikacji z włączoną kompresją WebSocket (compress: true), a domyślne konfiguracje Phoenix i LiveView są odporne.

Rekomendacja

Zaktualizuj bibliotekę bandit do wersji 1.11.0 lub nowszej. Jeśli aktualizacja nie jest możliwa, wyłącz kompresję permessage-deflate w WebSocket.

Inne podatności w bandit

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

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.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS