{"id":"CVE-2026-47781","aliases":["GHSA-qq6c-99pv-prvf","PYSEC-2026-2863"],"url":"https://o3.security/vulnerability/CVE-2026-47781","summary":"pdm: Project-Controlled `.pdm-plugins` Content Executes Before CLI Parsing","details":"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.","published":"2026-08-04T18:42:23.036Z","modified":"2026-09-10T03:30:45.509531912Z","cvss":null,"epss":{"score":0.00131,"percentile":0.03013,"asOf":"2026-09-02"},"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"PyPI","name":"pdm","fixedVersion":"2.27.0"}],"fix":null,"references":[{"type":"WEB","url":"https://github.com/pdm-project/pdm/releases/tag/2.27.0"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/47xxx/CVE-2026-47781.json"},{"type":"ADVISORY","url":"https://github.com/pdm-project/pdm/security/advisories/GHSA-qq6c-99pv-prvf"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-47781"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-09-10T03:30:45.509531912Z"}}