Vulnerability · Published Jan 22, 2026 · Assigned by GitHub_M
CVE-2026-24049wheel Allows Arbitrary File Permission Modification via Path Traversal
High 7.1
In plain English
A high-severity path traversal in wheel from pypa. Proof-of-concept exploit code is public. The chance it is exploited in the next 30 days is estimated at 0.4% (higher than 29% of all known vulnerabilities). Ready-made attack tooling exists: public proof-of-concept code. Fixed versions are available - upgrade the affected package.
Official 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.
Affected packages & fixed versions
| Ecosystem | Package | Fixed in | Advisory |
|---|---|---|---|
| AlmaLinux:10 | python3-wheel | 1:0.41.2-5.el10_1.1 | ALSA-2026:1902 |
| AlmaLinux:10 | python3-wheel-wheel | 1:0.41.2-5.el10_1.1 | ALSA-2026:1902 |
| AlmaLinux:8 | python3.12-wheel | 0.41.2-4.el8_10 | ALSA-2026:2090 |
| AlmaLinux:9 | python3.12-wheel | 0.41.2-3.el9_7.1 | ALSA-2026:1939 |
| AlmaLinux:8 | python3.12-wheel-wheel | 0.41.2-4.el8_10 | ALSA-2026:2090 |
| AlmaLinux:9 | python3.12-wheel-wheel | 0.41.2-3.el9_7.1 | ALSA-2026:1939 |
| Alpine:v3.22 | py3-wheel | 0.46.3-r0 | ALPINE-CVE-2026-24049 |
| Alpine:v3.23 | py3-wheel | 0.46.3-r0 | ALPINE-CVE-2026-24049 |
| Alpine:v3.24 | py3-wheel | 0.46.3-r0 | ALPINE-CVE-2026-24049 |
| Debian:13 | wheel | no fix listed | DEBIAN-CVE-2026-24049 |
| Debian:14 | wheel | 0.46.3-1 | DEBIAN-CVE-2026-24049 |
| PyPI | wheel | 0.46.2 | GHSA-8rrh-rw8j-w5fx |
| PyPI | wheel | 0.46.2 | PYSEC-2026-2047 |
| Rocky Linux:10 | python-wheel | 1:0.41.2-5.el10_1.1 | RLSA-2026:1902 |
| Rocky Linux:8 | python3.12-wheel | 0:0.41.2-4.el8_10 | RLSA-2026:2090 |
| Rocky Linux:9 | python3.12-wheel | 0:0.41.2-3.el9_7.1 | RLSA-2026:1939 |
| Ubuntu:25.10 | python-pip | no fix listed | UBUNTU-CVE-2026-24049 |
| Ubuntu:25.10 | wheel | no fix listed | UBUNTU-CVE-2026-24049 |
Affected products (as reported)
Weakness: CWE-22, CWE-732 · Vector: CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H
References
- https://github.com/pypa/wheel/security/advisories/GHSA-8rrh-rw8j-w5fx x_refsource_CONFIRM
- https://github.com/pypa/wheel/commit/7a7d2de96b22a9adf9208afcc9547e1001569fef x_refsource_MISC
- https://github.com/pypa/wheel/releases/tag/0.46.2 x_refsource_MISC
- https://access.redhat.com/security/cve/CVE-2026-24049 vdb-entry, x_refsource_REDHAT
- RHBZ#2431959 issue-tracking, x_refsource_REDHAT
- https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-24049.json x_sadp-csaf-vex
- https://access.redhat.com/errata/RHSA-2026:2823 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:3959 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:3958 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:2090 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:2866 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:2710 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:1939 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:2865 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:1902 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:2900 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:61628 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:3461 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:3462 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:3960 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:13545 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:62115 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:2675 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:2694 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:10184 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:2695 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:2106 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:3782 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:19712 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:3713 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:5119 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:20089 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:17599 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:6555 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:7250 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:6565 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:6562 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:6192 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:14020 vendor-advisory, x_refsource_REDHAT
- https://access.redhat.com/errata/RHSA-2026:2762 vendor-advisory, x_refsource_REDHAT