Skip to main content

uv CVE-2026-104843

| EUVDEUVD-2026-91675 MEDIUM
Path Traversal (CWE-22)
2026-10-02 GitHub_M GHSA-2cv4-cqwr-gwf7
5.9
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Publish malicious wheel to index
  2. Delivery
    Windows victim installs via vulnerable uv
  3. Exploit
    Crafted path rebuilds into Windows prefix
  4. Execution
    File written outside install prefix
  5. Persist
    Executable planted in PATH directory
  6. Impact
    Attacker code runs on next command

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK

2 techniques across 2 tactics: Discovery, Collection

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires a Windows host running a vulnerable uv (0.12.7 through 0.12.17) and the victim actively installing an attacker-crafted wheel (UI:A). The wheel must contain an archive member whose path, after rebuilding, resolves to a Windows path prefix or root (e.g. 'C:module.py', '\\server\share\module.py', or 'package/../C:module.py'), allowing the write to escape the installation prefix; for code-execution impact the written file must land in a directory already on the user's PATH. Limiting factors: non-Windows hosts are not affected, no exploitation occurs without the user installing the untrusted wheel, and the issue is fully remediated in 0.12.18.

Impact

This is a medium-severity, conditional-impact issue rather than an emergency. The vendor CVSS 4.0 vector (5.9) shows network-reachable delivery (AV:N) with low complexity (AC:L) and no privileges (PR:N), but it is gated by an attack requirement (AT:P) and active user interaction (UI:A) and yields only integrity impact (VI:H; VC:N/VA:N). In practice this means an attacker cannot exploit a running system remotely - a Windows user must be convinced to install a maliciously crafted wheel with a vulnerable uv version (0.12.7-0.12.17). No EPSS score was provided, there is no CISA KEV listing, and no public exploit was identified at time of analysis; the only public artifacts are the fix PR/commit and the security advisory, which include regression tests but not a weaponized exploit. The realistic threat model is supply-chain / typosquatting: planting an executable in a PATH directory for later code execution. Signals are consistent (no conflict between CVSS and description), so this warrants prompt patching of Windows developer/CI environments but does not indicate widespread active exploitation.

Exploit ScenarioDerived

An attacker publishes a malicious wheel (e.g. via typosquatting or a compromised index) whose archive member path rebuilds into a Windows prefix such as 'C:module.py'. A Windows user installs it with a vulnerable uv, and extraction writes a file outside the installation prefix - including an executable into a directory already on PATH - so the attacker's binary runs the next time that command name is invoked. No public exploit was identified at time of analysis, though the fix PR demonstrates the vulnerable path-handling cases.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 02, 2026

Arbitrary file writes outside uv's installation prefix on Windows can occur when a user installs a crafted wheel in uv 0.12.7 through 0.12.17, potentially planting an executable in a directory already on the user's PATH. Exploitation is conditional-it requires a Windows host, a vulnerable uv version, and the victim actively installing the malicious wheel-so this is a medium-severity issue rather than an emergency; non-Windows systems are unaffected. Vendor-released patch: 0.12.18. No public exploit identified at time of analysis.

RemediationAI

Upgrade to uv 0.12.18 or later; the vendor-released patch is version 0.12.18, documented in GHSA-2cv4-cqwr-gwf7 and implemented via https://github.com/astral-sh/uv/pull/21923 and commit 67169645278ce082638d619beefa6d062540843b, with the release at https://github.com/astral-sh/uv/releases/tag/0.12.18. If immediate upgrade is not possible, stop installing untrusted or third-party wheels with affected uv on Windows and restrict installs to a curated internal index with verified hashes; this prevents exposure to malicious archive members but may block legitimate third-party packages. As a further compensating control, perform wheel extraction or installation on a non-Windows host or in a sandbox where the installation prefix and PATH directories are isolated, recognizing that this changes workflow and does not fix the underlying Windows-specific path handling flaw.

Affected VersionsENISA

uv 0.12.7, < 0.12.18

Affected Packages

cargo uv fix: 0.12.18
pypi uv fix: 0.12.18
euvd uv fix: 0.12.18

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in cargo, pypi, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

uv is Astral's Rust-based Python package and project manager. The flaw is in its wheel extraction path handling, specifically the SanitizedArchivePath logic in crates/uv-extract/src/archive_path.rs. CWE-22 path traversal allows a crafted archive member such as C:module.py, C:/module.py, \module.py, \\server\share\module.py, \\?\C:\module.py, or package/../C:module.py to be rebuilt into a Windows path with a drive prefix, UNC prefix, or root directory, causing extraction to write outside the installation prefix. The fix added a check that rejects any archive member whose first path component is a Windows Prefix or RootDir. Only Windows hosts are affected because the issue depends on Windows path semantics; non-Windows platforms do not interpret these paths as absolute or rooted. The CPE cpe:2.3:a:astral-sh:uv:*:*:*:*:*:*:*:* captures the affected uv product. The published CVSS:4.0 vector is AV:N/AC:L/AT:P/PR:N/UI:A/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N, and the independent CVSS:3.1 assessment is AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N, both reflecting a conditional integrity impact requiring user installation of the malicious wheel.

Know when Uv gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 5.9 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
vuln.today AI 6.5 MEDIUM

Malicious wheel is network-delivered but requires the user to install it (UI:R); no auth needed (PR:N); arbitrary file write outside the prefix gives integrity impact only (I:H, C:N/A:N).

3.1 AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:A/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
Red Hat 7.8 HIGH

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
Active
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 02, 2026 - 16:02 EUVD
CVE Published
Oct 02, 2026 - 15:29 cve.org
MEDIUM 5.9

DescriptionCVE.org

uv is a Python package and project manager written in Rust. From 0.12.7 until 0.12.18, uv wheel extraction on Windows can process a malicious wheel in a way that writes a file outside the installation prefix, including an executable in a directory already present on the user's PATH. Non-Windows hosts are not affected. This issue is fixed in version 0.12.18.

Threat Intelligence Overview

EPSS Score
0.4%
Top 65% exploitable
Prevalence
Medium
popular and fast-growing Python package manager, but developer-tool footprint
Threat Intel
1
1 source
Data Quality
5 sources
Confidence: Medium
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +30
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.

Vendor StatusVendor

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