Podatność w bibliotece Netty pozwala nieuwierzytelnionemu atakującemu wywołać trwałe zablokowanie wątku event-loop poprzez wysłanie złośliwie spreparowanego strumienia bzip2. Skutkuje to całkowitą niedostępnością aplikacji korzystającej z frameworka.
▸ Pokaż oryginał (EN)
Netty is an asynchronous, event-driven network application framework. Prior to versions 4.1.136.Final and 4.2.16.Final, the `Bzip2Decoder` handler in Netty's compression codec pipeline is vulnerable to a denial-of-service attack through a malformed bzip2 stream that permanently captures the event-loop thread in an infinite loop. The vulnerability exists in the run-length encoding (RLE) state machine within [`Bzip2BlockDecompressor.read()`]. This issue has been fixed in versions 4.1.136.Final and 4.2.16.Final.
Błąd (CWE-835 — infinite loop) znajduje się w maszynie stanów obsługującej kodowanie RLE (run-length encoding) wewnątrz metody `Bzip2BlockDecompressor.read()`. Gdy handler `Bzip2Decoder` w potoku kompresji Netty przetwarza odpowiednio zdeformowany strumień bzip2, maszyna stanów wchodzi w nieskończoną pętlę, która permanentnie zajmuje wątek event-loop. Ponieważ Netty opiera się na modelu asynchronicznym z ograniczoną pulą wątków, zablokowanie nawet jednego wątku event-loop może uniemożliwić obsługę wszystkich dalszych połączeń.
Atakujący bez żadnego uwierzytelnienia może doprowadzić do całkowitej niedostępności aplikacji (Denial of Service) poprzez trwałe zablokowanie wątku event-loop. Nie ma wskazań na możliwość naruszenia poufności ani integralności danych.
Należy zaktualizować Netty do wersji 4.1.136.Final lub nowszej (dla gałęzi 4.1.x) albo do wersji 4.2.16.Final lub nowszej (dla gałęzi 4.2.x). Jeśli natychmiastowa aktualizacja nie jest możliwa, należy rozważyć usunięcie handlera `Bzip2Decoder` z potoku przetwarzania lub blokowanie niesprawdzonych strumieni bzip2 na poziomie warstwy sieciowej.
Netty w wersjach wcześniejszych niż 4.1.136.Final oraz wcześniejszych niż 4.2.16.Final, gdy aplikacja korzysta z handlera `Bzip2Decoder` w potoku kompresji.
Podatność dotyczy wyłącznie aplikacji, które aktywnie wykorzystują handler `Bzip2Decoder` w potoku kompresji Netty. Szczegóły dostępne w oficjalnym security advisory projektu Netty na GitHub (GHSA-558v-64gr-wgg4).
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XNetty
APPNetty< 4.1.1364.2.0 – 4.2.16 (bez)
Powiązane podatności
Netty: nieprawidłowe parsowanie nagłówków HTTP bez dwukropka (HTTP Request Smuggling)
Netty: HTTP Request Smuggling przez duplikat nagłówka Content-Length
The HTTP/2 protocol allows a denial of service (server resource consumption) because request cancellation can ...
Netty: bypass odwołania certyfikatu przez replay przeterminowanej odpowiedzi OCSP
Netty: race condition w walidacji OCSP umożliwia wyciek danych do unieważnionego serwera