CVE-2026-48737
ŚrednieCVSS 4.9Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 8 - wyżej niż 8% wszystkich znanych CVE
Streszczenie
W pyLoad przed wersją 0.5.0b3.dev101 funkcja is_global_address w src/pyload/core/utils/web/check.py opiera się na klasyfikacji adresów globalnych Pythona bez analizy adresów IPv4 osadzonych w adresach IPv6 6to4 lub NAT64. Użytkownik o niskich uprawnieniach może przesłać literał IPv6 przez parse_urls do strażnika is_global_host przed rozwiązywaniem nazw, a curl rozwiązuje nazwy hostów przed zastosowaniem tej samej podatnej kontroli, co pozwala na połączenia do osadzonych adresów loopback, prywatnych, CGNAT lub link-local IPv4.
Ocena ryzyka
Udana eksploatacja może umożliwić rozpoznanie sieci wewnętrznej, potwierdzenie czasowe, ograniczone zakłócenie usług lub ujawnienie metadanych chmury, gdy opakowany adres jest routowalny.
Rekomendacja
Zaktualizuj pyLoad do wersji 0.5.0b3.dev101, w której problem został naprawiony.
Inne podatności w pyLoad
Zobacz wszystkie- CVE-2026-123816Wysokie
W pyLoad przed wersją 0.5.0b3.dev101 funkcja Api.check_apikey buforuje udaną walidację w self._apikey_cache wyłącznie na podstawie kontrolowanego przez atakującego key_id. Po zapełnieniu cache przez prawidłowy klucz sfałszowany klucz API o tym samym key_id trafia na ścieżkę cache-hit bez porównania apikey[-43:] z zapisanym hashem przez hmac.compare_digest. Ponieważ identyfikatory kluczy to małe kolejne liczby całkowite, nieuwierzytelniony zdalny atakujący może wyliczyć aktywny identyfikator i przejąć uprawnienia właściciela klucza w ciągu 300 sekund życia cache.
- CVE-2026-123814Średnie
W menedżerze pobierania pyLoad w wersjach przed 0.5.0b3.dev102 uwierzytelniony użytkownik niebędący administratorem, posiadający uprawnienie SETTINGS, może skonfigurować WindowsPhoneNotify poprzez /json/save_config, ustawiając pushurl, pushid i enabled. Następnie WindowsPhoneNotify.send używa http.client.HTTPConnection bez walidacji celu pyLoad, co pozwala na ślepe wysłanie żądania POST z serwera pyLoad do wewnętrznego hosta, portu i ścieżki wybranych przez atakującego.
- CVE-2026-123813Wysokie
W pyLoad przed wersją 0.5.0b3.dev102 zmiana uprawnień lub hasła użytkownika przez administratora przez /api/set_user_permission lub /api/change_password nie unieważnia istniejących sesji Flask. Funkcje Api.set_user_permission i Api.change_password aktualizują bazę danych, ale autoryzacja sesji nadal korzysta z ról i uprawnień skopiowanych przy logowaniu przez set_session w webui/app/helpers.py. Użytkownik może więc zachować odebrane uprawnienia lub dalej używać sesji założonej starym hasłem przez skonfigurowany czas życia sesji.
- CVE-2026-42315Wysokie
W pyLoad przed wersją 0.5.0b3.dev100 występuje podatność, która pozwala użytkownikowi z uprawnieniami Perms.MODIFY na określenie dowolnych katalogów jako lokalizacji pobierania pakietu poprzez funkcję API set_package_data(). Brak sanitizacji w kluczu '_folder' umożliwia to działanie.
- CVE-2026-42313Wysokie
W pyLoad przed wersją 0.5.0b3.dev100 metoda API set_config_value() nieprawidłowo zarządzała opcjami bezpieczeństwa, co pozwalało uwierzytelnionym użytkownikom z uprawnieniami do ustawień na włączenie proxy i skierowanie ruchu przez kontrolowany przez nich host.
- CVE-2026-123815Krytyczne
W pyLoad funkcja UnTar._safe_extractall waliduje ścieżki elementów archiwum i cele linków, ale nie wywołuje TarInfo.isdev, aby odrzucić specjalne typy elementów tar przed wywołaniem tarfile.extractall. W Pythonie 3.9–3.13 tarfile domyślnie używa filtra fully_trusted, więc użytkownik z uprawnieniami ADD i STATUS może spowodować rozpakowanie archiwum zawierającego urządzenia znakowe, blokowe lub FIFO. Gdy pyLoad działa z uprawnieniami systemowymi (np. oficjalny Docker jako root), może to ujawnić surowe urządzenia i naruszyć bezpieczeństwo hosta.
- CVE-2026-35459Krytyczne
pyLoad w wersji 0.5.0b3.dev96 i wcześniejszych zawiera podatność SSRF. Poprawka dla CVE-2026-33992 dodała walidację IP, ale pycurl automatycznie podąża za przekierowaniami HTTP, a cele przekierowań nie są sprawdzane. Uwierzytelniony użytkownik z uprawnieniami ADD może ominąć filtr SSRF, używając URL przekierowującego do wewnętrznego adresu.
- CVE-2026-75597Średnie
Podatność w pyLoad, menedżerze pobierania, gdzie trasa `/web/<path:filename>` renderuje szablony Jinja2 bez wymaganego uwierzytelnienia. Dodatkowo literówka w obsłudze wyjątków powoduje wyciek wewnętrznych nazw zmiennych Jinja2 w odpowiedziach HTTP 500.
- CVE-2026-48484Średnie
Podatność w pyLoad, menedżerze pobierania, gdzie funkcja API `rpc` odczytuje całą zawartość przesłanego pliku do pamięci bez limitu rozmiaru, co może doprowadzić do wyczerpania pamięci serwera i zakończenia procesu.
- CVE-2026-48987Średnie
W pyLoad przed wersją 0.5.0b3.dev101 klasa EventManager w src/pyload/core/managers/event_manager.py dodaje obiekt Client do listy klientów dla każdego unikalnego UUID przesłanego do uwierzytelnionego endpointu API getEvents, ale get_events nie wywołuje dostępnej metody clean usuwającej nieaktywnych klientów. Uwierzytelniony użytkownik może wielokrotnie przesyłać unikalne wartości UUID, powodując nieograniczony wzrost liczby obiektów klientów i pamięci procesu.
Oryginalny opis (angielski, źródło NVD)
pyLoad is a free and open-source download manager written in Python. Prior to 0.5.0b3.dev101, is_global_address in src/pyload/core/utils/web/check.py relies on Python's global-address classification without examining IPv4 destinations embedded in 6to4 or NAT64 IPv6 addresses. A low-privileged user can submit an IPv6 literal through parse_urls to the pre-resolution is_global_host guard. Because host_to_ip is pinned to AF_INET, that guard does not evaluate a hostname's AAAA result. Separately, curl resolves hostnames before the pycurl PREREQFUNC in src/pyload/core/network/http/http_request.py applies the same vulnerable is_global_address check to the actual connection address, so a transition-form AAAA result can be permitted even when it terminates at an embedded loopback, private, CGNAT, or link-local IPv4 address. Exploitation requires the pyLoad host to route the applicable transition mechanism, including 6to4 on affected Python 3.9 through 3.11 deployments or NAT64 on a network with a NAT64 gateway. Successful exploitation can enable internal-network reconnaissance, timing-based confirmation, limited service disruption, or cloud metadata disclosure where the wrapped address is routable. This issue is fixed in version 0.5.0b3.dev101.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

