CVE-2024-37891
ŚrednieCVSS 4.4Streszczenie
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.
Ocena ryzyka
Ryzyko jest niskie, ponieważ wymaga jednoczesnego wystąpienia rzadkich warunków: ręcznego ustawienia nagłówka Proxy-Authorization bez ProxyManager, braku wyłączenia przekierowań oraz przekierowania na złośliwy origin. W typowych scenariuszach organizacja może być narażona na kradzież poświadczeń proxy.
Rekomendacja
Zaktualizuj urllib3 do wersji 1.26.19 lub 2.2.2. Jeśli aktualizacja nie jest możliwa, używaj ProxyManager do obsługi nagłówka Proxy-Authorization, wyłącz automatyczne przekierowania (redirects=False) lub nie używaj tego nagłówka.
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-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-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.
- 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. When using urllib3's proxy support with `ProxyManager`, the `Proxy-Authorization` header is only sent to the configured proxy, as expected. However, when sending HTTP requests *without* using urllib3's proxy support, it's possible to accidentally configure the `Proxy-Authorization` header even though it won't have any effect as the request is not using a forwarding proxy or a tunneling proxy. In those cases, urllib3 doesn't treat the `Proxy-Authorization` HTTP header as one carrying authentication material and thus doesn't strip the header on cross-origin redirects. Because this is a highly unlikely scenario, we believe the severity of this vulnerability is low for almost all users. Out of an abundance of caution urllib3 will automatically strip the `Proxy-Authorization` header during cross-origin redirects to avoid the small chance that users are doing this on accident. Users should use urllib3's proxy support or disable automatic redirects to achieve safe processing of the `Proxy-Authorization` header, but we still decided to strip the header by default in order to further protect users who aren't using the correct approach. We believe the number of usages affected by this advisory is low. It requires all of the following to be true to be exploited: 1. Setting the `Proxy-Authorization` header without using urllib3's built-in proxy support. 2. Not disabling HTTP redirects. 3. Either not using an HTTPS origin server or for the proxy or target origin to redirect to a malicious origin. Users are advised to update to either version 1.26.19 or version 2.2.2. Users unable to upgrade may use the `Proxy-Authorization` header with urllib3's `ProxyManager`, disable HTTP redirects using `redirects=False` when sending requests, or not user the `Proxy-Authorization` header as mitigations.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

