picklescan w wersjach przed 1.0.4 zawiera podatność pozwalającą atakującym na ominięcie całej listy zablokowanych funkcji poprzez pośrednie wywołania REDUCE z użyciem pkgutil.resolve_name. Luka umożliwia zdalne wykonanie kodu (RCE) bez uwierzytelnienia i jest oceniana jako krytyczna z wynikiem CVSS 10.0.
▸ Pokaż oryginał (EN)
picklescan before 1.0.4 fails to block pkgutil.resolve_name, allowing attackers to bypass the entire blocklist by resolving any dangerous function through indirect REDUCE calls. Remote attackers can invoke any blocked function such as os.system, builtins.exec, or subprocess.call to achieve remote code execution.
picklescan to narzędzie służące do wykrywania złośliwych plików pickle poprzez blokowanie znanych niebezpiecznych funkcji. Podatność wynika z niepełnej listy blokad (CWE-183) — narzędzie nie blokowało funkcji pkgutil.resolve_name, która pozwala dynamicznie rozwiązywać nazwy dowolnych obiektów Pythona. Atakujący może skonstruować złośliwy plik pickle, który przez pośrednie wywołania REDUCE korzysta z pkgutil.resolve_name w celu uzyskania referencji do zablokowanych normalnie funkcji, takich jak os.system, builtins.exec czy subprocess.call. Skaner nie wykrywa takiego pliku jako złośliwego, a jego wykonanie prowadzi do uruchomienia dowolnego kodu.
Zdalny atakujący może wykonać dowolny kod na serwerze lub stacji roboczej przetwarzającej złośliwy plik pickle, uzyskując pełną kontrolę nad systemem oraz potencjalnie nad środowiskiem, w którym działa aplikacja.
Należy zaktualizować picklescan do wersji 1.0.4 lub nowszej. Szczegóły dostępne w referencjach producenta (GitHub Security Advisory GHSA-vvpj-8cmc-gx39).
picklescan w wersjach przed 1.0.4
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X