CVE-2026-47764
pdm: Path traversal in wheel installation via overridden write_to_fs
pdm is a Python package and dependency manager supporting the latest PEP standards. Versions prior to 2.27.0 are vulnerable to path traversal through write_to_fs. 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. This issue has been fixed in version 2.27.0.
Attack profile
How easy it is to exploit
- Attack vector
- Local
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Active
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
8.4
pdm: Path traversal in wheel installation via overridden write_to_fs
pdm is a Python package and dependency manager supporting the latest PEP standards. Versions prior to 2.27.0 are vulnerable to path traversal through write_to_fs. 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. This issue has been fixed in version 2.27.0.
- Record
CVE-2026-47764- CVSS 4.0
- 8.4 High
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 - Weakness
- CWE-22
- Updated
- 2026-11-02
EUVDEUVD-2026-52854
8.4
pdm is a Python package and dependency manager supporting the latest PEP standards. Versions prior to 2.27.0 are vulnerable to path traversal through write_to_fs. 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. This issue has been fixed in version 2.27.0.
- Record
EUVD-2026-52854- CVSS 4.0
- 8.4 High
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 - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-78v8-vpjp-cjqh
7.1
PDM wheel installation leads to Path Traversal via overridden write_to_fs
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.
- Record
GHSA-78v8-vpjp-cjqh- CVSS 4.0
- 7.1 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-22
- Updated
- 2026-11-02
NVD
8.4
pdm is a Python package and dependency manager supporting the latest PEP standards. Versions prior to 2.27.0 are vulnerable to path traversal through write_to_fs. 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. This issue has been fixed in version 2.27.0.
- Record
CVE-2026-47764- CVSS 4.0
- 8.4 High
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 - Weakness
- CWE-22
- Updated
- 2026-11-02
OSV
8.4
pdm: Path traversal in wheel installation via overridden write_to_fs
pdm is a Python package and dependency manager supporting the latest PEP standards. Versions prior to 2.27.0 are vulnerable to path traversal through write_to_fs. 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. This issue has been fixed in version 2.27.0.
- Record
CVE-2026-47764- CVSS 4.0
- 8.4 High
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 - Weakness
- CWE-22
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-47764
8.4
pdm is a Python package and dependency manager supporting the latest PEP standards. Versions prior to 2.27.0 are vulnerable to path traversal through write_to_fs. 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. This issue has been fixed in version 2.27.0.
- Record
DEBIAN-CVE-2026-47764- CVSS 4.0
- 8.4 High
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 - Updated
- 2026-11-02
Show 5 moreShow less
OSVGHSA-78v8-vpjp-cjqh
7.1
PDM wheel installation leads to Path Traversal via overridden write_to_fs
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.
- Record
GHSA-78v8-vpjp-cjqh- CVSS 4.0
- 7.1 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-22
- Updated
- 2026-11-02
OSVPYSEC-2026-2861
7.1
PDM wheel installation leads to Path Traversal via overridden write_to_fs
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.
- Record
PYSEC-2026-2861- CVSS 4.0
- 7.1 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-47764
8.4
pdm is a Python package and dependency manager supporting the latest PEP standards. Versions prior to 2.27.0 are vulnerable to path traversal through write_to_fs. 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. This issue has been fixed in version 2.27.0.
- Record
UBUNTU-CVE-2026-47764- CVSS 4.0
- 8.4 High
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 - Updated
- 2026-11-02
OSVopenSUSE-SU-2026:11124-1 No score
python311-pdm-2.28.0-1.1 on GA media
These are all security issues fixed in the python311-pdm-2.28.0-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:11124-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:21161-1 No score
Security update for python-pdm
This update for python-pdm fixes the following issues:
Changes in python-pdm:
- CVE-2026-47763: Do not follow symlinks when writing config files (bsc#1268384)
- CVE-2026-47763: Do not write to paths outside the scheme dir (bsc#1268385)
- CVE-2026-47781: Update plugin installation path to use project_plugins_dir (bsc#1268386)
- Record
openSUSE-SU-2026:21161-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
pdmPyPI |
through 2.22.4 | 2.27.0 |
pdmDebian:12 |
All versions, plus listed versions 2.2.1+ds1-12.2.1+ds1-22.20.0.post1+ds1-12.20.0.post1+ds1-22.20.1+ds1-1 Show 13 moreShow less2.20.1+ds1-22.23.1-12.23.1-22.23.1-32.23.1-42.26.2-12.26.6-12.27.0-12.28.0-12.28.1-12.29.0-12.29.2-12.29.3-1 |
None known |
pdmDebian:13 |
All versions, plus listed versions 2.20.1+ds1-22.23.1-12.23.1-22.23.1-32.23.1-4 Show 8 moreShow less2.26.2-12.26.6-12.27.0-12.28.0-12.28.1-12.29.0-12.29.2-12.29.3-1 |
None known |
pdmDebian:14 |
before 2.27.0-1, plus listed versions 2.20.1+ds1-22.23.1-12.23.1-22.23.1-32.23.1-42.26.2-12.26.6-1 |
2.27.0-1 |
pdmPyPI |
before 2.27.0, plus listed versions 0.0.00.0.10.0.30.0.40.0.5 Show 45 moreShow less0.0.60.1.00.1.10.1.20.10.00.10.10.10.20.11.00.12.00.12.10.12.20.12.30.2.00.2.10.2.20.2.30.2.40.2.50.2.60.3.00.3.10.3.20.4.00.4.10.4.20.5.00.6.00.6.10.6.20.6.30.6.40.6.50.7.00.7.10.8.00.8.10.8.20.8.30.8.40.8.50.8.60.8.70.9.00.9.10.9.2 |
2.27.0 |
pdmUbuntu:26.10 |
All versions, plus listed versions 2.23.1-42.27.0-12.28.0-12.28.1-1 |
None known |
pdmUbuntu:26.04:LTS |
All versions, plus listed versions 2.20.1+ds1-22.23.1-4 |
None known |
python-pdmopenSUSE:Tumbleweed From an advisory covering 3 CVEs |
before 2.28.0-1.1 | 2.28.0-1.1 |
python-pdmopenSUSE:Leap 16.0 From an advisory covering 3 CVEs |
before 2.22.3-bp160.2.1 | 2.22.3-bp160.2.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| aliases | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-47764 is a high vulnerability (CVSS 8.4) in Pdm-project Pdm, published June 10, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.20%, the 9th percentile. Fixed in pdm 2.27.0.
References
github.com/pdm-project/pdm/security/advisories/GHSA-78v8-vpjp-cjqh
github.com/pdm-project/pdm/releases/tag/2.27.0
github.com/pdm-project/pdm/pull/3787
github.com/advisories/GHSA-78v8-vpjp-cjqh
github.com/CVEProject/cvelistV5/tree/main/cves/2026/47xxx/CVE-2026-47764.json
nvd.nist.gov/vuln/detail/CVE-2026-47764
Show 11 moreShow less
security-tracker.debian.org/tracker/CVE-2026-47764
github.com/pdm-project/pdm
pypi.org/project/pdm
ubuntu.com/security/CVE-2026-47764
cve.org/CVERecord?id=CVE-2026-47764
suse.com/security/cve/CVE-2026-47763
suse.com/security/cve/CVE-2026-47764
suse.com/security/cve/CVE-2026-47781
bugzilla.suse.com/1268384
bugzilla.suse.com/1268385
bugzilla.suse.com/1268386
Left out here: 197 versions. The JSON record has them.