Description
Pylint is a static code analyser for Python. From 0.15.2 until 4.0.9, Pylint stores module statistics in predictable files under PYLINT_HOME and loads those files with pickle.load on a later run. An attacker who can write to a shared, group-writable, or otherwise untrusted cache directory can replace a stats cache with crafted serialized data, causing arbitrary code to execute with the privileges of the user who next runs Pylint. The default per-user cache is not normally writable by another user. This issue is fixed in version 4.0.9.
Published: 2026-10-22
Score: 5.4 Medium
EPSS: < 1% Very Low
KEV: No
Impact: arbitrary code execution
Action: Patch immediately
AI Analysis

Impact

Pylint, a popular Python static analysis tool, stored module statistics in a predictable cache directory located under PYLINT_HOME. From versions 0.15.2 through 4.0.9 the tool unserialized these statistics with Python's pickle module during subsequent executions. Because the cache files could be written by any user who had write access to the directory, an attacker could replace a normal statistics file with a crafted pickle payload. When Pylint ran next, its pickle.load call would deserialize the payload, leading to execution of arbitrary code with the same privileges as the user running Pylint. The vulnerability is a classic instance of insecure deserialization (CWE‑502) and allows remote or local code execution depending on who can write to the cache folder.

Affected Systems

The flaw affects the pylint package distributed by the pylint-dev community. All versions from 0.15.2 up to, but not including, 4.0.9 are vulnerable. Systems that run any of these releases and use the default per‑user cache location or a shared, group‑writable cache directory are susceptible. The issue is resolved in pylint 4.0.9, as the developers removed pickle-based cache loading for the affected statistics files.

Risk and Exploitability

The CVSS v3 score of 5.4 indicates a moderate severity. Exploitability depends on an attacker’s ability to modify the cache directory—a prerequisite that typically requires local access or compromise of a shared filesystem. Because the code executes with the effective user’s privileges, the attack could lead to full system compromise if the user is privileged. The EPSS score is not available, and the vulnerability is not listed in the CISA KEV catalogue, so real‑world exploitation data is limited. Nonetheless, the ability to execute arbitrary code makes it a critical risk for environments where Pylint is installed globally or shared among users.

Generated by OpenCVE AI on October 22, 2026 at 18:36 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade to Pylint 4.0.9 or later, which removes the insecure pickle load path.
  • Ensure the PYLINT_HOME cache directory is owned exclusively by the user and has permissions set to prevent write access by others (e.g., chmod 700 and chown to the user).
  • If an upgrade is not immediately possible, configure Pylint to use a secure cache location by setting the PYLINT_HOME environment variable to a directory with restricted access, or delete existing statistics files from shared directories to prevent accidental deserialization of untrusted payloads.

Generated by OpenCVE AI on October 22, 2026 at 18:36 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-22qq-2fwx-7p67 Pylint: Arbitrary code execution via pickle deserialization of the stats cache in PYLINT_HOME
History

Thu, 29 Oct 2026 12:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Fri, 23 Oct 2026 00:45:00 +0000

Type Values Removed Values Added
First Time appeared Pylint-dev
Pylint-dev pylint
Vendors & Products Pylint-dev
Pylint-dev pylint
References
Metrics threat_severity

None

cvssV3_1

{'score': 6.7, 'vector': 'CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H'}

threat_severity

Moderate


Thu, 22 Oct 2026 17:00:00 +0000

Type Values Removed Values Added
Description Pylint is a static code analyser for Python. From 0.15.2 until 4.0.9, Pylint stores module statistics in predictable files under PYLINT_HOME and loads those files with pickle.load on a later run. An attacker who can write to a shared, group-writable, or otherwise untrusted cache directory can replace a stats cache with crafted serialized data, causing arbitrary code to execute with the privileges of the user who next runs Pylint. The default per-user cache is not normally writable by another user. This issue is fixed in version 4.0.9.
Title Pylint: Arbitrary code execution via pickle deserialization of the stats cache in PYLINT_HOME
Weaknesses CWE-502
References
Metrics cvssV4_0

{'score': 5.4, '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'}


Subscriptions

Pylint-dev Pylint
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-29T11:49:18.315Z

Reserved: 2026-10-21T20:34:25.599Z

Link: CVE-2026-114608

cve-icon Vulnrichment

Updated: 2026-10-29T11:48:40.441Z

cve-icon NVD

Status : Deferred

Published: 2026-10-22T17:16:58.750

Modified: 2026-10-29T12:17:10.160

Link: CVE-2026-114608

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-10-22T16:50:02Z

Links: CVE-2026-114608 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-22T21:19:01Z

Weaknesses
  • CWE-502

    Deserialization of Untrusted Data