chore(deps): update dependency wheel to ==0.46.* [security] #51
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.41.*→==0.46.*GitHub 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 fieldv0.45.1Compare Source
v0.45.0Compare Source
Refactored the
convertcommand to not need setuptools to be installedDon't configure setuptools logging unless running
bdist_wheelAdded a redirection from
wheel.bdist_wheel.bdist_wheeltosetuptools.command.bdist_wheel.bdist_wheelto improve compatibility withsetuptools' latest fixes.Projects are still advised to migrate away from the deprecated module and import the
setuptools' implementation explicitly. (PR by @abravalheri)v0.44.0Compare Source
bdist_wheelmodule, as the code was migrated tosetuptoolsitselfv0.43.0Compare Source
packagingto 24.0v0.42.0Compare Source
wheel tags --build ""wheel packandwheel tagswriting updatedWHEELfields after a blank line, causing other tools to ignore themwheel packandwheel tagswritingWHEELwith CRLF line endings or a mix of CRLF and LFwheel pack --build-number ""not removing build tag fromWHEEL(above changes by Benjamin Gilbert)v0.41.3Compare Source
packagingto 23.2v0.41.2Compare Source
v0.41.1Compare Source
Configuration
📅 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 becomes conflicted, 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.