CVE-2026-12611
WysokieCVSS 8.7Streszczenie
Klient może wysyłać żądania HTTP/2 do serwera Jetty, które powodują blokowanie zapisów, które nigdy nie są odblokowywane, co ostatecznie prowadzi do zablokowania wszystkich wątków i całkowitej niedostępności serwera. Jest to spowodowane warunkiem wyścigu w serwerze podczas obsługi ramek RST_STREAM i GOAWAY wysyłanych przez klienta. Warunek wyścigu "resetuje" HTTP2Flusher.terminated, wcześniej ustawiony na nie-null, do wartości null, co pozwala na enqueuing wpisów w flusher, które jednak nigdy nie zostaną przetworzone. Te nieprzetworzone wpisy to te, które miałyby odblokować zablokowane wątki.
Ocena ryzyka
Atak DoS może całkowicie unieruchomić serwer Jetty, co prowadzi do niedostępności usług dla wszystkich użytkowników, co może skutkować znacznymi stratami finansowymi i utratą reputacji.
Rekomendacja
Zaktualizuj serwer Jetty do wersji zawierającej poprawkę na ten problem, aby zapobiec warunkowi wyścigu.
Inne podatności w Jetty
Zobacz wszystkie- CVE-2026-19203Wysokie
Klient może wysyłać specjalnie spreparowane żądania HTTP/1.1 chunked do serwera Jetty, które powodują, że Jetty i pośredniczący proxy interpretują różne granice żądań, co może prowadzić do przemycania żądań HTTP (HTTP request smuggling). Jest to spowodowane akceptowaniem przez Jetty pojedynczego znaku LF jako terminatora w częściach parsowania żądań chunked. W zależności od wersji Jetty i skonfigurowanego trybu zgodności HTTP może to wystąpić w rozszerzeniach chunk, terminacji danych chunk lub terminacji nagłówków trailer.
- CVE-2017-9735Wysokie
Jetty w wersjach do 9.4.x jest podatny na atak wykorzystujący kanał czasowy w pliku util/security/Password.java, co ułatwia zdalnym atakującym uzyskanie dostępu poprzez obserwację czasu, jaki upływa przed odrzuceniem niepoprawnych haseł.
- CVE-2026-19204Wysokie
Klient może wysłać ramkę WebSocket z nieznanym kodem operacji i bardzo dużą zadeklarowaną długością ładunku, co powoduje, że Jetty próbuje zaalokować dużą ilość pamięci i potencjalnie wyczerpuje stertę JVM. Dzieje się tak, gdy włączona jest auto-fragmentacja, ponieważ nieznane kody operacji omijają normalne ograniczenia rozmiaru ramki, a alokacja ładunku następuje przed walidacją kodu operacji.
Oryginalny opis (angielski, źródło NVD)
A client may issue HTTP/2 requests to a Jetty server that result in blocking writes that are never unblocked, eventually causing all threads to be blocked and the whole server to become unresponsive. This is caused by a race condition in the server when handling RST_STREAM frames and GOAWAY frames sent by the client. The race condition "resets" the HTTP2Flusher.terminated, previously set to a non-null value, to the null value, allowing entries to be enqueued in the flusher that however will never be processed. These unprocessed entries are the ones that would unblock the write-blocked threads.

