Every CVE Search/ Get API key

CVE-2026-114608

Pylint: Arbitrary code execution via pickle deserialization of the stats cache in PYLINT_HOME

5.4 MediumFix available

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.

Attack profile

How easy it is to exploit

Attack vector
Local
Complexity
High
Privileges needed
Low
User interaction
Passive

What an attacker can affect

Confidentiality
High
Integrity
High
Availability
High

Exploit likelihood

0.11%Unchanged since Oct 23, 2026
90%50%10%1%

What each source reports

CVE List Score used 5.4

Pylint: Arbitrary code execution via pickle deserialization of the stats cache in PYLINT_HOME

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.

Record
CVE-2026-114608
CVSS 4.0
5.4 MediumCVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Weakness
CWE-502
Updated
2026-11-02
EUVDEUVD-2026-108257 5.4

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.

Record
EUVD-2026-108257
CVSS 4.0
5.4 MediumCVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-22qq-2fwx-7p67 5.4

Pylint: Arbitrary code execution via pickle deserialization of the stats cache in PYLINT_HOME

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).
Record
GHSA-22qq-2fwx-7p67
CVSS 4.0
5.4 MediumCVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Weakness
CWE-502
Updated
2026-11-02
NVD 5.4

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.

Record
CVE-2026-114608
CVSS 4.0
5.4 MediumCVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Weakness
CWE-502
Updated
2026-11-02
OSV 5.4

Pylint: Arbitrary code execution via pickle deserialization of the stats cache in PYLINT_HOME

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.

Record
CVE-2026-114608
CVSS 4.0
5.4 MediumCVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Weakness
CWE-502
Updated
2026-11-03
OSVDEBIAN-CVE-2026-114608 5.4

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.

Record
DEBIAN-CVE-2026-114608
CVSS 4.0
5.4 MediumCVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Updated
2026-11-09
Show 8 moreShow less
OSVGHSA-22qq-2fwx-7p67 5.4

Pylint: Arbitrary code execution via pickle deserialization of the stats cache in PYLINT_HOME

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).
Record
GHSA-22qq-2fwx-7p67
CVSS 4.0
5.4 MediumCVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Weakness
CWE-502
Updated
2026-11-02
OSVOESA-2026-4699 5.4

pylint security update

Pylint is a Python source code analyzer which looks for programming errors, helps enforcing a coding standard and sniffs for some code smells (as defined in Martin Fowler's Refactoring book). Pylint can be seen as another PyChecker since nearly all tests you can do with PyChecker can also be done with Pylint. However, Pylint offers some more features, like checking length of lines of code, checking if variable names are well-formed according to your coding standard, or checking if declared interfaces are truly implemented, and much more. Additionally, it is possible to write plugins to add your own checks.

Security Fix(es):

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.(CVE-2026-114608)

Record
OESA-2026-4699
CVSS 4.0
5.4 MediumCVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Updated
2026-11-04
OSVOESA-2026-4700 5.4

pylint security update

Pylint is a Python source code analyzer which looks for programming errors, helps enforcing a coding standard and sniffs for some code smells (as defined in Martin Fowler's Refactoring book). Pylint can be seen as another PyChecker since nearly all tests you can do with PyChecker can also be done with Pylint. However, Pylint offers some more features, like checking length of lines of code, checking if variable names are well-formed according to your coding standard, or checking if declared interfaces are truly implemented, and much more. Additionally, it is possible to write plugins to add your own checks.

Security Fix(es):

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.(CVE-2026-114608)

Record
OESA-2026-4700
CVSS 4.0
5.4 MediumCVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Updated
2026-11-04
OSVOESA-2026-4701 5.4

pylint security update

Pylint is a Python source code analyzer which looks for programming errors, helps enforcing a coding standard and sniffs for some code smells (as defined in Martin Fowler's Refactoring book). Pylint can be seen as another PyChecker since nearly all tests you can do with PyChecker can also be done with Pylint. However, Pylint offers some more features, like checking length of lines of code, checking if variable names are well-formed according to your coding standard, or checking if declared interfaces are truly implemented, and much more. Additionally, it is possible to write plugins to add your own checks.

Security Fix(es):

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.(CVE-2026-114608)

Record
OESA-2026-4701
CVSS 4.0
5.4 MediumCVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Updated
2026-11-04
OSVOESA-2026-4742 5.4

pylint security update

Pylint is a Python source code analyzer which looks for programming errors, helps enforcing a coding standard and sniffs for some code smells (as defined in Martin Fowler's Refactoring book). Pylint can be seen as another PyChecker since nearly all tests you can do with PyChecker can also be done with Pylint. However, Pylint offers some more features, like checking length of lines of code, checking if variable names are well-formed according to your coding standard, or checking if declared interfaces are truly implemented, and much more. Additionally, it is possible to write plugins to add your own checks.

Security Fix(es):

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.(CVE-2026-114608)

Record
OESA-2026-4742
CVSS 4.0
5.4 MediumCVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Updated
2026-11-11
OSVUBUNTU-CVE-2026-114608 5.4

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.

Record
UBUNTU-CVE-2026-114608
CVSS 4.0
5.4 MediumCVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Updated
2026-11-02
OSVAZL-110543 No score

CVE-2026-114608 affecting package pylint 4.0.2-2

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.

Record
AZL-110543
Updated
2026-11-05
OSVopenSUSE-SU-2026:12392-1 No score

python313-pylint-4.1.3-1.1 on GA media

These are all security issues fixed in the python313-pylint-4.1.3-1.1 package on the GA media of openSUSE Tumbleweed.

Record
openSUSE-SU-2026:12392-1
Updated
2026-11-03

Affected products

Affected packages

Affected packages
PackageAffectedFixed
pylint
PyPI
before 4.0.9
4.0.9
pylint
Azure Linux:3
through 4.0.2-2 None known
pylint
Debian:12
All versions, plus listed versions
2.16.2-22.17.4-13.0.3-13.0.3-23.1.0-1
Show 17 moreShow less
3.1.0-23.2.2-13.2.2-23.2.6-13.2.7-13.3.1-13.3.1-23.3.3-13.3.3-23.3.4-13.3.4-24.0.4-14.0.5-14.0.6-14.0.8-14.0.8-24.0.9-1
None known
pylint
Debian:13
All versions, plus listed versions
3.3.4-13.3.4-24.0.4-14.0.5-14.0.6-14.0.8-14.0.8-24.0.9-1
None known
pylint
Debian:14
before 4.0.9-1, plus listed versions
3.3.4-13.3.4-24.0.4-14.0.5-14.0.6-14.0.8-14.0.8-2
4.0.9-1
pylint
PyPI
before 4.0.9, plus listed versions
0.10.00.11.00.12.10.13.00.14.0
Show 45 moreShow less
0.15.20.16.00.18.00.18.10.19.00.20.00.21.00.21.10.21.20.21.30.22.00.23.00.24.00.25.00.25.10.25.20.26.00.27.00.28.00.4.10.6.00.6.10.7.00.8.11.0.01.1.01.2.01.2.11.3.01.3.11.4.01.4.11.4.21.4.31.4.41.4.51.5.01.5.11.5.21.5.31.5.41.5.51.5.61.6.01.6.1
4.0.9
pylint
openEuler:22.03-LTS-SP4
before 2.12.2-3.oe2203sp4
2.12.2-3.oe2203sp4
pylint
openEuler:24.03-LTS-SP1
before 3.0.3-3.oe2403sp1
3.0.3-3.oe2403sp1
pylint
openEuler:24.03-LTS-SP3
before 3.0.3-3.oe2403sp3
3.0.3-3.oe2403sp3
pylint
openEuler:24.03-LTS-SP4
before 3.0.3-3.oe2403sp4
3.0.3-3.oe2403sp4
Show 8 moreShow less
Affected packages
PackageAffectedFixed
pylint
Ubuntu:16.04:LTS
All versions, plus listed versions
1.3.1-3ubuntu11.4.4-1ubuntu11.5.2-1ubuntu1
None known
pylint
Ubuntu:18.04:LTS
All versions, plus listed versions
1.7.2-0ubuntu41.8.1-11.8.3-1
None known
pylint
Ubuntu:20.04:LTS
All versions, plus listed versions
2.2.2-32.4.4-12.4.4-2
None known
pylint
Ubuntu:22.04:LTS
All versions, plus listed versions
2.7.2-3ubuntu12.11.1-12.12.2-1
None known
pylint
Ubuntu:24.04:LTS
All versions, plus listed versions
2.17.4-13.0.3-13.0.3-2
None known
pylint
Ubuntu:26.10
All versions, plus listed versions
4.0.5-14.0.6-14.0.8-1
None known
pylint
Ubuntu:26.04:LTS
All versions, plus listed versions
3.3.4-24.0.4-14.0.5-1
None known
python-pylint
openSUSE:Tumbleweed
before 4.1.3-1.1
4.1.3-1.1

History

History
RecordedChangedSources
affected, aliases, referencesOSV
affectedOSV
affected, aliases, referencesOSV
affected, aliases, facts, referencesOSV
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-114608 is a medium vulnerability (CVSS 5.4) in Pylint-dev Pylint, published October 22, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.11%, the 1st percentile. Fixed in pylint 4.0.9.

References

Show 10 moreShow less
This page doesn't list everything

Left out here: 164 versions. The JSON record has them.

MoveEnter Open