CVE-2026-97688
ŚrednieCVSS 6.9Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 20 - wyżej niż 20% wszystkich znanych CVE
Streszczenie
W bibliotece urllib3 (wersje od 2.6.2 do 2.8.0) metody HTTPResponse.stream i HTTPResponse.read_chunked mogą wejść w nieskończoną pętlę, ponieważ dekoder Deflate zachowuje końcowe bajty jako niezużyte dane wejściowe po osiągnięciu końca strumienia i wielokrotnie je dekoduje bez postępu. Problem występuje, gdy niezaufany serwer wyśle odpowiedź chunked z kodowaniem Deflate, której zdekodowana treść przekracza dodatni skończony rozmiar porcji, a zakodowana treść ma końcowe bajty.
Ocena ryzyka
Złośliwy serwer może spowodować nadmierne zużycie CPU i zawieszenie żądania, które nie zostanie przerwane przez limity czasu odczytu sieci. Może to prowadzić do wyczerpania zasobów i odmowy usługi w aplikacjach korzystających z urllib3.
Rekomendacja
Zaktualizuj bibliotekę urllib3 do wersji 2.8.0 lub nowszej. Monitoruj zużycie CPU i nietypowe zawieszenia żądań HTTP w aplikacjach korzystających z tej biblioteki.
Inne podatności w urllib3
Zobacz wszystkie- CVE-2026-97689Wysokie
Biblioteka urllib3 w wersjach od 1.10.3 do 2.8.0 posiada podatność polegającą na nieograniczonej alokacji pamięci. Metody HTTPResponse.read_chunked i HTTPResponse.stream buforują pole rozmiaru fragmentu (chunk-size) bez limitu długości, aż do napotkania znaku nowej linii lub końca strumienia. Złośliwy serwer HTTP może wysłać bardzo długą, niezakończoną linię rozmiaru fragmentu, co prowadzi do wyczerpania pamięci procesu klienta.
- CVE-2026-97687Wysokie
Biblioteka urllib3 w wersjach od 1.26.0 do 2.8.0 nieprawidłowo stosuje ustawienia TLS serwera docelowego do połączenia z proxy HTTPS. Ścieżki konfiguracji proxy_ssl_context, proxy_assert_hostname, proxy_assert_fingerprint, ssl_context, cert_reqs, verify_mode, use_forwarding_for_https=True oraz CERT_NONE nie pozostają rozdzielone. Ustawienie cert_reqs=CERT_NONE może nadpisać proxy_ssl_context.verify_mode, a zmiana ta utrzymuje się w kolejnych połączeniach, co może skutkować połączeniem z proxy HTTPS bez weryfikacji certyfikatu.
- CVE-2026-44432Wysokie
Biblioteka urllib3 dla Pythona w wersjach od 2.6.0 do 2.7.0 przed poprawką zawiera podatność polegającą na dekompresji całej odpowiedzi zamiast żądanej porcji podczas drugiego wywołania HTTPResponse.read(amt=N) przy użyciu oficjalnej biblioteki Brotli lub po wywołaniu HTTPResponse.drain_conn() po częściowym odczycie. Może to prowadzić do nadmiernego zużycia zasobów (wysokie obciążenie CPU i alokacja pamięci) po stronie klienta.
- CVE-2026-21441Wysokie
Biblioteka urllib3 dla Pythona w wersjach od 1.22 do 2.6.2 nieprawidłowo dekompresuje całe treści odpowiedzi HTTP na przekierowania, nawet przy użyciu API strumieniowego. Umożliwia to atak typu „bomba dekompresyjna” prowadzący do nadmiernego zużycia zasobów klienta.
- CVE-2025-66471Wysokie
urllib3 to przyjazna dla użytkownika biblioteka HTTP dla Pythona. Począwszy od wersji 1.0 do 2.6.0, API strumieniowe nieprawidłowo obsługuje mocno skompresowane dane. Podczas strumieniowania skompresowanej odpowiedzi urllib3 może wykonać dekompresję na podstawie nagłówka Content-Encoding (np. gzip, deflate, br, zstd). Logika dekompresji może spowodować pełne zdekodowanie małej ilości mocno skompresowanych danych w jednej operacji, co prowadzi do nadmiernego zużycia zasobów (wysokie użycie CPU i ogromna alokacja pamięci).
- CVE-2025-66418Wysokie
urllib3 to przyjazna dla użytkownika biblioteka HTTP dla Pythona. Począwszy od wersji 1.24 do 2.6.0, liczba linków w łańcuchu dekompresji była nieograniczona, co pozwalało złośliwemu serwerowi na wstawienie praktycznie nieograniczonej liczby kroków kompresji, prowadząc do wysokiego użycia CPU i ogromnej alokacji pamięci. Podatność została naprawiona w wersji 2.6.0.
Oryginalny opis (angielski, źródło NVD)
urllib3 is an HTTP client library for Python. From 2.6.2 until 2.8.0, HTTPResponse.stream and HTTPResponse.read_chunked can enter an infinite loop because the Deflate decoder retains trailing bytes as unconsumed input after reaching end-of-stream and repeatedly decodes them without progress. The issue occurs when an untrusted server sends a chunked Deflate response whose decoded body exceeds a positive finite chunk size and whose encoded body has trailing bytes, specifically a response with Transfer-Encoding: chunked and Content-Encoding: deflate, content decoding enabled, and the positive finite amt=N streaming chunk size. The attack mechanism is that a malicious server returns a compressed chunked response with trailing bytes after the Deflate stream. The impact is excessive CPU usage and a request that does not complete, and network read timeouts do not interrupt the loop because no further socket read occurs. This issue is fixed in version 2.8.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

