Skip to main content

picklescan EUVDEUVD-2025-210392

| CVE-2025-71374 HIGH
Deserialization of Untrusted Data (CWE-502)
2026-06-30 VulnCheck GHSA-f79r-3fcg-p98x
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 profile.Profile.run __reduce__ payload
  2. Delivery
    Deliver as model/artifact to target
  3. Exploit
    Bypass picklescan (<0.0.29) detection
  4. Execution
    Victim deserializes file
  5. Impact
    Execute arbitrary code 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 three concrete conditions: (1) the victim must use picklescan version < 0.0.29 as their safety gate for an attacker-supplied pickle or ML model file; (2) the malicious pickle must contain a __reduce__ method referencing the standard-library profile.Profile.run callable, which the vulnerable scanner does not detect; and (3) the victim must subsequently deserialize/load that file (pickle.load or equivalent model-load), the passive user interaction (UI:P) that triggers code execution. Limiting factors: code executes only on deserialization, not on scanning alone, and only organizations that rely on picklescan's verdict to approve untrusted pickles are meaningfully exposed - environments that already refuse untrusted pickles or use safetensors are largely unaffected. No special privileges are needed (PR:N), but the attack requirement (AT:P) means the attacker depends on the victim's specific scan-then-trust-then-load workflow.

Impact

Signals are mixed and should be weighed carefully. The CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:P, VC:H/VI:H/VA:N) yields 7.6 High: network-reachable, low complexity, no privileges, but it requires both a passive user interaction (the victim must scan and then load the file) and an attack requirement (AT:P) - the victim must actually rely on picklescan as their gate. There is no EPSS score provided, no CISA KEV listing, and no POC referenced, so this is not evidence of active or widespread exploitation; the realistic threat is targeted ML supply-chain poisoning rather than mass exploitation. The notable nuance is that this is a detection-bypass, not a primary RCE: pickle deserialization of untrusted data is already unsafe, so the practical impact lands only on organizations that trust picklescan's verdict as a safety boundary. For those teams the risk is meaningful because it produces a false sense of safety; for teams that never load untrusted pickles regardless, real-world risk is low. Note that the underlying RCE itself impacts availability as well, so the official VA:N may understate full system-compromise potential - verify against your deployment.

Exploit ScenarioDerived

An attacker uploads a malicious pickled ML model containing a __reduce__ payload that calls profile.Profile().run('<attacker code>') to a model hub or shared artifact store. A victim, following secure practice, runs picklescan against the file, receives a 'no dangerous content' verdict, and loads the model with pickle.load(); the embedded code executes in the victim's process. No public POC is referenced, but the technique is straightforward given the pickle __reduce__ pattern and the named gadget.

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

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

Alert me

AnalysisAIv1 – Jun 30, 2026

Arbitrary code execution bypass in picklescan before 0.0.29 lets attackers smuggle malicious Python pickle files past the scanner by abusing the built-in profile.Profile.run function inside a pickle __reduce__ method, which picklescan's blocklist fails to flag. Because picklescan is a defensive ML supply-chain tool meant to certify pickle/model files as safe, the flaw is a security-control evasion: a file marked 'clean' executes attacker code on deserialization. No public exploit is identified at time of analysis, and it is not in CISA KEV; the CVSS 4.0 base score is 7.6 (High).

RemediationAI

Vendor-released patch: upgrade picklescan to 0.0.29 or later, which extends detection to cover profile.Profile.run (see GHSA-x696-vm39-cp64). Until upgraded, do not treat a picklescan 'clean' result as sufficient authorization to load a pickle/model file from an untrusted source. As compensating controls: load untrusted models only in sandboxed/isolated environments (containers without network egress, least-privilege service accounts) so that any unpickling RCE is contained - trade-off is added pipeline complexity; prefer safer serialization formats such as safetensors for model weights where feasible, eliminating the pickle RCE primitive entirely - trade-off is conversion effort and limited support for arbitrary Python objects; and add a custom denylist/allowlist entry for profile.Profile.run and other cProfile/profile callables if you maintain wrapper scanning logic. Pull the exact patched version from the official PyPI/GitHub release referenced in the advisory.

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 utility (cpe:2.3:a:picklescan:picklescan) widely used to statically inspect pickle and serialized ML model files for dangerous opcodes/imports before they are loaded with pickle.load(). The Python pickle protocol allows objects to define a __reduce__ method that returns a callable plus arguments to be invoked at unpickling time; this is the canonical pickle RCE primitive (CWE-502, Deserialization of Untrusted Data). picklescan works by matching the callables referenced in a pickle stream against a denylist of known-dangerous globals (os.system, subprocess, exec, etc.). The root cause here is an incomplete denylist: the standard-library cProfile/profile module's profile.Profile.run method accepts and executes a string of Python code, giving an arbitrary-code-execution gadget that picklescan did not enumerate. Thus a __reduce__ returning (profile.Profile().run, ('<malicious code>',)) survives the scan but runs the supplied code when the file is deserialized.

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

Remotely delivered file with no privileges (AV:N/PR:N) but the victim must scan-trust-then-load it (UI:R), and successful unpickling yields full arbitrary code execution (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
Jul 01, 2026 - 02:16 EUVD

DescriptionCVE.org

picklescan before 0.0.29 fails to detect the built-in python profile.Profile.run function when used in pickle reduce methods, allowing attackers to execute arbitrary code. Remote attackers can craft malicious pickle files that bypass picklescan detection and achieve code execution upon deserialization.

Executive ViewAI

Why It Matters

picklescan is a defensive security tool that organizations deploy to automatically certify machine learning models and pickle files as safe before production deployment. CVE-2025-71374 exposes a bypass where attackers can disguise malicious code to pass the scanner and execute upon model loading-effectively invalidating the tool's security certification. Organizations relying on picklescan should immediately halt automated acceptance of scanned files and implement manual verification controls pending a vendor patch.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations include: (1) disable automatic acceptance of picklescan validation results and require manual review; (2) implement manual security code review for pickle and model files before production use; (3) restrict pickle deserialization to sandboxed or isolated environments; (4) evaluate alternative ML supply-chain security tools; (5) maintain audit logs of model file processing and deployment.

Threat Intelligence Overview

EPSS Score
0.6%
Top 54% exploitable
Prevalence
Low
niche Python security tool for ML pickle/model scanning
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 No
EPSS 0.6%
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

39
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +38
PoC: 0
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-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

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