Cloudanix VulnDB

CVE-2025-8869

None

CVSS

—

EPSS

0.5%

Published

Sep 24, 2025

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A packaging tool could let attackers secretly place harmful files anywhere on a computer when installing certain software packages from the internet.

Exploitation
Requires User Interaction
Attacker needs
User Interaction
Complexity
Moderate
Impact
Data Tampering
Component
Application
Class
Path Traversal
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

The flaw permits path traversal during tar extraction because pip's fallback implementation does not enforce that symbolic links resolve inside the target directory when the Python tarfile module lacks PEP 706 support.

Why it matters to the business

Attackers can overwrite arbitrary files on systems during package installation from untrusted sources, risking system integrity compromise and requiring urgent remediation on affected Debian deployments of crmsh.

How an attack unfolds

An attacker creates a malicious source distribution tar archive containing symbolic links pointing outside the intended extraction directory. When a victim uses pip on a Python version without PEP 706, the fallback code extracts the archive and writes files to arbitrary locations on the filesystem.

How to fix it

Upgrade crmsh to 4.2.1-2 on Debian 11-14; alternatively upgrade pip or migrate to Python versions implementing PEP 706 (>=3.9.17, >=3.10.12, >=3.11.4, >=3.12) so the vulnerable fallback is never used.

How to confirm the fix worked

Confirm Python meets the listed PEP 706 minimum versions or that pip has been updated past the vulnerable fallback; test extraction of a crafted tar containing an escaping symlink to verify containment.

Typical attack path

  1. Craft a tar archive with malicious symbolic links that escape the extraction root
  2. Publish the archive as a source distribution
  3. Trick a user or automated process into installing the package with pip on vulnerable Python
  4. Trigger extraction that follows the links and overwrites files outside the intended directory

How to detect it

Review pip installation logs and extraction activity for paths that resolve outside expected package directories; correlate with file creation timestamps in system locations that should not be modified during package installs.

What your security team should do

  • Apply the crmsh 4.2.1-2 updates on all listed Debian releases immediately
  • Enforce deployment of Python versions that implement PEP 706 across build and runtime environments
  • Treat source distributions as untrusted and inspect them before installation as a standing practice

The record

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.

Affected packages

Ecosystem Package Introduced Fixed
PyPI pip 0 No fix
PyPI pip 0 25.3
Bitnami pip 0 25.3.0
Chainguard airflow-2 0 2.11.0-r14
Chainguard airflow-2-bitnami-compat 0 2.11.0-r14
Chainguard airflow-2-compat 0 2.11.0-r14
Chainguard airflow-2-iamguarded-compat 0 2.11.0-r14
Chainguard airflow-3 0 3.1.2-r0
Chainguard airflow-3-compat 0 3.1.2-r0
Chainguard airflow-3-iamguarded-compat 0 3.1.2-r0
Chainguard ansible-operator 0 1.41.0-r1
Chainguard ansible-operator-compat 0 1.41.0-r1
Chainguard awx 0 24.6.1-r19
Chainguard dask-gateway 0 2025.4.0-r5
Chainguard dask-gateway-server 0 2025.4.0-r5
Chainguard datadog-agent 0 7.71.2-r3
Chainguard datadog-agent-core-integrations 0 7.72.2-r0
Chainguard datadog-agent-core-integrations-fips 0 7.72.0-r0
Chainguard datadog-agent-fakeintake 0 7.72.1-r0
Chainguard datadog-agent-fakeintake-fips 0 7.72.0-r0
Chainguard datadog-agent-fips 0 7.72.0-r0
Chainguard datadog-agent-jmx 0 7.72.1-r0
Chainguard datadog-agent-jmx-fips 0 7.72.0-r0
Chainguard datadog-agent-oci-compat 0 7.71.2-r3
Chainguard datadog-agent-oci-compat-fips 0 7.72.0-r0
Chainguard datadog-agent-s6-overlay 0 7.71.2-r3
Chainguard datadog-agent-s6-overlay-fips 0 7.72.0-r0
Chainguard datadog-cluster-agent 0 7.71.2-r3
Chainguard datadog-cluster-agent-fips 0 7.72.1-r0
Chainguard datadog-cluster-agent-oci-compat 0 7.71.2-r3
Chainguard datadog-cluster-agent-oci-compat-fips 0 7.72.0-r0
Chainguard dogstatsd 0 7.72.1-r0
Chainguard graalvm-23 0 23.0.2-r7
Chainguard graalvm-23-ce 0 23.0.2-r7
Chainguard graalvm-23-ce-dbg 0 23.0.2-r7
Chainguard graalvm-23-ce-default-jdk 0 23.0.2-r7
Chainguard graalvm-23-ce-jmods 0 23.0.2-r7
Chainguard graalvm-23-ce-nodejs 0 23.0.2-r7
Chainguard graalvm-23-ce-nodejs-dbg 0 23.0.2-r7
Chainguard graalvm-23-ce-nodejs-default-jdk 0 23.0.2-r7
Chainguard graalvm-23-ce-nodejs-jmods 0 23.0.2-r7
Chainguard graalvm-23-truffleruby 0 23.0.2-r7
Chainguard graalvm-24 0 24.0.2-r6
Chainguard graalvm-24-ce 0 24.0.2-r6
Chainguard graalvm-24-ce-dbg 0 24.0.2-r6
Chainguard graalvm-24-ce-default-jdk 0 24.0.2-r6
Chainguard graalvm-24-ce-jmods 0 24.0.2-r6
Chainguard graalvm-24-ce-nodejs 0 24.0.2-r6
Chainguard graalvm-24-ce-nodejs-dbg 0 24.0.2-r6
Chainguard graalvm-24-ce-nodejs-default-jdk 0 24.0.2-r6
Chainguard graalvm-24-ce-nodejs-jmods 0 24.0.2-r6
Chainguard graalvm-24-truffleruby 0 24.0.2-r6
Chainguard graalvm-25 0 25.0.1-r0
Chainguard graalvm-25-ce 0 25.0.1-r0
Chainguard graalvm-25-ce-dbg 0 25.0.1-r0
Chainguard graalvm-25-ce-default-jdk 0 25.0.1-r0
Chainguard graalvm-25-ce-jmods 0 25.0.1-r0
Chainguard graalvm-25-ce-nodejs 0 25.0.1-r0
Chainguard graalvm-25-ce-nodejs-dbg 0 25.0.1-r0
Chainguard graalvm-25-ce-nodejs-default-jdk 0 25.0.1-r0
Chainguard graalvm-25-ce-nodejs-jmods 0 25.0.1-r0
Chainguard graalvm-25-truffleruby 0 25.0.1-r0
Chainguard katib-controller 0 0.19.0-r0
Chainguard katib-controller-compat 0 0.19.0-r0
Chainguard katib-db-manager 0 0.19.0-r0
Chainguard katib-db-manager-compat 0 0.19.0-r0
Chainguard katib-earlystopping 0 0.19.0-r0
Chainguard katib-file-metricscollector 0 0.19.0-r0
Chainguard katib-file-metricscollector-compat 0 0.19.0-r0
Chainguard katib-suggestion-goptuna 0 0.19.0-r0
Chainguard katib-suggestion-goptuna-compat 0 0.19.0-r0
Chainguard katib-suggestion-hyperband 0 0.19.0-r0
Chainguard katib-suggestion-hyperopt 0 0.19.0-r0
Chainguard katib-suggestion-nas-darts 0 0.19.0-r0
Chainguard katib-suggestion-nas-enas 0 0.19.0-r0
Chainguard katib-suggestion-optuna-enas 0 0.19.0-r0
Chainguard katib-suggestion-pbt-enas 0 0.19.0-r0
Chainguard katib-suggestion-skopt-enas 0 0.19.0-r0
Chainguard katib-tfevent-metricscollector 0 0.19.0-r0
Chainguard kubeflow-katib 0 0.19.0-r0
Chainguard localstack 0 4.10.0-r0
Chainguard localstack-compat 0 4.10.0-r0
Chainguard mlflow 0 3.6.0-r0
Chainguard mlflow-bitnami 0 3.6.0-r0
Chainguard mlflow-iamguarded-compat 0 3.6.0-r0
Chainguard nemo 0 2.5.2-r2
Chainguard nvidia-apex-12.3-wheel 0 24.04.01-r1
Chainguard pgadmin4 0 9.9-r1
Chainguard pgadmin4-oci-entrypoint 0 9.9-r1
Chainguard py3-cassandra-medusa-compat 0 0.26.0-r0
Chainguard py3-hashin 0 1.0.5-r4
Chainguard py3-pip 0 0
Chainguard py3-pip 0 25.2-r2
Chainguard py3-pip-wheel 0 0
Chainguard py3-pip-wheel 0 25.2-r2
Chainguard py3-pip-wheel-bootstrap 0 25.3-r0
Chainguard py3-supported-pip 0 0
Chainguard py3-supported-pip 0 25.2-r2
Chainguard py3-supported-virtualenv 0 20.35.4-r0
Chainguard py3-virtualenv 0 20.35.4-r0
Chainguard py3.10-pip 0 0
Chainguard py3.10-pip 0 25.2-r2
Chainguard py3.10-pip-base 0 0
Chainguard py3.10-pip-base 0 25.2-r2
Chainguard py3.10-pytorch-cuda-11.8 0 2.3.1-r12
Chainguard py3.10-virtualenv 0 20.36.1-r0
Chainguard py3.10-virtualenv-bin 0 20.35.4-r0
Chainguard py3.10-wheels-torch-cuda-11.8 0 2.3.1-r12
Chainguard py3.10-wheels-torch-cuda-12.3 0 2.3.1-r12
Chainguard py3.10-wheels-torchvision-cuda-12.3 0 0.18.1-r12
Chainguard py3.11-pip 0 0
Chainguard py3.11-pip 0 25.2-r2
Chainguard py3.11-pip-base 0 0
Chainguard py3.11-pip-base 0 25.2-r2
Chainguard py3.11-virtualenv 0 20.36.1-r0
Chainguard py3.11-virtualenv-bin 0 20.35.4-r0
Chainguard py3.11-wheels-torch-cuda-11.8 0 2.3.1-r11
Chainguard py3.11-wheels-torch-cuda-12.3 0 2.3.1-r15
Chainguard py3.11-wheels-torchaudio-cuda-12.3 0 2.3.1-r4
Chainguard py3.11-wheels-torchvision-cuda-12.3 0 0.18.1-r14
Chainguard py3.12-pip 0 0
Chainguard py3.12-pip 0 25.2-r2
Chainguard py3.12-pip-base 0 0
Chainguard py3.12-pip-base 0 25.2-r2
Chainguard py3.12-pytorch-cuda-11.8 0 2.3.1-r10
Chainguard py3.12-virtualenv 0 20.36.1-r0
Chainguard py3.12-virtualenv-bin 0 20.35.4-r0
Chainguard py3.12-wheels-torch-cuda-11.8 0 2.3.1-r10
Chainguard py3.12-wheels-torch-cuda-12.3 0 2.3.1-r8
Chainguard py3.12-wheels-torchvision-cuda-12.3 0 0.18.1-r6
Chainguard py3.13-pip 0 0
Chainguard py3.13-pip 0 25.2-r2
Chainguard py3.13-pip-base 0 0
Chainguard py3.13-pip-base 0 25.2-r2
Chainguard py3.13-virtualenv 0 20.36.1-r0
Chainguard py3.13-virtualenv-bin 0 20.35.4-r0
Chainguard py3.14-pip 0 0
Chainguard py3.14-pip 0 25.2-r2
Chainguard py3.14-pip-base 0 0
Chainguard py3.14-pip-base 0 25.2-r2
Chainguard py3.9-pip 0 0
Chainguard py3.9-pip 0 25.2-r1
Chainguard py3.9-wheels-torch-cuda-11.8 0 2.3.1-r4
Chainguard py3.9-wheels-torch-cuda-12.3 0 2.3.1-r7
Chainguard py3.9-wheels-torchvision-cuda-11.8 0 0.18.1-r7
Chainguard py3.9-wheels-torchvision-cuda-12.3 0 0.18.1-r5
Chainguard pypy-3.10 0 7.3.19-r14
Chainguard pypy-3.10-compat 0 7.3.19-r13
Chainguard pypy-3.11 0 7.3.20-r5
Chainguard pypy-3.11-compat 0 7.3.20-r4
Chainguard reflex 0 0.8.14-r0
Chainguard request-1276-compat 0 0.26.0-r0
Chainguard tensorflow-cpu-jupyter 0 2.20.0-r4
Chainguard tensorflow-gpu-jupyter 0 2.20.0-r3
Wolfi airflow-3 0 3.1.2-r0
Wolfi airflow-3-compat 0 3.1.2-r0
Wolfi airflow-3-iamguarded-compat 0 3.1.2-r0
Wolfi ansible-operator 0 1.41.0-r1
Wolfi ansible-operator-compat 0 1.41.0-r1
Wolfi dask-gateway 0 2025.4.0-r5
Wolfi dask-gateway-server 0 2025.4.0-r5
Wolfi datadog-agent 0 7.71.2-r3
Wolfi datadog-agent-core-integrations 0 7.72.2-r0
Wolfi datadog-agent-fakeintake 0 7.72.1-r0
Wolfi datadog-agent-jmx 0 7.72.1-r0
Wolfi datadog-agent-oci-compat 0 7.71.2-r3
Wolfi datadog-agent-s6-overlay 0 7.71.2-r3
Wolfi datadog-cluster-agent 0 7.71.2-r3
Wolfi datadog-cluster-agent-oci-compat 0 7.71.2-r3
Wolfi dogstatsd 0 7.72.1-r0
Wolfi katib-controller 0 0.19.0-r0
Wolfi katib-controller-compat 0 0.19.0-r0
Wolfi katib-db-manager 0 0.19.0-r0
Wolfi katib-db-manager-compat 0 0.19.0-r0
Wolfi katib-earlystopping 0 0.19.0-r0
Wolfi katib-file-metricscollector 0 0.19.0-r0
Wolfi katib-file-metricscollector-compat 0 0.19.0-r0
Wolfi katib-suggestion-goptuna 0 0.19.0-r0
Wolfi katib-suggestion-goptuna-compat 0 0.19.0-r0
Wolfi katib-suggestion-hyperband 0 0.19.0-r0
Wolfi katib-suggestion-hyperopt 0 0.19.0-r0
Wolfi katib-suggestion-nas-darts 0 0.19.0-r0
Wolfi katib-suggestion-nas-enas 0 0.19.0-r0
Wolfi katib-suggestion-optuna-enas 0 0.19.0-r0
Wolfi katib-suggestion-pbt-enas 0 0.19.0-r0
Wolfi katib-suggestion-skopt-enas 0 0.19.0-r0
Wolfi katib-tfevent-metricscollector 0 0.19.0-r0
Wolfi kubeflow-katib 0 0.19.0-r0
Wolfi mlflow 0 3.6.0-r0
Wolfi mlflow-bitnami 0 3.6.0-r0
Wolfi mlflow-iamguarded-compat 0 3.6.0-r0
Wolfi py3-cassandra-medusa-compat 0 0.26.0-r0
Wolfi py3-pip 0 0
Wolfi py3-pip 0 25.2-r2
Wolfi py3-pip-wheel 0 0
Wolfi py3-pip-wheel 0 25.2-r2
Wolfi py3-pip-wheel-bootstrap 0 25.3-r0
Wolfi py3-supported-pip 0 0
Wolfi py3-supported-pip 0 25.2-r2
Wolfi py3-supported-virtualenv 0 20.35.4-r0

Related vulnerabilities