CVE-2025-1889

9.8 CRITICAL

📋 TL;DR

CVE-2025-1889 is a vulnerability in picklescan versions before 0.0.22 where the tool only checks standard pickle file extensions (.pkl, .pickle, .pckl) for malicious content. Attackers can bypass security scans by using non-standard file extensions for malicious pickle files, potentially allowing arbitrary code execution. This affects anyone using picklescan to validate machine learning models or other pickle-serialized data.

💻 Affected Systems

Products:
  • picklescan
Versions: All versions before 0.0.22
Operating Systems: All platforms running picklescan
Default Config Vulnerable: ⚠️ Yes
Notes: Any system using picklescan to validate pickle files is vulnerable regardless of configuration, as the vulnerability is in the tool's scope definition.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote code execution with full system compromise if malicious pickle files are loaded by vulnerable applications, potentially leading to data theft, ransomware deployment, or complete system takeover.

🟠

Likely Case

Arbitrary code execution in the context of the application loading the pickle file, allowing attackers to steal sensitive data, install backdoors, or pivot to other systems.

🟢

If Mitigated

Limited impact if proper input validation and file extension checking is implemented separately from picklescan, or if pickle loading is restricted to trusted sources.

🌐 Internet-Facing: HIGH - If applications accept pickle files from untrusted sources (like user uploads) and rely solely on picklescan for validation.
🏢 Internal Only: MEDIUM - Internal systems processing pickle files from less trusted sources could still be vulnerable, though attack surface is reduced.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires convincing a target to process a malicious pickle file with non-standard extension, but the bypass technique is simple and well-documented.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 0.0.22

Vendor Advisory: https://github.com/mmaitre314/picklescan/security/advisories/GHSA-655q-fx9r-782v

Restart Required: No

Instructions:

1. Update picklescan to version 0.0.22 or later using pip: pip install --upgrade picklescan>=0.0.22
2. Verify the update with: picklescan --version
3. Re-run security scans on all pickle files to ensure comprehensive coverage.

🔧 Temporary Workarounds

Manual file extension validation

all

Implement additional validation to check for pickle files with non-standard extensions before processing

# Example Python script to check file extensions
import os
import pickle

file_extensions = ['.pkl', '.pickle', '.pckl', '.pth', '.pt', '.model', '.joblib', '.sav']
# Add any other extensions your application uses for pickle files

for file in files_to_check:
    if any(file.endswith(ext) for ext in file_extensions):
        # Run picklescan on this file
        os.system(f'picklescan {file}')

🧯 If You Can't Patch

  • Implement strict allowlisting of file extensions for pickle processing, rejecting any files with non-standard extensions
  • Only load pickle files from trusted, verified sources and implement digital signature verification for pickle files

🔍 How to Verify

Check if Vulnerable:

Run: picklescan --version and check if version is below 0.0.22

Check Version:

picklescan --version

Verify Fix Applied:

1. Update to picklescan>=0.0.22
2. Test with a safe pickle file using non-standard extension (e.g., .malicious) to confirm it's now detected
3. Verify version shows 0.0.22 or higher

📡 Detection & Monitoring

Log Indicators:

  • Failed or bypassed picklescan scans
  • Pickle files with unusual extensions being processed
  • Unexpected process execution following pickle file loading

Network Indicators:

  • Downloads of pickle files with non-standard extensions
  • Unusual outbound connections from processes that load pickle files

SIEM Query:

process.name:picklescan AND event.outcome:failure OR file.extension:(NOT (.pkl OR .pickle OR .pckl)) AND file.type:pickle

🔗 References

📤 Share & Export