CVE-2023-49797 Local Privilege Escalation in pyinstaller on Windows

High 8.8 Published Updated

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.

Weakness: CWE-732, CWE-379

Which versions are affected by CVE-2023-49797?

3 open source packages ship an affected version, including pyinstaller. It affects 1 product.

PackageAffectedFixed in
pyinstaller PyPIAll versions5.13.1
pyinstaller PyPIAll versions5.13.1
pyinstaller PyPIAll versions5.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.

Sources

Also known as GHSA-9w2p-rh8c-v9g5, OESA-2024-1742, PYSEC-2023-292.

Is CVE-2023-49797 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free