Skip to main content

picklescan CVE-2025-71376

| EUVDEUVD-2025-210308 HIGH
Deserialization of Untrusted Data (CWE-502)
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 idlelib.autocomplete reduce payload
  2. Delivery
    Distribute via model hub or supply chain
  3. Exploit
    Victim scans with vulnerable picklescan, no detection
  4. Execution
    Victim calls pickle.load/torch.load
  5. Persist
    fetch_completions evaluates attacker expression
  6. Impact
    Arbitrary command execution 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 that the victim relies on picklescan (any version <0.0.29) to vet an attacker-supplied pickle/PyTorch file and then deserializes that file with pickle.load or torch.load; the attacker does not need credentials on the victim's system. The CVSS 4.0 metrics AT:P and UI:P correctly capture the two limiting factors: a specific deployment condition (use of vulnerable picklescan as the trust gate) and user interaction (the victim must load the file). It does not work against environments that load pickles without picklescan and reject all untrusted pickles anyway, nor against environments that have upgraded to 0.0.29 or use safetensors-only loaders.

Impact

The CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N) scores 7.6 and is internally consistent: exploitation is network-deliverable through a malicious pickle file but requires both an attack requirement (the victim must use picklescan as their gatekeeper) and user interaction (loading the file). The vulnerability is not on the CISA KEV list and no EPSS score was supplied, so widespread opportunistic exploitation is not documented; however, a working PoC is published in the GHSA advisory, lowering the barrier substantially. The real-world risk concentrates on ML supply-chain pipelines that whitelist a model after picklescan reports it clean - in those workflows the impact is full RCE in the loading process. No conflict between sources was observed; the main missing signal is EPSS and any KEV/active-exploitation telemetry.

Exploit ScenarioDerived

An attacker uploads a poisoned PyTorch checkpoint or pickle artifact to a public model hub or supplies it via a phishing/supply-chain channel; the victim runs picklescan against the file, sees no findings, and then calls pickle.load() (often implicitly via torch.load), at which point the __reduce__ payload invokes idlelib.autocomplete.AutoComplete.fetch_completions with an os.system command and gains code execution in the data scientist's environment or model-serving job. The PoC in the GHSA advisory (EvilIdlelibAutocompleteFetchCompletions) demonstrates the full primitive in a few lines and would be trivial to weaponize.

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 23, 2026

Detection bypass in picklescan versions prior to 0.0.29 allows attackers to smuggle arbitrary code execution payloads through malicious pickle files by leveraging idlelib.autocomplete.AutoComplete.fetch_completions inside the __reduce__ method. Because the scanner does not flag this built-in Python function as dangerous, victims who rely on picklescan to vet PyTorch models or other pickle artifacts will load attacker-controlled code under pickle.load(). Publicly available exploit code exists (in the GHSA advisory), though no active in-the-wild exploitation has been reported.

RemediationAI

Upgrade picklescan to 0.0.29 or later (pip install --upgrade 'picklescan>=0.0.29'), which incorporates the upstream fix in commit aecd11be98702caa9ba9b12189d91ad596a36114 referenced from the GHSA at https://github.com/mmaitre314/picklescan/security/advisories/GHSA-7cq8-mj8x-j263. If immediate upgrade is not feasible, treat picklescan output as advisory only and do not load untrusted pickle files based solely on a clean scan; preferred compensating controls include switching model distribution to safetensors where possible (eliminates pickle-based RCE entirely but requires re-saving models), executing pickle.load only inside a sandboxed/ephemeral process with no network or filesystem write access (adds operational overhead and may break model loaders that expect local cache), and explicitly blocking idlelib.* imports via a custom Unpickler.find_class allowlist (most reliable short-term mitigation but must be paired with a broader allowlist policy to be effective).

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 security utility (pip/picklescan) used to statically scan pickle files for dangerous opcodes and callables before deserialization, frequently applied to PyTorch model weights distributed via Hugging Face and similar registries. The root cause is a CWE-502 deserialization weakness manifesting as an incomplete denylist: the scanner's catalog of dangerous callables omits idlelib.autocomplete.AutoComplete.fetch_completions, a function in Python's standard library IDLE module that internally evaluates supplied expressions during tab-completion logic. By returning this callable from __reduce__, an attacker turns pickle deserialization into expression evaluation (e.g., __import__('os').system(...)) without tripping any of picklescan's detectors. The CPE cpe:2.3:a:picklescan:picklescan:*:*:* covers all versions before the 0.0.29 fix.

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 pickle with low complexity, no attacker auth, but requires victim to load the file (UI:R); full RCE yields 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 23, 2026 - 14:17 EUVD

DescriptionCVE.org

picklescan before 0.0.29 fails to detect malicious pickle files using idlelib.autocomplete.AutoComplete.fetch_completions in reduce methods. Attackers can embed undetected code in pickle files that executes arbitrary commands when loaded by victims.

Executive ViewAI

Why It Matters

Picklescan, a Python security tool widely used to validate untrusted PyTorch models and serialized objects, fails to detect a method of code injection that allows attackers to embed executable payloads in files marked as safe. Organizations that rely on this tool to secure their machine learning pipelines face direct risk of arbitrary code execution on systems that process validated models, especially as publicly available exploit code exists. This represents a critical control failure in securing external model artifacts.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Disable picklescan validation immediately for untrusted inputs; enforce sandboxed or air-gapped execution for external model loading; implement manual code review and threat assessment for PyTorch models from external sources; require cryptographic signatures for all internal model artifacts.

Threat Intelligence Overview

EPSS Score
0.3%
Top 78% exploitable
Prevalence
Low
niche ML-security scanner, narrow but growing PyTorch ecosystem adoption
Threat Intel
1
1 sources
Exploit
POC
Public exploit code exists
Social Media
1
Sightings
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

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.

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-71361 HIGH POC
7.6 Jun 24

Detection bypass in picklescan before 0.0.29 allows malicious pickle files to evade scanning by abusing the undetected i

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