chore(deps): update dependency wheel to v0.46.2 [security] #3331
+1
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
==0.45.1→==0.46.2GitHub Vulnerability Alerts
CVE-2026-24049
Summary
Details
The vulnerability exists in how the unpack function handles file permissions after extraction. The code blindly trusts the filename from the archive header for the chmod operation, even though the extraction process itself might have sanitized the path.
PoC
I have confirmed this exploit works against the unpack function imported from setuptools._vendor.wheel.cli.unpack.
Prerequisites: pip install setuptools
Step 1: Generate the Malicious Wheel (gen_poc.py)
This script creates a wheel that passes internal hash validation but contains a directory traversal payload in the file list.
Step 2: Run the Exploit (exploit.py)
result:

Impact
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) to 777. This allows for Privilege Escalation or arbitrary code execution by modifying now-writable scripts.
Recommended Fix
The unpack function must not use zinfo.filename for post-extraction operations. It should use the sanitized path returned by wf.extract().
Suggested Patch:
Release Notes
pypa/wheel (wheel)
v0.46.2Compare Source
bdist_wheelcommand for compatibility withsetuptoolsolder than v70.1wheel.bdist_wheelnow emits aFutureWarninginstead of aDeprecationWarningwheel unpackpotentially altering the permissions of files outside of the destination tree with maliciously crafted wheels (CVE-2026-24049)v0.46.1Compare Source
wheel.macosx_libfilemodule (#659)v0.46.0Compare Source
bdist_wheelsetuptools command implementation and entry point. Thewheel.bdist_wheelmodule is now just an alias tosetuptools.command.bdist_wheel, emitting a deprecation warning on import.packagingin favor of a run-time dependency on itwheel.metadatamodule private (with a deprecation warning if it's importedwheel.clipackage private (no deprecation warning)convertcommand with an empty description fieldConfiguration
📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.