Skip to main content
VulnerabilityPublished

CVE-2026-114608: Arbitrary code execution via pickle deserialization of the stats cache in PYLINT_HOME

Affects pylintSource GCVE Database

0
Authoritative record:CVE-2026-114608· Medium 5.4

Not known to be exploited · CVSS 5.4 Medium : upgrade to 4.0.9 when convenient.

Data as of 27 Oct 2026, 15:12 UTC

CVSS 4.0 base score
5.4Medium
How severe the flaw is on the 0–10 CVSS scale.
Patch
Available – fixed in 4.0.9
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

Exploitation evidence

  1. Disclosed: evidence found.

    CVE published 22 Oct 2026

  2. Detectable: no evidence on record.

    No public nuclei template indexed

  3. Weaponised: no evidence on record.

    No public exploit code indexed in Metasploit or Exploit-DB

  4. Exploited in the wild: no evidence on record.

    Not in CISA KEV and no source reports exploitation

  5. Observed by OffSeq Mirage: no evidence on record.

    No attack traffic recorded by OffSeq Mirage sensors

A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 26 Oct 2026.

What to do

Upgrade pylint to 4.0.9.

Affected software

ProductAffectedFixed in
PyPIpylintAffected
  • <4.0.9
Fixed in
  • 4.0.9

Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.

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

References

Community reviews

Loading reviews…