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.
OpenCVE Enrichment
Github GHSA