Update dependency PyInstaller to v6 [SECURITY] #62
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:
==3.4→==6.0.0GitHub Vulnerability Alerts
CVE-2019-16784
Impact
Local Privilege Escalation in all Windows software frozen by PyInstaller in "onefile" mode.
The vulnerability is present only on Windows and in this particular case: If a software frozen by PyInstaller in "onefile" mode is launched by a (privileged) user who has his/her "TempPath" resolving to a world writable directory. This is the case e.g. if the software is launched as a service or as a scheduled task using a system account (in which case TempPath will default to C:\Windows\Temp).
In order to be exploitable the software has to be (re)started after the attacker has launched the exploit program. So for a service launched at startup, a service restart is needed (e.g. after a crash or an upgrade).
While PyInstaller itself was not vulnerable, all Windows software frozen by PyInstaller in "onefile" mode is vulnerable.
CVSSv3 score 7.0 (High)
CVSSv3 vector CVSS:3.0/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Affected
No affected
Patches
The problem is patched in commits 42a67148b3bdf9211fda8499fdc5b63acdd7e6cc (fixed code) and be948cf0954707671aa499da17b10c86b6fa5e5c (recompiled bootloaders). Users should upgrade to PyInstaller version 3.6 and rebuild their software.
Workarounds
There is no known workaround. Users using PyInstaller to freeze their Windows software using "onefile" mode should upgrade PyInstaller and rebuild their software.
Credits
This vulnerability was discovered and reported by Farid AYOUJIL (@faridtsl), David HA, Florent LE NIGER and Yann GASCUEL (@lnv42) from Alter Solutions (@AlterSolutions) and fixed in collaboration with
Hartmut Goebel (@htgoebel, maintainer of PyInstaller).
Funding Development
PyInstaller is in urgent need of funding to make future security fixes happen, see https://redirect.github.com/pyinstaller/pyinstaller/issues/4404 for details.
CVE-2023-49797
Impact
A PyInstaller built application, elevated as a privileged process, may be tricked by an unprivileged attacker into deleting files the unprivileged user does not otherwise have access to.
A user is affected if all the following are satisfied:
matplotliborwin32com.TMP/TEMPenvironment variables pointing to an unprotected, arbitrary, non default location).shutil.rmtree()'s builtin symlink check and the deletion itselfPatches
The vulnerability has been addressed in https://github.com/pyinstaller/pyinstaller/pull/7827 which corresponds to
pyinstaller >= 5.13.1Workarounds
Is there a way for users to fix or remediate the vulnerability without upgrading?
No workaround, although the attack complexity becomes much higher if the application is built with Python >= 3.8.0.
CVE-2025-59042
Impact
Due to a special entry being appended to
sys.pathduring the bootstrap process of a PyInstaller-frozen application, and due to the bootstrap script attempting to load an optional module for bytecode decryption while this entry is still present insys.path, an application built with PyInstaller < 6.0.0 may be tricked by an unprivileged attacker into executing arbitrary python code when all of the following conditions are met:?in their name (i.e., non-Windows systems).The attacker can create a directory (or a zip archive) next to the executable, with the name that matches the format used by PyInstaller's bootloader to transmit information about the location of PYZ archive to the bootstrap script. If this directory (or zip archive) contains a python module whose name matches the name used by the optional bytecode encryption feature, this module will be loaded and executed by the bootstrap script (in the absence of the real, built-in module that is available when the bytecode-encryption feature is enabled). This results in arbitrary code execution that requires no modification of the executable itself.
If the executable is running with elevated privileges (for example, due to having the
setuidbit set), the code in the injected module is also executed with the said elevated privileges, resulting in a local privilege escalation.Patches
PyInstaller 6.0.0 (f5adf291c8b832d5aff7632844f7e3ddf7ad4923) removed support for bytecode encryption; this effectively removes the described attack vector, due to the bootstrap script not attempting to load the optional module for bytecode-decryption anymore.
PyInstaller 6.10.0 (cfd60b510f95f92cb81fc42735c399bb781a4739) reworked the bootstrap process to avoid (ab)using
sys.pathfor transmitting location of the PYZ archive, which further eliminates the possibility of described injection procedure.Workarounds
If upgrading PyInstaller is no feasible, this issue can be worked around by ensuring proper permissions on directories containing security-sensitive executables (i.e., executables with
setuidbit set) should mitigate the issue.Release Notes
pyinstaller/pyinstaller (PyInstaller)
v6.0.0Compare Source
Please see the v6.0.0 section of the changelog for a list of the changes since v5.13.2.
v5.13.2Compare Source
Please see the v5.13.2 section of the changelog for a list of the changes since v5.13.1.
v5.13.1Compare Source
Please see the v5.13.1 section of the changelog for a list of the changes since v5.13.0. Note that this is a bugfix only release. It's primary purpose is to publish #7827.
v5.13.0Compare Source
Please see the v5.13.0 section of the changelog for a list of the changes since v5.12.0.
Note that this is intended to be the last
v5.xrelease.v6.0will contain breaking changes from #7619, #7713 and #6999. If you want to avoid unexpected disruption, you may wish to pin pyinstaller (e.g.pip install "pyinstaller<6").v5.12.0Compare Source
Please see the v5.12.0 section of the changelog for a list of the changes since v5.11.0.
v5.11.0Compare Source
Please see the v5.11.0 section of the changelog for a list of the changes since v5.10.1.
v5.10.1Compare Source
Please see the v5.10.1 section of the changelog for a list of the changes since v5.10.0.
v5.10.0Compare Source
Please see the v5.10.0 section of the changelog for a list of the changes since v5.9.0.
v5.9.0Compare Source
Please see the v5.9.0 section of the changelog for a list of the changes since v5.8.0.
v5.8.0Compare Source
Please see the v5.8.0 section of the changelog for a list of the changes since v5.7.0.
v5.7.0Compare Source
Please see the v5.7.0 section of the changelog for a list of the changes since v5.6.2.
v5.6.2Compare Source
Please see the v5.6.2 section of the changelog for a list of the changes since v5.6.1.
v5.6.1Compare Source
Please see the v5.6.1 section of the changelog for a list of the changes since v5.6.
v5.6Compare Source
Please see the v5.6 section of the changelog for a list of the changes since v5.5.
v5.5Compare Source
Please see the v5.5 section of the changelog for a list of the changes since v5.4.1.
v5.4.1Compare Source
Please see the v5.4.1 section of the changelog for a list of the changes since v5.4.
v5.4Compare Source
Please see the v5.4 section of the changelog for a list of the changes since v5.3.
v5.3Compare Source
Please see the v5.3 section of the changelog for a list of the changes since v5.2.
v5.2Compare Source
Please see the v5.2 section of the changelog for a list of the changes since v5.1.
v5.1Compare Source
Please see the v5.1 section of the changelog for a list of the changes.
v5.0.1Compare Source
v5.0Compare Source
Please see the v5.0 section of the changelog for a list of the changes since v4.10.
v4.10Compare Source
Please see the v4.10 section of the changelog for a list of the changes since v4.9.
v4.9Compare Source
Please see the v4.9 section of the changelog for a list of the changes since v4.8.
v4.8Compare Source
Please see the v4.8 section of the changelog for a list of the changes since v4.7.
v4.7Compare Source
Please see the v4.7 section of the changelog for a list of the changes since v4.6.
v4.6Compare Source
Please see the v4.6 section of the changelog for a list of the changes since v4.5.1.
v4.5.1: Release 4.5.1Compare Source
Please see the v4.5.1 section of the changelog for a list of the bufixes since v4.5.
v4.5Compare Source
Please see the v4.5 section of the changelog for the new features and bufixes since v4.4.
v4.4Compare Source
See the the v4.4 section of the changelog for the new features and bugfixes since v4.3.
v4.3Compare Source
Please see the changelog if you wish to see a full list of changes.
v4.2Compare Source
You can find a detailed list of changes in this release in the change log section of the manual.
v4.1Compare Source
You can find a detailed list of changes in this release in the change log section of the manual.
v4.0Compare Source
Release 4.0 adds support for 3rd-party packages to provide PyInstaller hooks along with the package. This allows Maintainers of other Python packages to deliver up-to-date PyInstaller hooks as part of their package. See our sample project for more information.
PyInstaller uses this option itself to provide updated hooks much faster: Many hooks are moved into the new package pyinstaller-hooks-contrib which is updated monthly. This package is installed automatically when installing PyInstaller, but can also be updated independently.
Finally, this version drops support for Python 2.7, which is end-of-life since January 2020.. The minimum required version is now Python 3.5. The last version supporting Python 2.7 was PyInstaller 3.6.
You can find a detailed list of changes in this release in the change log section of the manual.
v3.6Compare Source
See https://pyinstaller.readthedocs.io/en/v3.6/CHANGES.html for Changelog.
v3.5Compare Source
See https://pyinstaller.readthedocs.io/en/v3.5/CHANGES.html for Changelog.
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.