Bug 2245580 (CVE-2023-45805) - CVE-2023-45805 python-pdm: Malicious pdm.lock file can install a different project while appearing to depend on a trusted PyPI project
Summary: CVE-2023-45805 python-pdm: Malicious pdm.lock file can install a different pr...
Keywords:
Status: NEW
Alias: CVE-2023-45805
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Product Security
QA Contact:
URL:
Whiteboard:
Depends On: 2245581
Blocks:
TreeView+ depends on / blocked
 
Reported: 2023-10-23 06:07 UTC by TEJ RATHI
Modified: 2023-10-23 06:08 UTC (History)
0 users

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)

Description TEJ RATHI 2023-10-23 06:07:50 UTC
pdm is a Python package and dependency manager supporting the latest PEP standards. It's possible to craft a malicious `pdm.lock` file that could allow e.g. an insider or a malicious open source project to appear to depend on a trusted PyPI project, but actually install another project. A project `foo` can be targeted by creating the project `foo-2` and uploading the file `foo-2-2.tar.gz` to pypi.org. PyPI will see this as project `foo-2` version `2`, while PDM will see this as project `foo` version `2-2`. The version must only be `parseable as a version` and the filename must be a prefix of the project name, but it's not verified to match the version being installed. Version `2-2` is also not a valid normalized version per PEP 440. Matching the project name exactly (not just prefix) would fix the issue. When installing dependencies with PDM, what's actually installed could differ from what's listed in `pyproject.toml` (including arbitrary code execution on install). It could also be used for downgrade attacks by only changing the version. This issue has been addressed in commit `6853e2642df` which is included in release version `2.9.4`. Users are advised to upgrade. There are no known workarounds for this vulnerability.

https://github.com/pdm-project/pdm/commit/6853e2642dfa281d4a9958fbc6c95b7e32d84831
https://github.com/frostming/unearth/blob/eca170d9370ac5032f2e497ee9b1b63823d3fe0f/src/unearth/evaluator.py#L215-L229
https://github.com/pdm-project/pdm/security/advisories/GHSA-j44v-mmf2-xvm9
https://github.com/pdm-project/pdm/blob/45d1dfa47d4900c14a31b9bb761e4c46eb5c9442/src/pdm/models/candidates.py#L98-L99
https://peps.python.org/pep-0440/#post-release-spelling

Comment 1 TEJ RATHI 2023-10-23 06:08:10 UTC
Created python-pdm-pep517 tracking bugs for this issue:

Affects: fedora-all [bug 2245581]


Note You need to log in before you can comment on or make changes to this bug.