pdm: Project-Controlled `.pdm-plugins` Content Executes Before CLI Parsing
Default status is the baseline for the product, each version can override it (e.g. patched versions marked unaffected).
| Vendor | Product | Default status | Versions | ||||||
|---|---|---|---|---|---|---|---|---|---|
| pdm-project | pdm | affected |
|
No data.
No data.
| Vendor | Product | Versions | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Pdm-project | Pdm |
|
| Source | ID | Title |
|---|---|---|
Github GHSA |
GHSA-qq6c-99pv-prvf | PDM: Project-Controlled `.pdm-plugins` Content Executes Before CLI Parsing |
No CVSS v3.1
No CVSS v3.0
No CVSS v2
This CVE is not in the KEV list.
Exploit prediction score: < 1% (0.187% probability within 30 days)
| Type | Values Removed | Values Added |
|---|---|---|
| Metrics |
ssvc
|
| Type | Values Removed | Values Added |
|---|---|---|
| First Time appeared |
Pdm-project
Pdm-project pdm |
|
| Vendors & Products |
Pdm-project
Pdm-project pdm |
| Type | Values Removed | Values Added |
|---|---|---|
| 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. | |
| Title | pdm: Project-Controlled `.pdm-plugins` Content Executes Before CLI Parsing | |
| Weaknesses | CWE-829 CWE-94 |
|
| References |
| |
| Metrics |
cvssV4_0
|