# CVE-2025-71352: picklescan detection bypass via trace.Trace.runctx

Source: https://junglewise.ai/threats/cve-2025-71352-picklescan-detection-bypass-via-trace-trace-runctx  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2026-06-30. Updated: 2026-06-30  
License: CC BY 4.0 with a link back

CVE-2025-71352 · Severity: high · CVSS 8.1 · Published 2026-06-30

picklescan is a security tool used to scan Python pickle files and machine learning models for malicious code. A vulnerability in this tool allows specially crafted malicious files to bypass detection by using a specific Python function (trace.Trace.runctx). If a user relies on picklescan to verify a file and then opens it, an attacker could gain full control over the user's system and execute arbitrary commands.

Technologies: [picklescan (PyPI)](https://junglewise.ai/threats/technologies/picklescan). Vendors: [PyPI](https://junglewise.ai/threats/vendors/pypi).

## Quick answers

**Is CVE-2025-71352 exploited in the wild?** No. Junglewise Threat Intelligence has no report of CVE-2025-71352 being exploited in the wild.

**How severe is CVE-2025-71352?** High severity, with a CVSS score of 8.1, published 30 June 2026.

**Which products and versions are affected?** picklescan (PyPI) ECOSYSTEM:introduced=0,fixed=0.0.29.

**Is there a fix for CVE-2025-71352?** Yes. picklescan (PyPI): upgrade to 0.0.29 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

**How is CVE-2025-71352 attacked?** It is attacked over the network, in a software library.

**Am I affected by CVE-2025-71352?** Check whether you run picklescan (PyPI) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

## How to fix

- picklescan (PyPI): upgrade to 0.0.29 or later

  ```sh
  pip install "picklescan>=0.0.29"
  ```


## Technical details

A protection mechanism failure exists in picklescan versions prior to 0.0.29. The scanner fails to identify the 'trace.Trace.runctx' function when embedded within a pickle file's '__reduce__' method. An attacker can exploit this by crafting a malicious pickle file (often distributed as a PyTorch model) that bypasses the scanner's blocklist. When a victim subsequently loads the file using 'pickle.load()', the payload executes arbitrary Python code with the privileges of the running process. The issue is resolved in version 0.0.29.

## Affected products

- picklescan picklescan < 0.0.29

## Identifiers

- CVE-2025-71352
- GHSA-g344-hcph-8vgg

## Timeline

- 2025-08-26: advisory: Initial GitHub security advisory published
- 2026-06-30: disclosed: CVE published to NVD

## References

- [https://github.com/mmaitre314/picklescan/security/advisories/GHSA-g344-hcph-8vgg](https://github.com/mmaitre314/picklescan/security/advisories/GHSA-g344-hcph-8vgg)
- [https://www.vulncheck.com/advisories/picklescan-remote-code-execution-via-undetected-trace-trace-runctx-in-pickle-files](https://www.vulncheck.com/advisories/picklescan-remote-code-execution-via-undetected-trace-trace-runctx-in-pickle-files)

## Related threats

- [picklescan detection bypass via _operator.methodcaller](https://junglewise.ai/threats/cve-2025-71375-picklescan-detection-bypass-via-operator-methodcaller)
- [picklescan security bypass via operator.methodcaller](https://junglewise.ai/threats/cve-2025-71373-picklescan-security-bypass-via-operator-methodcaller)
- [Picklescan detection bypass via numpy getlincoef gadget](https://junglewise.ai/threats/cve-2025-71372-picklescan-detection-bypass-via-numpy-getlincoef-gadget)
- [picklescan safety check bypass via PyTorch decoder basichandlers](https://junglewise.ai/threats/cve-2025-71369-picklescan-safety-check-bypass-via-pytorch-decoder-basichandlers)
- [picklescan security bypass via _operator.attrgetter function call](https://junglewise.ai/threats/cve-2025-71367-picklescan-security-bypass-via-operator-attrgetter-function-call)
