Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconCraft pickle with profile.Profile.runctx __reduce__ payload
-
DeliveryPublish to model registry or supply chain
-
ExploitVictim downloads artifact
-
Installpicklescan scan returns clean
-
C2Victim calls pickle.load on file
-
ExecutePython executes embedded command
-
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 | The victim must be running picklescan at a version earlier than 0.0.29 AND must rely on its verdict to decide whether to call pickle.load()/torch.load() on attacker-supplied content; if either condition is absent the bug is inert. The attacker also needs a delivery channel for the malicious pickle (model registry upload, shared dataset, supply-chain dependency) and the victim must take the user action of loading the scanned file (CVSS UI:P). No authentication to the victim system is required (PR:N), but execution runs only with the privileges of the Python process that performs the load. |
| Impact | The CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N, 7.6) accurately captures the threat model: an attacker delivers a malicious pickle over the network, but execution depends on a victim choosing to load it (UI:P) after picklescan greenlights it (AT:P - present-attack-requirement that the target uses picklescan as their gate). No KEV listing and no EPSS data are provided, so this is not confirmed actively exploited; however, publicly available exploit code exists in the GHSA advisory and the payload is trivially adaptable. Real-world risk concentrates on ML/AI pipelines that ingest third-party model weights from Hugging Face or similar registries and trust picklescan as their primary defense - for those teams this is a high-priority gap, while environments that already treat pickle as untrusted regardless of scanner output are less exposed. |
| Exploit ScenarioDerived | An attacker uploads a poisoned PyTorch model to a public registry whose __reduce__ method returns (profile.Profile.runctx, (Profile(), "__import__('os').system(...)", {}, {})). A downstream MLOps pipeline runs picklescan, sees no flagged callables, and proceeds to torch.load() the file, which triggers pickle deserialization and executes the embedded shell command in the inference worker's context. The PoC from the GHSA advisory demonstrates this end-to-end in a few lines of Python. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 23, 2026
Detection bypass in picklescan prior to 0.0.29 allows attackers to smuggle remote code execution payloads through pickle files that the scanner incorrectly classifies as safe. The library fails to flag the built-in profile.Profile.runctx function when used in a __reduce__ method, so a downstream pickle.load() of the scanned file executes arbitrary Python. Publicly available exploit code exists in the GHSA-6vqj-c2q5-j97w advisory, though no active exploitation has been reported.
RemediationAI
Upgrade picklescan to version 0.0.29 or later, which adds profile.Profile.runctx to the detection list per commit aecd11be98702caa9ba9b12189d91ad596a36114; pin this minimum in requirements files and rebuild any container images that bundle the scanner. Review the GHSA-6vqj-c2q5-j97w advisory for the full patch details. As a compensating control until upgraded, treat picklescan results as advisory only and load untrusted pickle files inside a sandboxed worker (seccomp/gVisor/firejail) with no network egress and no filesystem write outside a tmpfs - accepting the latency and operational overhead of the sandbox - or convert incoming model weights to safetensors before loading, which eliminates the pickle code-execution surface entirely at the cost of requiring re-export of legacy artifacts.
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 static-analysis tool used to vet pickle files (commonly PyTorch model weights) for dangerous opcodes and callables before deserialization. CWE-502 (Deserialization of Untrusted Data) applies here in a layered way: pickle itself is the deserialization sink, while picklescan is the compensating control that is supposed to deny-list risky callables. The library maintains a list of known-bad imports (os.system, subprocess.*, eval, etc.) but missed profile.Profile.runctx - a stdlib profiler method that takes a string of code and an exec-style globals/locals pair, effectively equivalent to exec(). Affected CPE is cpe:2.3:a:picklescan:picklescan:* up to versions below 0.0.29, with the gap closed by commit aecd11b.
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 (AV:N), no auth needed (PR:N), but victim must load the scanned pickle (UI:R); full RCE yields C/I/A:H.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
picklescan before 0.0.29 fails to detect the profile.Profile.runctx function when analyzing pickle files, allowing attackers to embed undetected malicious code. Remote attackers can craft malicious pickle files using profile.Profile.runctx in the reduce method to achieve remote code execution when the pickle file is loaded.
Executive ViewAI
picklescan, a Python library deployed to validate pickle files before deserialization, contains a detection bypass that allows attackers to smuggle remote code execution payloads through pickle files incorrectly classified as safe. Organizations using picklescan as a security control for processing untrusted pickle data face direct remote code execution risk, as the scanner fails to flag the profile.Profile.runctx function when embedded in pickle files.
No vendor-released patch identified at time of analysis. Interim mitigations: (1) Disable picklescan reliance for untrusted pickle sources; (2) Execute pickle deserialization in isolated sandbox environments with minimal privileges and network access; (3) Implement strict source allowlists and cryptographic integrity validation on pickle files; (4) Audit and limit pickle usage within applications; (5) Deploy monitoring to detect profile.Profile.runctx in pickle payloads.
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 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.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-210305
GHSA-mg57-j93w-g3c7
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB