CVE-2026-87910
MediumCVSS 5.7Exploitation Probability (EPSS)
Low risk37th percentile - higher than 37% of all known CVEs
Summary
When tarfile extracts a link on a system that doesn't support links, it falls back to extracting a member from the archive. In this case, the filter function is run twice, and for one of the calls the return value was ignored, which may lead to improper extraction of a member.
Risk Assessment
Unwanted or unsafe archive members may be extracted, potentially leading to file overwrites or other security impacts.
Recommendation
Upgrade Python to a version containing the fix where the member is skipped if either filter function call returns None.
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.
- CVE-2025-4330High
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'.
Original NVD description (English source)
When tarfile extracts a link on a system that doesn't support links, it falls back to extracting a member from the archive. In this case, the filter function is run twice: once for the extracted member, and once with name set to the location of the link. For one of the calls, the return value was ignored. Instead, the member should be skipped if either call returns None.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

