Skip to main content

picklescan EUVDEUVD-2025-210307

| CVE-2025-71370 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. Recon
    Attacker crafts pickle with execWrapper reduce
  2. Delivery
    Publishes model to hub or sends to victim
  3. Exploit
    Victim scans file with picklescan ≤0.0.27
  4. Install
    Scanner reports file as clean
  5. C2
    Victim calls pickle.load / torch.load
  6. Execute
    execWrapper executes attacker code string
  7. Impact
    RCE 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% 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 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

picklescan 0 <0.0.28

Affected Packages

pypi picklescan fix: 0.0.28

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

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

Malicious file delivered over network, victim must scan-then-load (UI:R); execWrapper yields arbitrary code execution so C/I/A all High.

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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.4%
Top 70% exploitable
Prevalence
Low
niche security tool used within ML/PyTorch supply-chain workflows
Threat Intel
1
1 sources
Exploit
POC
Public exploit code exists
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA CIRCL GitHub VulDB

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.4%
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.

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