CVE-2026-85721
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 48 - wyżej niż 48% wszystkich znanych CVE
Streszczenie
Biblioteka AsyncHttpClient (AHC) w wersjach od 2.0.0 do 2.16.1 oraz 3.0.12 instaluje dekompresor odpowiedzi HTTP/1.1 bez limitu całkowitego rozmiaru zdekompresowanych danych. Złośliwy lub przejęty serwer może wysłać małą odpowiedź gzip, deflate lub snappy, która po dekompresji rozrasta się do ogromnych rozmiarów i wyczerpuje stertę klienta, powodując OutOfMemoryError. Problem dotyczy również brotli i zstd, a w wersjach 3.0.8–3.0.10 także dekompresora HTTP/2.
Ocena ryzyka
Atakujący może doprowadzić do wyczerpania pamięci i awarii aplikacji Java korzystającej z AHC, powodując odmowę usługi. Ryzyko jest wysokie, ponieważ wystarczy kontrolowana odpowiedź serwera lub modyfikacja ruchu w tranzycie.
Rekomendacja
Zaktualizuj bibliotekę AsyncHttpClient do wersji 2.16.1 lub 3.0.12, które wprowadzają limit całkowitego rozmiaru zdekompresowanych danych dla całej odpowiedzi.
Inne podatności w AsyncHttpClient
Zobacz wszystkie- CVE-2026-107282Krytyczne
Podatność w bibliotece AsyncHttpClient (AHC) przed wersjami 3.0.13 i 2.16.1 umożliwia powtórne wysłanie żądania do innego hosta, ale pozostawia oryginalny cel i kontekst proxy. Może to spowodować wysłanie ścieżki, nagłówka Host, poświadczeń lub zwykłego tekstu do miejsca docelowego replikacji.
- CVE-2026-102740Średnie
Biblioteka AsyncHttpClient w wersjach od 2.0.0 do 2.16.1 oraz 3.0.12 przechowuje stan wznawianych pobrań w przewidywalnej współdzielonej ścieżce $java.io.tmpdir/ahc/ResumableAsyncHandler.properties z domyślnymi uprawnieniami i operacjami podążającymi za linkami. Lokalny użytkownik może odczytać adresy URL pobrań lub, jeśli może pisać w tym katalogu, podłożyć dowiązanie symboliczne prowadzące do nadpisania pliku. Podatność dotyczy przypadku, gdy ResumableAsyncHandler dekoruje inny AsyncHandler; konstruktory bezargumentowe używają procesora no-op i nie są podatne. Naprawiono w wersjach 2.16.1 i 3.0.12.
- CVE-2026-107226Średnie
Biblioteka AsyncHttpClient (AHC) w wersjach od 2.1.0 do 3.0.14 nie zachowuje informacji o tym, czy odpowiedź Set-Cookie została odebrana przez bezpieczne połączenie. Domyślny ThreadSafeCookieStore akceptuje ciasteczka Secure przesyłane plaintextem i pozwala niezabezpieczonym ciasteczkom nadpisywać lub usuwać istniejące ciasteczka Secure. Atakujący kontrolujący odpowiedź same-site w plaintext może sadzić, zastępować lub usuwać stan ciasteczek wysyłany później do origin HTTPS.
- CVE-2026-107285Średnie
W bibliotece AsyncHttpClient (AHC) przed wersjami 3.0.12 i 2.16.1, żądanie WebSocket przez proxy (ws) jest przekazywane przez CONNECT, ale NettyRequestFactory.newNettyRequest i requestUri decydują o dodaniu uwierzytelnienia proxy i formy absolutnej tylko na podstawie tego, czy URI jest bezpieczny. Ponieważ ws nie jest oznaczony jako bezpieczny, tunelowane uaktualnienie WebSocket wysyłane do origin zawiera wartość Proxy-Authorization proxy. Poświadczenia Basic są bezpośrednio odzyskiwalne, a odpowiedzi Digest mogą być odtwarzane lub łamane offline. Problem naprawiono w wersjach 3.0.12 i 2.16.1.
- CVE-2026-107284Niskie
Biblioteka AsyncHttpClient (AHC) przed wersjami 3.0.12 i 2.16.1 ma podatność w WebSocketHandler.upgrade, która przerywa uzgadnianie (handshake) przy braku lub nieprawidłowej wartości Sec-WebSocket-Accept, ale kontynuuje instalację pipeline'u i dostarczenie onOpen. Ramki połączone z nieprawidłową odpowiedzią 101 mogą być zdekodowane i dostarczone od peera, który nie udowodnił uzgadniania, mimo że przyszłość żądania kończy się niepowodzeniem i kanał jest zamykany. Problem naprawiono w wersjach 3.0.12 i 2.16.1.
- CVE-2026-107283Niskie
Biblioteka AsyncHttpClient (AHC) przed wersjami 3.0.12 i 2.16.1 generuje losowy identyfikator cnonce dla uwierzytelniania Digest przy użyciu ThreadLocalRandom zamiast kryptograficznie bezpiecznego źródła losowości. To sprawia, że mechanizm uwierzytelniania jest podatny na ataki typu wybór tekstu jawnego i prekomputację poświadczeń.
- CVE-2026-107281Wysokie
Biblioteka AsyncHttpClient (AHC) umożliwia aplikacjom Java łatwe wykonywanie żądań HTTP i asynchroniczne przetwarzanie odpowiedzi. Przed wersjami 3.0.13 i 2.16.1 klucz puli połączeń HTTP/1.1 nie uwzględnia uwierzytelnionego podmiotu dla uwierzytelniania NTLM i Negotiate zorientowanego na połączenie. Połączony gniazdo uwierzytelnione dla jednego żądania może być ponownie użyte przez żądanie z innym podmiotem, a serwer wykonuje to późniejsze żądanie jako pierwszą tożsamość. Basic i Digest nie są dotknięte, ponieważ uwierzytelniają każde żądanie. Problem naprawiono w wersjach 3.0.13 i 2.16.1.
- CVE-2026-107280Średnie
W bibliotece AsyncHttpClient (AHC) przed wersjami 3.0.13 i 2.16.1, ThreadSafeCookieStore waliduje atrybuty Domain za pomocą dopasowania domen, ale nie odrzuca publicznych sufiksów. Host pod sufiksem takim jak co.uk może ustawić cookie dla tego sufiksu, po czym współdzielony magazyn cookie wysyła je do niepowiązanych hostów pod tym sufiksem. Może to wstrzykiwać lub nadpisywać wartości cookie istotne dla sesji między originami. Problem naprawiono w wersjach 3.0.13 i 2.16.1.
- CVE-2026-107279Wysokie
Biblioteka AsyncHttpClient (AHC) umożliwia aplikacjom Java łatwe wykonywanie żądań HTTP i asynchroniczne przetwarzanie odpowiedzi. W wersji 3.0.12, peer oferujący tylko Digest qop=auth-int powoduje pominięcie weryfikacji wzajemnego uwierzytelniania. AuthenticatorUtils.computeExpectedRspAuth nie zwraca oczekiwanej wartości dla auth-int, a Interceptors traktuje ten wynik jako niezweryfikowany, ale niekrytyczny, więc odpowiedź z nieprawidłową wartością rspauth jest akceptowana. Peer, który nie zna wspólnego sekretu, może zostać zaakceptowany jako uwierzytelniony serwer. Problem naprawiono w wersji 3.0.13.
- CVE-2026-107232Wysokie
Biblioteka AsyncHttpClient (AHC) umożliwia aplikacjom Java łatwe wykonywanie żądań HTTP i asynchroniczne przetwarzanie odpowiedzi. Przed wersjami 3.0.12 (na 3.x) i 2.16.1 (na 2.x), klient wnioskuje, że tunel proxy HTTP istnieje na podstawie ostatniej metody żądania, a nie wyniku CONNECT. Po odrzuceniu CONNECT przez proxy, handlery przekierowań lub uwierzytelniania mogą zapisać żądanie pochodzenia i jego poświadczenia Authorization na nadal jawnym połączeniu proxy. Podstawowe poświadczenia mogą być odzyskane bezpośrednio, a odpowiedzi NTLM mogą być złamane lub przekazane dalej. Problem naprawiono w wersjach 3.0.12 i 2.16.1.
Oryginalny opis (angielski, źródło NVD)
The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. From 2.0.0 until 2.16.1 and 3.0.12, automatic response decompression on the HTTP/1.1 path uses ChannelManager.newHttpContentDecompressor() to install Http1ContentDecompressor without a cumulative output-size limit. A hostile or compromised server, or an attacker who can alter a response in transit, can send a small gzip, deflate, or snappy response that expands across chunks until the client exhausts its heap and raises OutOfMemoryError; brotli and zstd are also affected when their optional codecs are present. In versions 3.0.8 through 3.0.10, the HTTP/2 decompressor is also unbounded, so switching protocols does not mitigate the issue on those releases. A limit applied to each decode call is insufficient because the response can be delivered as many small chunks, so the fixed implementation tracks total decompressed bytes for the whole response. This issue is fixed in versions 2.16.1 and 3.0.12.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

