Skip to content
OpenAdvisories
Medium · 6.8 CVE-2026-47763 EUVD-2026-52807GHSA-ghq2-5c67-fprmPYSEC-2026-2862

pdm: Project-Local State and Config Writes Follow Symlinks

Published Aug 4, 2026 · Updated Aug 5, 2026 · Assigned by GitHub_M

Description

pdm is a Python package and dependency manager supporting the latest PEP standards. In versions prior to 2.27.0, pdm writes several project-local state or configuration files without symlink protection. If a malicious repository places those files as symlinks, local PDM operations can overwrite the symlink targets. This creates an arbitrary file clobber primitive relative to the privileges of the invoking user. Config.__init__() resolves the project-local pdm.toml path and _save_config() writes to the resolved target. If PROJECT_ROOT/pdm.toml is a symlink to another file, pdm config -l ... updates the target file instead of refusing the write.
The same general problem exists for other project-local persistence paths that are written directly with no lstat / O_NOFOLLOW protection. For the pdm.toml PoC specifically, the target file must already contain parseable TOML. Otherwise the load step fails before the write path is reached. That parser constraint does not apply to the .pdm-python or .python-version sinks. This issue has been fixed in version 2.27.0.

Affected products

VendorProductAffectedFixed
pdm-project pdm < 2.27.0 —

Fixed in Linux distributions

Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.

ReleasePackageFixed inAdvisory
Debian 14 pdm 2.27.0-1 —
Debian 13 pdm No fix yet —
Debian 12 pdm No fix yet —
ReleasePackageFixed inAdvisory
Ubuntu 26.10 pdm No fix yet —
Ubuntu 26.04 LTS pdm No fix yet —
ReleasePackageFixed inAdvisory
openSUSE Tumbleweed python-pdm 2.28.0-1.1 openSUSE-SU-2026:11124-1
openSUSE Leap 16.0 python-pdm 2.22.3-bp160.2.1 openSUSE-SU-2026:21161-1

Affected packages

EcosystemPackageAffectedFixedRecord
PyPI pdm < 2.27.0 2.27.0 GHSA-ghq2-5c67-fprm

Advisories 2

References