Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAttacker crafts pickle with execWrapper reduce
-
DeliveryPublishes model to hub or sends to victim
-
ExploitVictim scans file with picklescan ≤0.0.27
-
InstallScanner reports file as clean
-
C2Victim calls pickle.load / torch.load
-
ExecuteexecWrapper executes attacker code string
-
ImpactRCE in ML pipeline context
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V1 - Encoding and Sanitization Safe deserialization, type allowlists
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that (1) the victim uses picklescan ≤ 0.0.27 as a pre-load safety gate, (2) the victim subsequently calls pickle.load() or torch.load() on the scanned file, and (3) the host Python environment has torch installed so that torch.jit.unsupported_tensor_ops.execWrapper resolves at unpickle time. Limiting factors: user interaction is required (UI:P - the victim must actively load the file), and the bypass only matters where picklescan is treated as the trust boundary; environments that never deserialize untrusted pickle files, or that load models only through safetensors, are not exposed. No special network position or authentication is required to deliver the malicious file. |
| Impact | The CVSS 4.0 vector CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N (7.6) reflects that exploitation is network-deliverable and unauthenticated, but requires both an attack-template condition (AT:P - the victim must run picklescan as a gating step and then load the file) and user interaction (UI:P - the victim chooses to pickle.load the scanned file). No EPSS score, no CISA KEV listing, and no reports of in-the-wild abuse were supplied, so this is not a mass-exploitation candidate today; however, publicly available exploit code exists in the GHSA advisory and the bypass is trivial to reproduce. Real-world risk is concentrated in ML model-hosting platforms, model hubs, and CI pipelines that treat picklescan as a trust boundary - for those users this is a priority fix because the tool's failure mode is silent (clean scan, then RCE). Note one nuance: VA:N (no availability impact) is conservative - execWrapper allows arbitrary code execution, which in practice can also destroy availability, but the base-metric mapping here follows the GHSA scoring. |
| Exploit ScenarioDerived | An attacker uploads a malicious PyTorch model to a public hub or sends it to a victim ML engineer; the file embeds a __reduce__ returning torch.jit.unsupported_tensor_ops.execWrapper with an attacker-supplied code string. The victim runs picklescan, which reports the file as clean because execWrapper was not on its dangerous-function list, then calls pickle.load() (directly or via torch.load), at which point the payload executes with the privileges of the loading process. A working PoC is published in the GHSA advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 23, 2026
Detection bypass in picklescan before 0.0.28 allows attackers to embed malicious torch.jit.unsupported_tensor_ops.execWrapper calls in pickle files that evade the scanner and execute arbitrary code when later loaded via pickle.load(). Publicly available exploit code exists in the GHSA advisory, and the flaw directly undermines the security guarantee picklescan is meant to provide for PyTorch model files. No CISA KEV listing and no EPSS data are provided, but the scanner bypass nature makes this a meaningful supply-chain risk for ML pipelines.
RemediationAI
Vendor-released patch: picklescan 0.0.28 - upgrade with 'pip install --upgrade picklescan>=0.0.28' across all environments that scan untrusted pickle or PyTorch artifacts, and rebuild any container images that pin earlier versions. The underlying fix is PR https://github.com/mmaitre314/picklescan/pull/47 (commit 7f994d62084fe43f1cffdef2f9bae6923344ef53), and the authoritative advisory is https://github.com/mmaitre314/picklescan/security/advisories/GHSA-vr7h-p6mm-wpmh with corroborating analysis at https://www.vulncheck.com/advisories/picklescan-remote-code-execution-via-torch-jit-unsupported-tensor-ops-execwrapper. Until the upgrade is rolled out, compensating controls include refusing to pickle.load any file whose provenance is not cryptographically verified, switching model serialization to safetensors where feasible (trade-off: requires model conversion and may not cover every PyTorch artifact), and sandboxing model-loading workers in a non-privileged container with no network egress so that a successful execWrapper payload cannot reach internal services; note that adding a second scanner such as ModelScan is helpful but does not guarantee coverage of this specific gadget.
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 inspect pickle files - including PyTorch model artifacts that wrap pickle internally - for known-dangerous import/call patterns before they are deserialized. The root cause is CWE-502 (Deserialization of Untrusted Data) expressed as an incomplete denylist: picklescan did not recognize torch.jit.unsupported_tensor_ops.execWrapper as a dangerous callable, even though it accepts a code string plus globals/locals dicts and executes them, providing the same primitive as eval/exec. Affected CPE is cpe:2.3:a:picklescan:picklescan:* for all versions up to and including 0.0.27, with the gap closed by adding execWrapper to the unsafe-globals list in PR #47 (commit 7f994d6).
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
Malicious file delivered over network, victim must scan-then-load (UI:R); execWrapper yields arbitrary code execution so C/I/A all High.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
picklescan before 0.0.28 fails to detect malicious torch.jit.unsupported_tensor_ops.execWrapper function calls embedded in pickle files. Attackers can craft malicious pickle files that bypass picklescan detection and execute arbitrary code when loaded via pickle.load().
Executive ViewAI
Picklescan, a critical validation tool for PyTorch model files, contains a detection bypass that allows attackers to execute arbitrary code through maliciously crafted pickle files. This vulnerability directly threatens organizations' supply-chain security for machine-learning pipelines and undermines the integrity controls these organizations have implemented.
Apply vendor patch: upgrade to picklescan 0.0.28 or later. Until patched, restrict model file ingestion to trusted sources only and require manual security review of model code before loading.
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
Insecure deserialization occurs when an application converts serialized data (a stream of bytes representing an object's state) back into a living object without proper validation.
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 smuggle arbitrary code through pickle files by abusing
Detection bypass in picklescan before 0.0.29 allows malicious pickle files to evade scanning by abusing the undetected i
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-210307
GHSA-q8qp-8jq6-78mc
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB