wheel Allows Arbitrary File Permission Modification via Path Traversal (pypa wheel)
At a glance
- Source
- NVD
- EPSS
- EPSS 0.35 % · percentile 29 ()
- State
- PUBLISHED
- Published
- Updated
- Assigner
- GitHub_M
- NVD status
- Modified
Description
wheel is a command line tool for manipulating Python wheel files, as defined in PEP 427. In versions 0.40.0 through 0.46.1, the unpack function is vulnerable to file permission modification through mishandling of file permissions after extraction. The logic blindly trusts the filename from the archive header for the chmod operation, even though the extraction process itself might have sanitized the path. Attackers can craft a malicious wheel file that, when unpacked, changes the permissions of critical system files (e.g., /etc/passwd, SSH keys, config files), allowing for Privilege Escalation or arbitrary code execution by modifying now-writable scripts. This issue has been fixed in version 0.46.2.
Weaknesses (CWE)
- CWE-22 — Improper Limitation of a Pathname to a Restricted Directory
- CWE-732 — Incorrect Permission Assignment for Critical Resource
References
- https://github.com/pypa/wheel/security/advisories/GHSA-8rrh-rw8j-w5fx
- https://github.com/pypa/wheel/commit/7a7d2de96b22a9adf9208afcc9547e1001569fef
- https://github.com/pypa/wheel/releases/tag/0.46.2
- https://access.redhat.com/security/cve/CVE-2026-24049
- https://bugzilla.redhat.com/show_bug.cgi?id=2431959
- https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-24049.json
- https://access.redhat.com/errata/RHSA-2026:2823
- https://access.redhat.com/errata/RHSA-2026:3959
- https://access.redhat.com/errata/RHSA-2026:3958
- https://access.redhat.com/errata/RHSA-2026:2090
- https://access.redhat.com/errata/RHSA-2026:2866
- https://access.redhat.com/errata/RHSA-2026:2710
- https://access.redhat.com/errata/RHSA-2026:1939
- https://access.redhat.com/errata/RHSA-2026:2865
- https://access.redhat.com/errata/RHSA-2026:1902
- https://access.redhat.com/errata/RHSA-2026:2900
- https://access.redhat.com/errata/RHSA-2026:61628
- https://access.redhat.com/errata/RHSA-2026:3461
- https://access.redhat.com/errata/RHSA-2026:3462
- https://access.redhat.com/errata/RHSA-2026:3960
- https://access.redhat.com/errata/RHSA-2026:13545
- https://access.redhat.com/errata/RHSA-2026:62115
- https://access.redhat.com/errata/RHSA-2026:2675
- https://access.redhat.com/errata/RHSA-2026:2694
- https://access.redhat.com/errata/RHSA-2026:10184
- https://access.redhat.com/errata/RHSA-2026:2695
- https://access.redhat.com/errata/RHSA-2026:2106
- https://access.redhat.com/errata/RHSA-2026:3782
- https://access.redhat.com/errata/RHSA-2026:19712
- https://access.redhat.com/errata/RHSA-2026:3713
- https://access.redhat.com/errata/RHSA-2026:5119
- https://access.redhat.com/errata/RHSA-2026:20089
- https://access.redhat.com/errata/RHSA-2026:17599
- https://access.redhat.com/errata/RHSA-2026:6555
- https://access.redhat.com/errata/RHSA-2026:7250
- https://access.redhat.com/errata/RHSA-2026:6565
- https://access.redhat.com/errata/RHSA-2026:6562
- https://access.redhat.com/errata/RHSA-2026:6192
- https://access.redhat.com/errata/RHSA-2026:14020
- https://access.redhat.com/errata/RHSA-2026:2762
- https://access.redhat.com/errata/RHSA-2026:4942
- https://access.redhat.com/errata/RHSA-2026:4185
- https://access.redhat.com/errata/RHSA-2026:4215
- https://access.redhat.com/errata/RHSA-2026:1942
- https://access.redhat.com/errata/RHSA-2026:2681
- https://access.redhat.com/errata/RHSA-2026:2754
- https://access.redhat.com/errata/RHSA-2026:1504
- https://access.redhat.com/errata/RHSA-2026:2925
- https://access.redhat.com/errata/RHSA-2026:4271
- https://access.redhat.com/errata/RHSA-2026:2139
Scores
| Version | Score | Vector | Scored by |
|---|---|---|---|
| CVSS 3.1 | HIGH 7.1 | CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H | GitHub_M |
| CVSS 3.1 | HIGH 7.1 | CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H | redhat-SADP |
| CVSS 3.1 | HIGH 7.1 | CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H | NVD · security-advisories@github.com (Secondary) |
| CVSS 3.1 | MEDIUM 5.5 | CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N | NVD · nvd@nist.gov (Primary) |
| CVSS 3.1 | HIGH 7.1 | CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H | NVD · 0b0ca135-0b70-47e7-9f44-1890c2a1c46c (Secondary) |
Advisories
- GHSA-8rrh-rw8j-w5fx — Wheel Affected by Arbitrary File Permission Modification via Path Traversal in wheel unpack
- PYSEC-2026-2047 — Wheel Affected by Arbitrary File Permission Modification via Path Traversal in wheel unpack
European references
- ENISA EUVD · EUVD-2026-4133
- GCVE · GCVE-0-2026-24049
CERT-FR advisories
- CERTFR-2026-AVI-1385 — Multiples vulnérabilités dans les produits VMware · cert.ssi.gouv.fr
- CERTFR-2026-AVI-0736 — Multiples vulnérabilités dans les produits Splunk · cert.ssi.gouv.fr
- CERTFR-2026-AVI-0556 — Multiples vulnérabilités dans les produits VMware · cert.ssi.gouv.fr
- CERTFR-2026-AVI-0540 — Multiples vulnérabilités dans VMware Tanzu Gemfire · cert.ssi.gouv.fr
- CERTFR-2026-AVI-0326 — Multiples vulnérabilités dans les produits VMware · cert.ssi.gouv.fr
Affected configurations (NVD CPE)
cpe:2.3:a:wheel_project:wheel:*:*:*:*:*:python:*:*≥ 0.40.0 < 0.46.2
Affected products
| Product | Versions |
|---|---|
| pypa · wheel | affected >= 0.40.0, < 0.46.2 |
Sources
| Source | Licence |
|---|---|
| CVE List (CVEProject cvelistV5) | CVE Program Terms of Use |
| EPSS (FIRST.org) | FIRST — attribution requested |
| ENISA EUVD | ENISA — reproduction authorised, source acknowledged |
| CERT-FR (ANSSI) | Licence Ouverte / Etalab 2.0 |
| NVD (NIST) via fkie-cad/nvd-json-data-feeds | Public domain — this product uses data from the NVD API but is not endorsed or certified by the NVD |