CVE-2023-49797 Local Privilege Escalation in pyinstaller on Windows
An unprivileged attacker can delete protected files via a race condition in PyInstaller-built apps running as admin with insecure temp directories.
- Exploited in the wild
- Not known
- Login needed
- Any signed-in user
- Attackable
- Local or same network only
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2023-49797?
CVE-2023-49797 is a high-severity vulnerability in pyinstaller, published on 9 Dec 2023. It can only be exploited from the same machine or local network, with no action from the victim.
Official description
PyInstaller bundles a Python application and all its dependencies into a single package. 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: 1. The user runs an application containing either `matplotlib` or `win32com`. 2. The application is ran as administrator (or at least a user with higher privileges than the attacker). 3. The user's temporary directory is not locked to that specific user (most likely due to `TMP`/`TEMP` environment variables pointing to an unprotected, arbitrary, non default location). Either: A. 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 B: The application was built with Python 3.7.x or earlier which has no protection against Directory Junctions links. The vulnerability has been addressed in PR #7827 which corresponds to `pyinstaller >= 5.13.1`. Users are advised to upgrade. There are no known workarounds for this vulnerability.
Which versions are affected by CVE-2023-49797?
3 open source packages ship an affected version, including pyinstaller. It affects 1 product.
| Package | Affected | Fixed in |
|---|---|---|
pyinstaller PyPI | All versions | 5.13.1 |
pyinstaller PyPI | All versions | 5.13.1 |
pyinstaller PyPI | All versions | 5.13.1 |
Products include Pyinstaller Pyinstaller.
How do I fix CVE-2023-49797?
Upgrade pyinstaller to 5.13.1 or later.
Is CVE-2023-49797 being exploited?
There is no known exploitation of CVE-2023-49797 in the wild and no public exploit code.
Other vulnerabilities in pyinstaller
Sources
Also known as GHSA-9w2p-rh8c-v9g5, OESA-2024-1742, PYSEC-2023-292.