CVE-2026-47781 json
pdm: Project-Controlled `.pdm-plugins` Content Executes Before CLI Parsing
published 2026-06-11 4 mo ago modified 2026-10-24 15 d ago also EUVD-2026-52867 , GHSA-qq6c-99pv-prvf , PYSEC-2026-2863
- cvss
- 8.4
- version 4.0, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.2%
- EPSS 0.2% chance of exploitation in 30 days, percentile 8%
- public exploits
- 0
- none known
Summary
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.
Patch / fix
- pypi pdm 2.27.0
- frostming pdm 2.27.0
- pdm Debian 14 2.27.0-1
debian advisories DEBIAN-CVE-2026-47781
- python-pdm openSUSE Leap 16.0 2.22.3-bp160.2.1
- python-pdm openSUSE Tumbleweed 2.28.0-1.1
opensuse advisories openSUSE-SU-2026:21161-1openSUSE-SU-2026:11124-1
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-47781 updated cvss 7.3
pdm: PDM: Arbitrary Code Execution via Project-Controlled Plugin Loading
-
Red Hat All currently supported Red Hat productsnot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- yes
- Technical impact
- total
- Assessed
- 3 mo ago
Exploit prediction
0.19% chance of exploitation in the next 30 days, higher than 8% of all scored CVEs (FIRST EPSS, 2026-11-08).
Exploits and checks
- github.com https://github.com/pdm-project/pdm/security/advisories/GHSA-qq6c-99pv-prvf referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 8.4 | 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 |
| CNA | 4.0 | 8.4 | 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/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 |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | pdm | <2.27.0 |
2.27.0 |
Affected products
- pdm-project pdm
Classification
References
-
github.com
/pdm-project/pdm/security/advisories/GHSA-qq6c-99pv-prvf
exploit, web
-
github.com
/pdm-project/pdm/releases/tag/2.27.0
web
-
github.com
/pdm-project/pdm
package
-
pypi.org
/project/pdm
package
-
github.com
/advisories/GHSA-qq6c-99pv-prvf
advisory
-
nvd.nist.gov
/vuln/detail/CVE-2026-47781
advisory
Sources
- CVE List CVE-2026-47781
- GitHub Advisory GHSA-qq6c-99pv-prvf
- NVD CVE-2026-47781
- OSV PYSEC-2026-2863
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.
CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.