Pylint
Monthly
Arbitrary code execution in Pylint (0.15.2 through 4.0.8) stems from the linter persisting its per-module statistics as Python pickles inside PYLINT_HOME and reloading them with pickle.load on the next invocation. An attacker who can write into that cache directory - for example a shared, group-writable, or otherwise untrusted PYLINT_HOME on a multi-user host or CI runner - can drop a crafted serialized stats file with a predictable name, and code then executes with the privileges of whoever next runs Pylint against that cache. The default per-user cache (~/.cache/pylint) is writable only by the invoking user, so exploitation requires a non-default or misconfigured shared cache plus local write access; no public exploit code or confirmed active exploitation was identified at time of analysis, and the vuln.today priority label is 'this_month'.
Arbitrary code execution in Pylint (0.15.2 through 4.0.8) stems from the linter persisting its per-module statistics as Python pickles inside PYLINT_HOME and reloading them with pickle.load on the next invocation. An attacker who can write into that cache directory - for example a shared, group-writable, or otherwise untrusted PYLINT_HOME on a multi-user host or CI runner - can drop a crafted serialized stats file with a predictable name, and code then executes with the privileges of whoever next runs Pylint against that cache. The default per-user cache (~/.cache/pylint) is writable only by the invoking user, so exploitation requires a non-default or misconfigured shared cache plus local write access; no public exploit code or confirmed active exploitation was identified at time of analysis, and the vuln.today priority label is 'this_month'.