CVE-2026-42786
WysokieCVSS 8.7Prawdopodobieństwo exploitacji (EPSS)
Podwyższone ryzykoPercentyl 51 - wyżej niż 51% wszystkich znanych CVE
Streszczenie
Podatność w mtrudel bandit pozwala na zdalne wywołanie odmowy usługi poprzez wyczerpanie pamięci, umożliwiając nieautoryzowanym użytkownikom przesyłanie nieograniczonej liczby ramek kontynuacji. Problem występuje w metodzie handle_frame/3, która nie ma ograniczenia rozmiaru dla akumulowanych danych.
Ocena ryzyka
Organizacja może doświadczyć poważnych zakłóceń w działaniu aplikacji, co prowadzi do utraty dostępności usług. Wyczerpanie pamięci może skutkować awarią procesów, co wpływa na stabilność całego systemu.
Rekomendacja
Zaleca się aktualizację biblioteki bandit do wersji 1.11.0 lub nowszej, aby usunąć tę podatność. Dodatkowo warto wprowadzić mechanizmy ograniczające rozmiar przesyłanych danych w aplikacji.
Inne podatności w bandit
Zobacz wszystkie- CVE-2026-116078Wysokie
W bibliotece bandit (Elixir) w wersjach od 0.3.1 przed 1.14.1 czytnik ciała żądania HTTP/2 nie ogranicza zasobów, co pozwala nieuwierzytelnionemu zdalnemu atakującemu wyczerpać pamięć serwera poprzez ciało żądania wysłane jako wiele ramek DATA o rozmiarze 1 bajta. Podatne są trasy, których Plug odczytuje ciało żądania, w tym trasy za Plug.Parsers.
- CVE-2026-115269Wysokie
W bibliotece bandit (mtrudel) występuje podatność na wyczerpanie zasobów bez ograniczeń w czytniku ciała żądania HTTP/2 — nieuwierzytelniony zdalny atakujący może utrzymywać procesy strumieni otwarte bezterminowo przez ramki WINDOW_UPDATE lub puste SETTINGS wysyłane podczas gdy Plug czyta ciało żądania. Dotyczy wersji od 1.4.0 przed 1.14.0.
- CVE-2026-114216Średnie
Podatność na niespójną interpretację żądań HTTP ('HTTP Request/Response Smuggling') w czytniku treści chunked HTTP/1.1 w mtrudel bandit pozwala nieuwierzytelnionemu zdalnemu atakującemu na przemycenie drugiego żądania obok front-endowego proxy poprzez rozszerzenie chunka zawierające samo LF. Czytnik chunked w lib/bandit/http1/socket.ex traktuje linię rozmiaru chunka jako wszystko do pierwszego CRLF i odrzuca wszystko po ; bez sprawdzania zgodności z gramatyką chunk-ext RFC 9112, więc samo LF, samo CR i inne bajty kontrolne przechodzą. Proxy, które kończy linię rozmiaru na samym LF, odczytuje 2;\nxx\r\n40\r\n... jako jedno żądanie, którego drugi chunk zawiera GET /admin, podczas gdy Bandit kończy treść wcześniej i wysyła GET /admin jako osobne żądanie potokowe. Wdrożenia bez takiego proxy przed Bandit nie są dotknięte.
- CVE-2026-114213Wysokie
Podatność w bibliotece Bandit (Elixir) polega na braku limitu liczby fragmentów wiadomości WebSocket podczas ich łączenia. Atakujący może wysłać wiadomość złożoną z wielu 1-bajtowych ramek kontynuacji, co powoduje zużycie pamięci serwera znacznie przekraczające skonfigurowany limit (nawet 150-krotnie).
- CVE-2026-113436Wysokie
Podatność w parserze liczb całkowitych nagłówków HTTP w bibliotece Bandit (Elixir) pozwala nieuwierzytelnionemu atakującemu na zużycie CPU serwera poprzez przesłanie wartości Content-Length, Host lub portu :authority składającej się z tysięcy cyfr. Parsowanie odbywa się bez limitu długości, co prowadzi do kwadratowego wzrostu czasu przetwarzania.
- CVE-2026-111103Wysokie
Podatność w obsłudze HTTP/2 w bibliotece Bandit (Elixir) polega na nieprawidłowym czyszczeniu stanu po wyjątku StreamError. Atakujący może obejść limity zasobów na połączenie, wysyłając wiele ramek w jednym zapisie TCP, z których jedna powoduje błąd strumienia, co prowadzi do uruchomienia większej liczby równoległych strumieni niż dozwolona.
- CVE-2026-111101Wysokie
Podatność w czytniku ciała żądania chunked w HTTP/1.1 w bibliotece Bandit (Elixir) pozwala nieuwierzytelnionemu atakującemu na wyczerpanie pamięci i CPU serwera poprzez żądanie złożone z wielu 1-bajtowych fragmentów. Brak limitu liczby fragmentów powoduje, że małe fragmenty zużywają znacznie więcej pamięci niż ich ładunek.
- CVE-2026-110499Wysokie
Podatność w implementacji HTTP/2 w bibliotece Bandit (Elixir) pozwala nieuwierzytelnionemu atakującemu na nieograniczony wzrost zużycia pamięci i CPU poprzez dużą wartość SETTINGS_HEADER_TABLE_SIZE. Bandit zmienia rozmiar tabeli kodera HPACK do rozmiaru ogłoszonego przez klienta (do 2^32-1 bajtów) i indeksuje nagłówki odpowiedzi, co prowadzi do liniowego skanowania przy każdym wyszukaniu i kwadratowego wzrostu kosztu CPU.
- CVE-2026-110314Średnie
Podatność na egzekwowanie zabezpieczeń po stronie klienta zamiast serwera w obsłudze połączeń WebSocket w mtrudel bandit pozwala zdalnemu klientowi na dalsze uruchamianie kodu obsługi WebSock po zatrzymaniu połączenia przez serwer, poprzez ramki danych wysyłane po zignorowaniu ramki Close serwera. Gdy callback WebSock zwraca {:stop, ...}, Bandit.WebSocket.Connection wywołuje terminate/2, wysyła Close i zamyka stronę zapisu, ale utrzymuje proces połączenia w stanie :closing. handle_frame/3 i handle_info/3 nigdy nie sprawdzają tego stanu, więc późniejsze ramki nadal docierają do handle_in/2, a późniejsze wiadomości do handle_info/2, ze stanem z krotki stop, dopóki klient nie wyśle Close, TCP nie zostanie zerwane lub nie upłynie limit czasu bezczynności. Klient odrzucony w init/1 po nieudanym sprawdzeniu tokena mógłby nadal wykonać akcję tylko dla administratora.
- CVE-2026-109584Wysokie
Podatność w implementacji HTTP/2 w bibliotece Bandit (Elixir) polega na nieprawidłowym przetwarzaniu silnie skompresowanych danych (amplifikacja danych). Atakujący może wysłać mały blok HEADERS skompresowany HPACK, który przechowuje dużą wartość cookie w tabeli dynamicznej, a następnie wielokrotnie odwołuje się do niej za pomocą 1-bajtowych pól indeksowanych, co prowadzi do wyczerpania pamięci serwera.
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. The fragment reassembly path in 'Elixir.Bandit.WebSocket.Connection':handle_frame/3 in lib/bandit/websocket/connection.ex appends every incoming Continuation{fin: false} frame's payload to a per-connection iolist with no cumulative size cap. The existing max_frame_size option only bounds individual frames; a peer that streams an unbounded number of continuation frames without ever setting fin=1 grows BEAM heap linearly until the OS or a supervisor kills the process. Because the accumulation happens before WebSock.handle_in/2 is called, the application has no opportunity to interpose a size check. Phoenix Channels and LiveView both run over WebSock on Bandit, so a stock Phoenix application exposes this surface as soon as it accepts socket connections. This issue affects bandit: from 0.5.0 before 1.11.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

