GitHub Advisoryadvisory · PyPI

GHSA-22qq-2fwx-7p67 Pylint: Arbitrary code execution via pickle deserialization of the stats cache in PYLINT_HOME

MEDIUM Published 2026-10-27 Modified 2026-10-27 Official page ↗
Aliases
CVE-2026-114608
Ecosystem
PyPI
Packages
pylint
Severity
Moderate
CVSS vector
CVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Weaknesses
CWE-502
Reviewed
2026-10-27

Affected packages

• PyPI pylint: < 4.0.9 → fixed in 4.0.9

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).

Related

Alias · CVE (1)

  • CVE-2026-114608 Pylint is a static code analyser for Python. vulnerability

Weakness · CWE (1)

  • CWE-502 Deserialization of Untrusted Data weakness

References