Advisory Database
  • Advisories
  • Dependency Scanning
  1. pypi
  2. ›
  3. picklescan
  4. ›
  5. GHSA-vvpj-8cmc-gx39

GHSA-vvpj-8cmc-gx39: PickleScan's pkgutil.resolve_name has a universal blocklist bypass

March 3, 2026

pkgutil.resolve_name() is a Python stdlib function that resolves any "module:attribute" string to the corresponding Python object at runtime. By using pkgutil.resolve_name as the first REDUCE call in a pickle, an attacker can obtain a reference to ANY blocked function (e.g., os.system, builtins.exec, subprocess.call) without that function appearing in the pickle’s opcodes. picklescan only sees pkgutil.resolve_name (which is not blocked) and misses the actual dangerous function entirely.

This defeats picklescan’s entire blocklist concept — every single entry in _unsafe_globals can be bypassed.

References

  • github.com/advisories/GHSA-vvpj-8cmc-gx39
  • github.com/mmaitre314/picklescan
  • github.com/mmaitre314/picklescan/security/advisories/GHSA-vvpj-8cmc-gx39

Code Behaviors & Features

Detect and mitigate GHSA-vvpj-8cmc-gx39 with GitLab Dependency Scanning

Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →

Affected versions

All versions before 1.0.4

Fixed versions

  • 1.0.4

Solution

Upgrade to version 1.0.4 or above.

Impact 10 CRITICAL

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H

Learn more about CVSS

Weakness

  • CWE-183: Permissive List of Allowed Inputs
  • CWE-693: Protection Mechanism Failure

Source file

pypi/picklescan/GHSA-vvpj-8cmc-gx39.yml

Spotted a mistake? Edit the file on GitLab.

  • Site Repo
  • About GitLab
  • Terms
  • Privacy Statement
  • Contact

Page generated Tue, 24 Mar 2026 12:17:06 +0000.