Skip to content
Fencer Vulns
high 8.4

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 products
    not 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

Weakness
  • CWE-829 Inclusion of Functionality from Untrusted Control Sphere
  • CWE-94 Improper Control of Generation of Code

References

Sources

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.