Vulnerability · Published Aug 4, 2026 · Assigned by GitHub_M

CVE-2026-47781pdm: Project-Controlled `.pdm-plugins` Content Executes Before CLI Parsing

High 8.4

In plain English

A high-severity code injection in pdm from pdm-project. Proof-of-concept exploit code is public. The chance it is exploited in the next 30 days is estimated at 0.2% (higher than 8% of all known vulnerabilities). Fixed versions are available - upgrade the affected package.

Severity (CVSS 4.0)8.4High
Exploit odds (30 days)0.2%top 91.6% of all CVEs
Exploited in the wildNo reportsCISA SSVC: poc
Attack toolingNoneno public tooling known

Official description

PDM is a Python package and dependency manager. In versions up to and including 2.26.9, PDM automatically loads project-local plugins from a .pdm-plugins directory during initialization, allowing an attacker-controlled file in an untrusted repository checkout to execute arbitrary Python code before any command is parsed. This happens because load_plugins() runs during Core.init() and adds .pdm-plugins via site.addsitedir(), which processes .pth files and immediately executes any line beginning with import, so the code runs with the privileges of the user invoking pdm and even a benign command such as pdm --version triggers it (making the impact strongest in CI, automation, and privileged contexts). The issue is fixed in version 2.27.0.

Affected packages & fixed versions

EcosystemPackageFixed inAdvisory
Debian:12pdmno fix listedDEBIAN-CVE-2026-47781
Debian:13pdmno fix listedDEBIAN-CVE-2026-47781
Debian:14pdm2.27.0-1DEBIAN-CVE-2026-47781
PyPIpdm2.27.0PYSEC-2026-2863
PyPIpdm2.27.0GHSA-qq6c-99pv-prvf
Ubuntu:26.04:LTSpdmno fix listedUBUNTU-CVE-2026-47781
Ubuntu:26.10pdmno fix listedUBUNTU-CVE-2026-47781

Affected products (as reported)

VendorProductVersions
pdm-project pdm < 2.27.0

Weakness: CWE-829, CWE-94 · Vector: CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

References