CVE-2026-24049
📋 TL;DR
CVE-2026-24049 is a path traversal vulnerability in Python's wheel tool (versions 0.40.0-0.46.1) that allows attackers to modify file permissions of critical system files when unpacking malicious wheel archives. This can lead to privilege escalation or arbitrary code execution by making sensitive files writable. Anyone using the vulnerable wheel tool to unpack Python packages is affected.
💻 Affected Systems
- wheel (Python package tool)
📦 What is this software?
Wheel by Wheel Project
⚠️ Risk & Real-World Impact
Worst Case
Full system compromise through privilege escalation by modifying /etc/passwd, SSH keys, or system configuration files, leading to root access and complete control.
Likely Case
Local privilege escalation on development systems or CI/CD pipelines where wheel is used to unpack third-party packages, potentially compromising build environments.
If Mitigated
Limited impact if systems run with minimal privileges, use containerization, or have strict file permission controls preventing modification of critical files.
🎯 Exploit Status
Exploitation requires the victim to unpack a malicious wheel file. No authentication is needed beyond having the victim run the vulnerable wheel command on the malicious file.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: 0.46.2
Vendor Advisory: https://github.com/pypa/wheel/security/advisories/GHSA-8rrh-rw8j-w5fx
Restart Required: No
Instructions:
1. Upgrade wheel to version 0.46.2 or later using pip: 'pip install --upgrade wheel>=0.46.2'. 2. Verify the upgrade with 'wheel version'. 3. Ensure all CI/CD pipelines and development environments use the patched version.
🔧 Temporary Workarounds
Avoid unpacking untrusted wheel files
allDo not use the wheel command to unpack wheel files from untrusted sources. Use pip install instead, which performs additional security checks.
# Use pip instead of wheel directly
pip install package.whl
Run wheel with reduced privileges
allExecute wheel commands as a non-privileged user in a sandboxed environment to limit damage from permission modifications.
# Example: Run as non-root user in container
docker run --user 1000:1000 python wheel unpack package.whl
🧯 If You Can't Patch
- Avoid using the wheel tool directly; use pip or other package managers that don't invoke the vulnerable unpack function.
- Implement strict file system permissions and monitoring on critical system files to detect unauthorized permission changes.
🔍 How to Verify
Check if Vulnerable:
Check wheel version with 'wheel version' or 'pip show wheel'. If version is between 0.40.0 and 0.46.1 inclusive, the system is vulnerable.
Check Version:
wheel version
Verify Fix Applied:
After upgrading, run 'wheel version' and confirm the version is 0.46.2 or higher. Test by unpacking a known safe wheel file and checking that file permissions are not unexpectedly modified.
📡 Detection & Monitoring
Log Indicators:
- Unexpected permission changes on system files (e.g., /etc/passwd becoming writable)
- Wheel command execution logs showing unpacking of unfamiliar wheel files
Network Indicators:
- Downloads of wheel files from untrusted sources or unusual repositories
SIEM Query:
Process execution where command contains 'wheel unpack' AND (source_ip NOT IN trusted_ips OR file_path CONTAINS suspicious_pattern)