-
Notifications
You must be signed in to change notification settings - Fork 33
chore(deps): update dependency wheel to v0.46.2 [security] #813
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
chore(deps): update dependency wheel to v0.46.2 [security] #813
Conversation
Summary of ChangesHello @renovate-bot, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request updates the Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request updates the wheel dependency to version 0.46.2, addressing the high-severity security vulnerability CVE-2026-24049. The update is crucial for security. While the change in requirements.txt is correct, this file appears to be generated by pip-tools. Modifying requirements.txt directly may lead to this security fix being accidentally reverted the next time dependencies are re-compiled. I have added a comment with a recommendation to ensure the fix is permanent.
| wheel==0.46.2 \ | ||
| --hash=sha256:33ae60725d69eaa249bc1982e739943c23b34b58d51f1cb6253453773aca6e65 \ | ||
| --hash=sha256:3d79e48fde9847618a5a181f3cc35764c349c752e2fe911e65fa17faab9809b0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This update correctly patches the security vulnerability in wheel. However, since requirements.txt is a generated file (likely from requirements.in using pip-tools), this direct modification might be temporary. If pip-compile is run without an updated constraint, this change could be reverted, reintroducing the vulnerability.
To make the fix permanent, please consider adding wheel >= 0.46.2 to your requirements.in file and regenerating requirements.txt.
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 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.