Skip to main content
← All vulnerabilities
CVE-2026-47781GHSA-QQ6C-99PV-PRVFPYSEC-2026-2863

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

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 2.27.0
None on Exploit-DB, Metasploit or GitHub
  • Exploitation: poc
  • Automatable: yes
  • Technical impact: total

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.

Timeline

  1. CVE published
  2. CISA SSVC assessment

    Exploitation: poc · Automatable: yes · Technical impact: total

  3. Record last updated

Affected versions

  • pdm-project pdm

    fixed in 2.27.0

  • pdmPyPI

    fixed in 2.27.0

References 2

GitHub · pdm-project/pdm