GHSA-22qq-2fwx-7p67Medium
Pylint: Arbitrary code execution via pickle deserialization of the stats cache in PYLINT_HOME
🔗 CVE IDs covered (1)
📋 Description
Impact
Since 2006 / pylint 0.15.2, pylint caches its stats as pickles in PYLINT_HOME and reload them on the next run with pickle.load. Someone without access to the configuration or linted code, but with access to the cache directory (predictable PYLINT_HOME on a multi-user host) can write a crafted pickle that will runs arbitrary code when pylint access its stat cache.
Patches
From pylint 4.0.9, the result cache is now stored as JSON instead of pickle, preventing code-execution.
Workarounds
Until upgrading do not point PYLINT_HOME to an untrusted, shared, or group-writable directory. The default value, ~/.cache/pylint, is writable only by the user running pylint.
Credits
- Reported privately via Tidelift coordinated disclosure (Dan Lenz).
🎯 Affected products1
- pip/pylint:< 4.0.9
🔗 References (6)
- https://github.com/pylint-dev/pylint/security/advisories/GHSA-22qq-2fwx-7p67
- https://nvd.nist.gov/vuln/detail/CVE-2026-114608
- https://github.com/pylint-dev/pylint/commit/58c87cffca9de2b3e89aa07b89686cbc90cfea2d
- https://github.com/pylint-dev/pylint/commit/5b241f66318220e9ba7b21ca631fbfe8e77682ca
- https://github.com/pylint-dev/pylint/releases/tag/v4.0.9
- https://github.com/advisories/GHSA-22qq-2fwx-7p67