Skip to main content

pip CVE-2026-13346

| EUVDEUVD-2026-50467 MEDIUM
Absolute Path Traversal (CWE-36)
2026-07-29 PSF GHSA-qwm4-qh6w-59xr
5.6
CVSS 4.0 · Vendor: PSF
Share

Severity by source

Vendor (PSF) PRIMARY
5.6 MEDIUM
CVSS:4.0/AV:N/AC:H/AT:P/PR:H/UI:A/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
vuln.today AI
5.3 MEDIUM

Attacker controls a remote index server (AV:N, PR:N); victim must actively run pip download against it (UI:R, AC:H); only filesystem integrity is impacted (I:H, C:N, A:N).

3.1 AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:N
4.0 AV:N/AC:H/AT:P/PR:N/UI:A/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
SUSE
4.2 MEDIUM
AV:N/AC:H/PR:H/UI:R/S:U/C:N/I:H/A:N
Red Hat
5.9 MEDIUM
qualitative

Primary rating from Vendor (PSF).

CVSS VectorVendor: PSF

Attack Vector
Network
Attack Complexity
High
Privileges Required
High
User Interaction
A
Scope
X

Lifecycle Timeline

3
Source Code Evidence Fetched
Jul 29, 2026 - 19:26 vuln.today
Analysis Generated
Jul 29, 2026 - 19:26 vuln.today
CVE Published
Jul 29, 2026 - 18:33 cve.org
MEDIUM 5.6

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 5 pypi packages depend on pip (1 direct, 4 indirect)

Ecosystem-wide dependent count for version 26.2.0.

DescriptionCVE.org

pip would incorrectly handle doubly-encoded package URLs from indexes allowing for files to be installed to arbitrary locations on disk even when installing wheels.

This vulnerability requires downloading or installing a package from a malicious package index to succeed, malicious packages alone are not able to exploit this vulnerability. Note that this vulnerability only materially impacts users running pip download with the --only-binary option as installing source distributions from an untrusted index is already an unsafe operation that executes code during install time.

AnalysisAI

Path traversal in pip (CWE-36) allows a malicious package index to write downloaded wheel files to arbitrary filesystem locations outside the intended download directory. The root cause is pip's Link.filename property double-decoding percent-encoded URL path segments, letting an attacker embed encoded path separators that survive initial URL parsing but resolve during the second urllib.parse.unquote() call. Practical impact is most material for pip download --only-binary workflows pointed at untrusted indexes; no public exploit or active exploitation has been identified at time of analysis.

Technical ContextAI

pip's Link.filename property in src/pip/_internal/models/link.py applied urllib.parse.unquote() to a URL path segment that was already partially decoded during standard URL parsing, producing a second decoding pass. A malicious PyPI-compatible index could serve wheel URLs containing doubly-percent-encoded path separators - for example, %252F (encoding of %2F) survives the first decode as %2F but resolves to a literal / after the second unquote() call. The resulting filename, now containing embedded slashes or .. components, was passed directly to os.path.join(location, filename) in download.py, causing the file to be written outside the intended download directory. The upstream fix (PR #14110) introduces a PathComponent newtype with a _to_path_component() sanitizer using os.path.basename() for strict reduction to a single path component, and a join_within_directory() function that enforces containment at the type level, preventing the value from escaping the target directory. Affected product CPE: cpe:2.3:a:python_packaging_authority:pip:*:*:*:*:*:*:*:*. Root cause class is CWE-36 (Absolute Path Traversal).

RemediationAI

Upgrade pip to the patched version once it is tagged and published to PyPI following PR #14110 (https://github.com/pypa/pip/pull/14110); a confirmed release version number is not available in the current data, so monitor the Python Security Announce list at https://mail.python.org/archives/list/security-announce@python.org/thread/L2BNQGGVQCEV7DROOORQ7WFKKFF2OOQX/ for the official release announcement. As an immediate compensating control, avoid running pip download --only-binary against untrusted, third-party, or attacker-controlled package indexes; restrict index sources to the official PyPI endpoint or internally audited mirrors. Running pip as a minimally privileged, non-root user limits the blast radius of any successful path traversal to directories accessible to that user account. Organizations using --extra-index-url in CI pipelines should audit those configurations to ensure only trusted indexes are referenced.

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
SLES15-SP5-CHOST-BYOS-SAP-CCloud Not-Affected
SLES15-SP5-CHOST-BYOS-SAP-CCloud Affected
SLES15-SP6-CHOST-BYOS Affected
SLES15-SP6-CHOST-BYOS-Aliyun Affected
SLES15-SP6-CHOST-BYOS-Azure Affected

Share

CVE-2026-13346 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy