CVE-2025-66471
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Podwyższone ryzykoPercentyl 51 - wyżej niż 51% wszystkich znanych CVE
Streszczenie
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).
Ocena ryzyka
Ryzyko przeciążenia serwera lub aplikacji z powodu nadmiernego zużycia CPU i pamięci, co może prowadzić do awarii lub braku dostępności. Atak może być przeprowadzony przez złośliwy serwer.
Rekomendacja
Zaleca się aktualizację urllib3 do wersji 2.6.0 lub nowszej. Jeśli nie jest to możliwe, należy ograniczyć zaufanie do serwerów i monitorować zużycie zasobów.
Inne podatności w urllib3
Zobacz wszystkie- CVE-2024-37891Średnie
Podatność w bibliotece urllib3 polega na tym, że nagłówek Proxy-Authorization nie jest usuwany przy przekierowaniach cross-origin, gdy użytkownik nie korzysta z wbudowanego wsparcia proxy. Może to prowadzić do wycieku danych uwierzytelniających do złośliwego serwera, jeśli spełnione są określone warunki. Podatność ma niską severity i wymaga nieprawidłowej konfiguracji.
- 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-97688Średnie
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.
- 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-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.
- CVE-2021-28363Średnie
Biblioteka urllib3 w wersjach 1.26.x przed 1.26.4 dla Pythona pomija walidację certyfikatu SSL w niektórych przypadkach dotyczących połączeń HTTPS do proxy HTTPS. Początkowe połączenie z proxy HTTPS (jeśli SSLContext nie jest podany przez proxy_config) nie weryfikuje nazwy hosta certyfikatu. Oznacza to, że certyfikaty dla różnych serwerów, które nadal poprawnie walidują się z domyślnym SSLContext urllib3, będą po cichu akceptowane.
Oryginalny opis (angielski, źródło NVD)
urllib3 is a user-friendly HTTP client library for Python. Starting in version 1.0 and prior to 2.6.0, the Streaming API improperly handles highly compressed data. urllib3's streaming API is designed for the efficient handling of large HTTP responses by reading the content in chunks, rather than loading the entire response body into memory at once. When streaming a compressed response, urllib3 can perform decoding or decompression based on the HTTP Content-Encoding header (e.g., gzip, deflate, br, or zstd). The library must read compressed data from the network and decompress it until the requested chunk size is met. Any resulting decompressed data that exceeds the requested amount is held in an internal buffer for the next read operation. The decompression logic could cause urllib3 to fully decode a small amount of highly compressed data in a single operation. This can result in excessive resource consumption (high CPU usage and massive memory allocation for the decompressed data.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

