GHSA-vvpj-8cmc-gx39: PickleScan's pkgutil.resolve_name has a universal blocklist bypass
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
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 →