CVE-2025-4330
HighCVSS 7.5Exploitation Probability (EPSS)
Elevated risk53th percentile - higher than 53% of all known CVEs
Summary
Vulnerability in Python's tarfile module allows the extraction filter to be ignored, enabling symlink targets to point outside the destination directory and modification of file metadata. Affects TarFile.extractall() or TarFile.extract() with filter='data' or 'tar'.
Risk Assessment
An attacker can place files outside the intended destination directory, potentially overwriting critical system files or escalating privileges.
Recommendation
Update Python to version 3.14 or later where the default filter is 'data'. Avoid extracting untrusted tar archives without proper filtering.
Other vulnerabilities in Python tarfile
See all- CVE-2026-19672Medium
The tarfile module in Python has a vulnerability in its extraction filters that allows creating directories outside the destination for members whose name leaves the destination and returns to it (e.g., ../evil/../dest/sub/file). The issue affects only POSIX platforms and creates only empty directories outside the destination.
- CVE-2026-11940High
The tarfile.extractall() function with the 'data' or 'tar' filter can be bypassed by a crafted archive where a hardlink references a symlink stored deeper than the hardlink itself. This allows creating a symlink pointing outside the destination directory, enabling out-of-destination file reads or writes. This is an incomplete fix of CVE-2025-4330.
- CVE-2025-8194High
A defect in CPython's tarfile module affects TarFile extraction and entry enumeration APIs. Tar archives with negative offsets cause an infinite loop and deadlock during parsing of malicious archives.
Original NVD description (English source)
Allows the extraction filter to be ignored, allowing symlink targets to point outside the destination directory, and the modification of some file metadata. You are affected by this vulnerability if using the tarfile module to extract untrusted tar archives using TarFile.extractall() or TarFile.extract() using the filter= parameter with a value of "data" or "tar". See the tarfile extraction filters documentation https://docs.python.org/3/library/tarfile.html#tarfile-extraction-filter for more information. Note that for Python 3.14 or later the default value of filter= changed from "no filtering" to `"data", so if you are relying on this new default behavior then your usage is also affected. Note that none of these vulnerabilities significantly affect the installation of source distributions which are tar archives as source distributions already allow arbitrary code execution during the build process. However when evaluating source distributions it's important to avoid installing source distributions with suspicious links.

