CVE catalog

CVE-2026-47763

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 protectio

[CVE catalog]

Severity
Medium · CVSS 6.8CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:N/VI:H/VA:L/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
Published
Source
[NVD] · [CVE record]
EPSS
0.20% · Oct 25, 2026

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.

Vulnerable and fixed packages

Distribution-reported package versions and fixes. These do not depend on matching against the OpenFactory package catalog.

DistributionPackageReleaseVersionStatus
Debianpdmsid2.29.3-1fixed
Debianpdmforky2.29.3-1fixed
Debianpdmtrixie2.20.1+ds1-2vulnerable
Debianpdmbookworm2.2.1+ds1-1vulnerable
Opensusepython-pdmleap 16.02.22.3-bp160.2.1fixed
Opensusepython-pdmtumbleweed2.28.0-1.1fixed

Fixed-version evidence

DistributionPackageTypeReleaseFixed versionUrgencyOriginBugs
Debianpdmsourcesid2.27.0-1not yet assignedNot reportedNot reported
Debianpdmsourceforky2.27.0-1not yet assignedNot reportedNot reported
Debianpdmsourcetrixie(unfixed)not yet assignedNot reportedNot reported
Debianpdmsourcebookworm(unfixed)not yet assignedNot reportedNot reported
Opensusepython-pdmrpmleap 16.02.22.3-bp160.2.1Not reportedOPENSUSE-SU-2026:21161-1Not reported
Opensusepython-pdmrpmtumbleweed2.28.0-1.1Not reportedOPENSUSE-SU-2026:11124-1Not reported

Notes

[trixie] pdm: Minor issue [bookworm] pdm: Minor issue

OpenFactory catalog packages

[Debian 12 (Bookworm)]

  • [python3-pdm]Affected

    Source package: [pdm]

    Details (2)
    • 2.2.1+ds1-1 · all · bookworm

      Affected

      nvd · pdm · debian · bookworm; nvd · pdm · debian · 12

    • 2.2.1+ds1-1 · all · bookworm

      Affected

      nvd · pdm · debian · bookworm; nvd · pdm · debian · 12

[Debian 13 (Trixie)]

  • [python3-pdm]Affected

    Source package: [pdm]

    Details (2)
    • 2.20.1+ds1-2 · all · trixie

      Affected

      nvd · pdm · debian · 13

    • 2.20.1+ds1-2 · all · trixie

      Affected

      nvd · pdm · debian · 13

[openSUSE Tumbleweed]

  • [python313-pdm]Unknown

    Source package: [python-pdm]

    Details (1)
    • 2.28.0-1.2 · noarch · tumbleweed

      Unknown · Fixed: 2.28.0-1.1

      Version impact unknown

      nvd · python-pdm · opensuse · tumbleweed

  • [python314-pdm]Unknown

    Source package: [python-pdm]

    Details (1)
    • 2.28.0-1.2 · noarch · tumbleweed

      Unknown · Fixed: 2.28.0-1.1

      Version impact unknown

      nvd · python-pdm · opensuse · tumbleweed

Observed:

References