Nowo zidentyfikowana podatność oznaczona jako CVE (Common Vulnerabilities and Exposures, identyfikator publicznie znanej luki) CVE-2025-71366 [cve.id] uzyskała ocenę 8.1 w skali CVSS (Common Vulnerability Scoring System — skala 0-10 oceniająca powagę luki) [cve.cvss]. Problem dotyczy biblioteki picklescan w wersjach wcześniejszych niż 0.0.28 1. Narzędzie to jest powszechnie stosowane w ekosystemie Pythona do weryfikacji bezpieczeństwa plików w formacie pickle, często używanych do zapisu i odczytu modeli uczenia maszynowego.

Zaobserwowaliśmy, że luka pozwala na przygotowanie pliku .pkl, który omija mechanizmy detekcji skanera 2. W konsekwencji, załadowanie takiego pliku przez aplikację może prowadzić do zdalnego wykonania kodu (RCE — Remote Code Execution) na serwerze lub stacji roboczej dewelopera 3. Zagrożenie jest szczególnie istotne dla polskich firm i zespołów badawczych z sektora AI/ML, które często polegają na modelach z publicznych repozytoriów.

TL;DR

  • Produkt: Biblioteka picklescan dla języka Python.
  • Podatność: CVE-2025-71366 [cve.id], ominięcie mechanizmów bezpieczeństwa.
  • Wektor ataku: Spreparowany plik w formacie pickle zawierający niewykrywane przez starsze wersje skanera wywołanie funkcji torch.utils.bottleneck.__main__.run_cprofile 1.
  • Wpływ: Zdalne wykonanie dowolnego kodu (RCE) na systemie, który przetwarza złośliwy plik 3.
  • Kogo dotyczy: Zespoły deweloperskie, inżynierowie danych i badacze AI/ML używający picklescan w wersji poniżej 0.0.28 [cve.affected]. Dotyczy to również polskich software house’ów i firm wdrażających rozwiązania oparte na uczeniu maszynowym.
  • Wskaźniki kompromitacji (IoC): Brak publicznych hashy plików lub adresów IP. Jedynym wskaźnikiem jest obecność wywołania torch.utils.bottleneck.__main__.run_cprofile w plikach pickle.
  • Pierwszy ruch reagowania: Identyfikacja projektów używających picklescan i natychmiastowa aktualizacja biblioteki do wersji 0.0.28 lub nowszej.

Wektor ataku

Format pickle w Pythonie to standardowy sposób na serializację, czyli proces konwersji obiektów (takich jak modele AI, konfiguracje czy dane) do postaci binarnej, którą można zapisać na dysku lub przesłać przez sieć. Jego fundamentalną cechą, a zarazem największym ryzykiem, jest zdolność do wykonywania kodu podczas deserializacji. Z tego powodu ładowanie plików .pkl z niezaufanych źródeł jest z natury ryzykowne.

Biblioteka picklescan powstała, aby to ryzyko minimalizować. Jej zadaniem jest statyczna analiza pliku pickle i identyfikacja potencjalnie złośliwych operacji, zanim plik zostanie faktycznie załadowany przez interpreter Pythona. Luka CVE-2025-71366 polega na tym, że picklescan w wersjach starszych niż 0.0.28 nie potrafi wykryć specyficznego, złośliwego wywołania funkcji torch.utils.bottleneck.__main__.run_cprofile 1.

Scenariusz ataku wygląda następująco:

  1. Operator przygotowuje złośliwy plik .pkl, osadzając w nim ładunek wykonujący kod, ukryty za pomocą wspomnianej funkcji 4.
  2. Plik jest udostępniany w miejscu, z którego mogą go pobrać potencjalne ofiary — na przykład w publicznym repozytorium modeli AI, jako załącznik w mailu phishingowym lub na forum dla deweloperów.
  3. Zespół deweloperski lub system automatyczny pobiera plik i, w ramach procedur bezpieczeństwa, skanuje go za pomocą podatnej wersji picklescan. Skaner nie zgłasza żadnych ostrzeżeń, uznając plik za bezpieczny 2.
  4. Aplikacja ofiary ładuje „bezpieczny” plik. W tym momencie następuje deserializacja, a ukryty w pliku kod zostaje wykonany na serwerze lub stacji roboczej 3.

Podatność została sklasyfikowana w ramach CWE (Common Weakness Enumeration — klasyfikacja typów luk) jako CWE-502: Deserializacja niezaufanych danych 5. Jest to klasyczny problem w wielu językach programowania, gdzie dane wejściowe mają wpływ na logikę wykonywania programu.

Wskaźniki kompromitacji

Na ten moment nie zidentyfikowano publicznie dostępnych wskaźników kompromitacji (IoC — Indicators of Compromise), takich jak hashe plików czy adresy IP serwerów C2 (Command and Control — serwer kontrolujący zainfekowane maszyny). Jedynym technicznym wskaźnikiem, który może pomóc w detekcji, jest sama nazwa funkcji używanej do obejścia skanera. Zespoły bezpieczeństwa powinny monitorować swoje zasoby pod kątem jej obecności.

# Wskaźnik techniczny (łańcuch znaków do wyszukania w plikach .pkl)
# Źródło: Opis podatności CVE-2025-71366 [^1]
torch.utils.bottleneck.__main__.run_cprofile

Zalecamy przeszukanie istniejących repozytoriów modeli i danych pod kątem tego ciągu znaków, najlepiej przy użyciu narzędzi nie wykonujących deserializacji, np. grep.

Co zrobić w 24-48h

Rekomendowane podejście opiera się na założeniu, że każda instancja picklescan w wersji poniżej 0.0.28 może być podatna. Poniższe kroki nie zastępują pełnej konsultacji bezpieczeństwa, ale stanowią podstawę do natychmiastowej reakcji.

  1. Identyfikacja i audyt zależności. Priorytetem jest zidentyfikowanie wszystkich projektów i środowisk w organizacji, które korzystają z biblioteki picklescan. Należy przeszukać pliki requirements.txt, Pipfile.lock, poetry.lock oraz inne manifesty zależności w poszukiwaniu wpisu picklescan i zweryfikować jego wersję.

  2. Natychmiastowa aktualizacja. Wszędzie tam, gdzie zidentyfikowano podatną wersję, należy bezzwłocznie zaktualizować bibliotekę do wersji 0.0.28 lub nowszej. Można to zrobić poleceniem:

    pip install --upgrade picklescan
  3. Ponowne skanowanie zasobów. Wszystkie posiadane pliki .pkl, zwłaszcza te pochodzące z zewnętrznych źródeł, powinny zostać ponownie przeskanowane przy użyciu zaktualizowanej wersji picklescan. 4. Weryfikacja łańcucha dostaw. Incydent ten powinien stać się pretekstem do przeglądu polityki bezpieczeństwa w kontekście łańcucha dostaw oprogramowania (software supply chain). Polskie firmy, zwłaszcza z sektora MŚP, często nie posiadają sformalizowanych procedur weryfikacji zewnętrznych modeli AI. Należy rozważyć wprowadzenie polityki dopuszczającej jedynie modele z zaufanych, zweryfikowanych źródeł.

  4. Monitoring i logowanie. Warto sprawdzić, czy systemy monitoringu, takie jak EDR (Endpoint Detection and Response) lub SIEM, rejestrują uruchamianie procesów potomnych przez aplikacje w Pythonie. Podejrzana aktywność sieciowa lub systemowa pochodząca z procesu, który właśnie załadował plik pickle, jest sygnałem alarmowym. ## Źródła

  5. 1, 2, 4, 3, [cve.id], [cve.cvss], [cve.severity], [cve.affected] nvd.nist.gov › CVE 2025 71366

  6. 5 thehackerwire.com › CVE 2025 71366

Źródła

Zobacz też

Przypisy

  1. picklescan w wersjach wcześniejszych niż 0.0.28 nie wykrywa złośliwych wywołań funkcji torch.utils.bottleneck.__main__.run_cprofile w plikach pickle. — nvd.nist.gov › CVE 2025 71366 2 3 4

  2. Luka ta pozwala atakującym na ominięcie kontroli bezpieczeństwa. — nvd.nist.gov › CVE 2025 71366 2 3

  3. Osadzony kod może prowadzić do arbitralnego wykonania kodu, gdy ofiary załadują te pliki. — nvd.nist.gov › CVE 2025 71366 2 3 4

  4. Zdalni atakujący mogą osadzić niewykryty kod w plikach pickle. — nvd.nist.gov › CVE 2025 71366 2

  5. Luka została sklasyfikowana jako CWE-502. — thehackerwire.com › CVE 2025 71366 2