Skip to main content

picklescan EUVDEUVD-2025-210305

| CVE-2025-71341 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
    Craft pickle with profile.Profile.runctx __reduce__ payload
  2. Delivery
    Publish to model registry or supply chain
  3. Exploit
    Victim downloads artifact
  4. Install
    picklescan scan returns clean
  5. C2
    Victim calls pickle.load on file
  6. Execute
    Python executes embedded command
  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

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.

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

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

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 (AV:N), no auth needed (PR:N), but victim must load the scanned pickle (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 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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.5%
Top 63% exploitable
Prevalence
Low
niche security tool used mainly by ML/AI pipelines handling pickled models
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.5%
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-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-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