Severity by source
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
Local install action (AV:L), no privileges needed but user must run pdm install on the malicious wheel (UI:R); arbitrary file write yields high integrity impact, no direct confidentiality loss, partial availability via overwrite.
Primary rating from Vendor (https://github.com/pdm-project/pdm).
CVSS VectorVendor: https://github.com/pdm-project/pdm
Lifecycle Timeline
5DescriptionCVE.org
InstallDestination.write_to_fs() in src/pdm/installers/installers.py overrides the base class to add symlink/hardlink support but replaces the safe _path_with_destdir() (which validates via Path.resolve() + is_relative_to()) with a bare os.path.join() that performs no path validation. A malicious wheel with traversal entries can write arbitrary files. Same class as Poetry CVE-2026-34591. Fix ready at: https://github.com/pdm-project/pdm/pull/3787.
AnalysisAI
Arbitrary file write in PDM's wheel installer allows a maliciously crafted Python package to escape its designated installation directory and write attacker-controlled content anywhere on the target filesystem permitted by the running user's OS permissions. PDM versions through 2.22.4 are affected due to the InstallDestination.write_to_fs() override silently dropping the parent class's validated path resolution in favor of an unguarded os.path.join() call. No active exploitation is confirmed (not in CISA KEV, EPSS 0.05%), but the vulnerability class is well-understood, the fix is in released version 2.27.0, and the supply chain threat model makes developer workstations and CI/CD pipelines the primary exposure surface.
Same weakness CWE-22 – Path Traversal
View allSame technique Path Traversal
View allVendor StatusVendor
SUSE
Severity: Moderate| Product | Status |
|---|---|
| openSUSE Tumbleweed | Fixed |
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-52854
GHSA-78v8-vpjp-cjqh