CVE-2025-8869: Fallback tar extraction in pip doesn't check symbolic links point to extraction directory
Summary
In the fallback extraction path for source distributions, pip used Python’s tarfile module without verifying that symbolic/hard link targets resolve inside the intended extraction directory. A malicious sdist can include links that escape the target directory and overwrite arbitrary files on the invoking host during pip install.
Impact
Successful exploitation enables arbitrary file overwrite outside the build/extraction directory on the machine running pip. This can be leveraged to tamper with configuration or startup files and may lead to further code execution depending on the environment, but the direct, guaranteed impact is integrity compromise on the vulnerable system.
Conditions
The issue is triggered when installing an attacker-controlled sdist (e.g., from an index or URL) and the fallback extraction code path is used. No special privileges are required beyond running pip install; active user action is necessary.
Remediation
The fix, while available as a patch that can be manually applied, has not yet been put into a numbered version but is planned for 25.3. Using a Python interpreter that implements the safe-extraction behavior described by PEP 706 provides additional defense in depth for other tarfile issues but is not a substitute for upgrading pip for this specific flaw.
Other sources
Fallback tar extraction in pip doesn't check symbolic links point to extraction directory
— Microsoft
When extracting a tar archive pip may not check symbolic links point into the extraction directory if the tarfile module doesn't implement PEP 706. Note that upgrading pip to a "fixed" version for this vulnerability doesn't fix all known vulnerabilities that are remediated by using a Python version that implements PEP 706.
Note that this is a vulnerability in pip's fallback implementation of tar extraction for Python versions that don't implement PEP 706 and therefore are not secure to all vulnerabilities in the Python 'tarfile' module. If you're using a Python version that implements PEP 706 then pip doesn't use the "vulnerable" fallback code.
Mitigations include upgrading to a version of pip that includes the fix, upgrading to a Python version that implements PEP 706 (Python =3.9.17, =3.10.12, =3.11.4, or =3.12), applying the linked patch, or inspecting source distributions (sdists) before installation as is already a best-practice.
— IBM
When extracting a tar archive pip may not check symbolic links point into the extraction directory if the tarfile module doesn't implement PEP 706. Note that upgrading pip to a "fixed" version for this vulnerability doesn't fix all known vulnerabilities that are remediated by using a Python version that implements PEP 706.
Note that this is a vulnerability in pip's fallback implementation of tar extraction for Python versions that don't implement PEP 706 and therefore are not secure to all vulnerabilities in the Python 'tarfile' module. If you're using a Python version that implements PEP 706 then pip doesn't use the "vulnerable" fallback code.
Mitigations include upgrading to a version of pip that includes the fix, upgrading to a Python version that implements PEP 706 (Python >=3.9.17, >=3.10.12, >=3.11.4, or >=3.12), applying the linked patch, or inspecting source distributions (sdists) before installation as is already a best-practice.
— NVD
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
pip/pipto a version that resolves this vulnerability.Patch pull/13550 - Upgrade
Upgrade
Pythonto a version that resolves this vulnerability.Fixed in 3.9.17 - Upgrade
Upgrade
Pythonto a version that resolves this vulnerability.Fixed in 3.10.12 - Upgrade
Upgrade
Pythonto a version that resolves this vulnerability.Fixed in 3.11.4 - Upgrade
Upgrade
Pythonto a version that resolves this vulnerability.Fixed in 3.12 - Compensating control
Manually inspect source distributions (sdists) before running pip install to ensure they do not contain symbolic or hard links that escape the intended extraction directory; if you cannot upgrade or apply the pip patch, avoid installing untrusted sdists or install only from vetted indexes.
Event History
Frequently Asked Questions
What is the severity of CVE-2025-8869?
CVE-2025-8869 is rated as a moderate severity vulnerability due to potential risks associated with symbolic link exploitation during tar archive extraction.
How do I fix CVE-2025-8869?
To fix CVE-2025-8869, upgrade pip to the latest version where the vulnerability has been addressed.
What software versions are affected by CVE-2025-8869?
CVE-2025-8869 affects pip and versions of Python up to 3.9.17, 3.10.12, 3.11.4, and 3.12.
What type of vulnerability is CVE-2025-8869?
CVE-2025-8869 is a symbolic link vulnerability that may allow unauthorized access to files in the extraction directory.
Is there a workaround for CVE-2025-8869?
A temporary workaround for CVE-2025-8869 includes manually verifying symbolic links in tar archives before extraction.