CVE-2025-10155: picklescan: file extension bypass allows model RCE
GHSA-jgw4-cr84-mqxg HIGH PoC AVAILABLE CISA: TRACK*Upgrade picklescan to 0.0.31 immediately — any ML pipeline running <= 0.0.30 that believed it was protected against malicious models was not. An attacker who can deliver a pickle payload with a PyTorch extension (.pt, .pth, .bin) bypasses scanning entirely, resulting in RCE when the file is loaded via torch.load(). Audit model ingestion logs for externally sourced PyTorch-extension files loaded in the past 90 days.
Risk Assessment
CVSS 7.8 with a local attack vector understates real-world risk because this is a security control bypass — teams relying on picklescan likely removed compensating controls, creating dangerous false confidence. The attack is trivial: rename a malicious pickle file with a .pth extension and let the scanner clear it. Risk is highest in MLOps pipelines that pull models from HuggingFace, shared registries, or research collaborations and treat picklescan as their primary gate. EPSS 0.0003 reflects low automated exploitation but targeted supply chain attacks make this trivially achievable for motivated adversaries.
Affected Systems
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| picklescan | pip | — | No patch |
| picklescan | pip | <= 0.0.30 | 0.0.31 |
Severity & Risk
Attack Surface
Recommended Action
7 steps-
PATCH
Upgrade picklescan to >= 0.0.31 across all environments — dev, staging, production, and CI/CD runners.
-
VERIFY
Run 'pip show picklescan' in every environment; treat any version <= 0.0.30 as unprotected.
-
RE-SCAN: Re-scan all PyTorch model files (.pt, .pth, .bin, .ckpt) obtained from external sources while running the vulnerable version.
-
SHIFT FORMAT
Migrate to safetensors format wherever possible — it is not susceptible to pickle deserialization attacks by design.
-
RESTRICT
Enforce allowlists on model sources; block loading models not originating from vetted internal registries.
-
SANDBOX
Run model loading in isolated environments (containers, VMs) with no access to production credentials or data.
-
DETECT
Alert on torch.load() / pickle.loads() calls in production that reference externally sourced files.
CISA SSVC Assessment
Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.
Classification
Compliance Impact
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2025-10155?
Upgrade picklescan to 0.0.31 immediately — any ML pipeline running <= 0.0.30 that believed it was protected against malicious models was not. An attacker who can deliver a pickle payload with a PyTorch extension (.pt, .pth, .bin) bypasses scanning entirely, resulting in RCE when the file is loaded via torch.load(). Audit model ingestion logs for externally sourced PyTorch-extension files loaded in the past 90 days.
Is CVE-2025-10155 actively exploited?
Proof-of-concept exploit code is publicly available for CVE-2025-10155, increasing the risk of exploitation.
How to fix CVE-2025-10155?
1. PATCH: Upgrade picklescan to >= 0.0.31 across all environments — dev, staging, production, and CI/CD runners. 2. VERIFY: Run 'pip show picklescan' in every environment; treat any version <= 0.0.30 as unprotected. 3. RE-SCAN: Re-scan all PyTorch model files (.pt, .pth, .bin, .ckpt) obtained from external sources while running the vulnerable version. 4. SHIFT FORMAT: Migrate to safetensors format wherever possible — it is not susceptible to pickle deserialization attacks by design. 5. RESTRICT: Enforce allowlists on model sources; block loading models not originating from vetted internal registries. 6. SANDBOX: Run model loading in isolated environments (containers, VMs) with no access to production credentials or data. 7. DETECT: Alert on torch.load() / pickle.loads() calls in production that reference externally sourced files.
What systems are affected by CVE-2025-10155?
This vulnerability affects the following AI/ML architecture patterns: training pipelines, model registries, model serving, MLOps/CI-CD pipelines, ML development environments.
What is the CVSS score for CVE-2025-10155?
CVE-2025-10155 has a CVSS v3.1 base score of 7.8 (HIGH). The EPSS exploitation probability is 0.06%.
Technical Details
NVD Description
An Improper Input Validation vulnerability in the scanning logic of mmaitre314 picklescan versions up to and including 0.0.30 allows a remote attacker to bypass pickle files security checks by supplying a standard pickle file with a PyTorch-related file extension. When the pickle file incorrectly considered safe is loaded, it can lead to the execution of malicious code.
Exploitation Scenario
An adversary targets an ML team that uses picklescan as their model validation gate. They craft a malicious pickle file embedding a reverse shell payload and name it 'finetuned-llama3-v2.pth'. They upload it to a shared research bucket, a model leaderboard, or deliver it via a convincing research collaboration email. The CI/CD pipeline runs picklescan — because the .pth extension causes the scanner to skip proper pickle inspection (CWE-693), the file is marked clean. An ML engineer or automated training job runs torch.load('finetuned-llama3-v2.pth'), triggering deserialization and executing the payload. The adversary gains a shell in the training environment, with access to training data, model weights, API keys, and potentially the entire ML infrastructure.
Weaknesses (CWE)
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H References
- github.com/advisories/GHSA-jgw4-cr84-mqxg
- github.com/mmaitre314/picklescan/commit/28a7b4ef753466572bda3313737116eeb9b4e5c5
- nvd.nist.gov/vuln/detail/CVE-2025-10155
- github.com/mmaitre314/picklescan/blob/58983e1c20973ac42f2df7ff15d7c8cd32f9b688/src/picklescan/scanner.py Product
- github.com/mmaitre314/picklescan/security/advisories/GHSA-jgw4-cr84-mqxg Exploit Patch Vendor
Timeline
Related Vulnerabilities
GHSA-vvpj-8cmc-gx39 10.0 picklescan: security flaw enables exploitation
Same package: picklescan GHSA-7wx9-6375-f5wh 9.8 picklescan: Allowlist Bypass evades input filtering
Same package: picklescan GHSA-g38g-8gr9-h9xp 9.8 picklescan: Allowlist Bypass evades input filtering
Same package: picklescan CVE-2025-1945 9.8 picklescan: ZIP flag bypass enables RCE in PyTorch models
Same package: picklescan GHSA-hgrh-qx5j-jfwx 8.8 picklescan: Protection Bypass circumvents security controls
Same package: picklescan
AI Threat Alert