Local Privilege Escalation in Windows
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:
- The user runs an application containing either
matplotliborwin32com. - The application is ran as administrator (or at least a user with higher privileges than the attacker).
- The user's temporary directory is not locked to that specific user (most likely due to
TMP/TEMPenvironment variables pointing to an unprotected, arbitrary, non default location). - Either:
- The attacker is able to very carefully time the replacement of a temporary file with a symlink. This switch must occur exactly between
shutil.rmtree()'s builtin symlink check and the deletion itself - The application was built with Python 3.7.x or earlier which has no protection against Directory Junctions links
- The attacker is able to very carefully time the replacement of a temporary file with a symlink. This switch must occur exactly between
Patches
The vulnerability has been addressed in https://github.com/pyinstaller/pyinstaller/pull/7827 which corresponds to pyinstaller >= 5.13.1
Workarounds
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.
Affected software
Click a technology to see all vulnerabilities affecting it.
| Platform | Package | Vulnerable versions | Fixed in |
|---|---|---|---|
| Python (PyPI) | pyinstaller | < 5.13.1 | 5.13.1 |
References
- https://github.com/pyinstaller/pyinstaller/security/advisories/GHSA-9w2p-rh8c-v9g5
- https://github.com/pyinstaller/pyinstaller/pull/7827
- https://github.com/python/cpython/blob/0fb18b02c8ad56299d6a2910be0bab8ad601ef24/Lib/shutil.py#L623
- https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/ISRWT34FAF23PUOLVZ7RVWBZMWPDR5U7/
- https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/2K2XIQLEMZIKUQUOWNDYWTEWYQTKMAN7/
- https://nvd.nist.gov/vuln/detail/CVE-2023-49797
- https://github.com/pyinstaller/pyinstaller
- https://github.com/pypa/advisory-database/tree/main/vulns/pyinstaller/PYSEC-2023-292.yaml
- https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/2K2XIQLEMZIKUQUOWNDYWTEWYQTKMAN7
- https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/ISRWT34FAF23PUOLVZ7RVWBZMWPDR5U7
- CVSS vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H- Weakness (CWE)
CWE-379, CWE-732- Platform
- Python (PyPI)
- Package
pyinstaller- Disclosed
- 09.12.2023
- Updated
- 11.10.2026 11:20
Sources and licenses
OSV / GitHub Advisory Database - PYSEC-2023-292 - PyPA Advisory Database; CC BY 4.0
OSV / GitHub Advisory Database - GHSA-9w2p-rh8c-v9g5 - CC BY 4.0
Vulnerability history: pyinstaller
All published vulnerabilities of this package (Python (PyPI)), newest first. Shows whether this is a one-off slip or a package that needs watching.
- Total entries
- 3
- First → latest
- 01.2020 09.2025
- Without a fix
- 0
- Exploited in attacks
- 0
Severity breakdown
- High 3
Disclosures per year
- 2020: 1
- 2021: 0
- 2022: 0
- 2023: 1
- 2024: 0
- 2025: 1
- 2026: 0
-
Local Privilege Escalation in Windows this entry
Know which vulnerabilities affect your application
With the DockRay integration and software inventory enabled, DockRay checks reported component versions against known vulnerabilities and notifies you about confirmed matches. Coverage depends on the supported technology and available advisory data.