Repository navigation
Update dependency uv to v0.13.4 [SECURITY] - #278
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/pypi-uv-vulnerability
branch
from
October 22, 2025 02:08
c14217a to
13bc82f
Compare
renovate
Bot
force-pushed
the
renovate/pypi-uv-vulnerability
branch
from
October 30, 2025 03:31
13bc82f to
5f5ef92
Compare
renovate
Bot
force-pushed
the
renovate/pypi-uv-vulnerability
branch
2 times, most recently
from
March 30, 2026 20:54
5f5ef92 to
8b5dac5
Compare
renovate
Bot
force-pushed
the
renovate/pypi-uv-vulnerability
branch
from
April 10, 2026 21:11
8b5dac5 to
eb7fe97
Compare
renovate
Bot
force-pushed
the
renovate/pypi-uv-vulnerability
branch
from
April 27, 2026 23:31
c124a7f to
eb7fe97
Compare
renovate
Bot
force-pushed
the
renovate/pypi-uv-vulnerability
branch
from
April 27, 2026 23:31
eb7fe97 to
c124a7f
Compare
renovate
Bot
force-pushed
the
renovate/pypi-uv-vulnerability
branch
from
August 26, 2026 16:47
c124a7f to
adf20e6
Compare
renovate
Bot
force-pushed
the
renovate/pypi-uv-vulnerability
branch
from
October 21, 2026 02:49
adf20e6 to
7818152
Compare
renovate
Bot
force-pushed
the
renovate/pypi-uv-vulnerability
branch
2 times, most recently
from
October 22, 2026 21:12
7818152 to
209267f
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
==0.2.25→==0.13.4uv allows ZIP payload obfuscation through parsing differentials
CVE-2025-54368 / GHSA-8qf3-x8v5-2pj8
More information
Details
Impact
In versions 0.8.5 and earlier of uv, remote ZIP archives were handled in a streamwise fashion, and file entries were not reconciled against the archive's central directory. This enabled two parser differentials against other Python package installers:
In both cases, the outcome is that an attacker can produce a ZIP with a consistent digest that expands differently with different installers.
The ZIP standard is ambiguous with respect to these behavior differentials. Consequently, these same differentials may be accepted ZIP parsers other than those used in uv. This advisory is for uv in particular, but all consumers of ZIP-based Python package distributions, e.g., pip, are potentially susceptible to similar parser differentials in other ZIP parsers.
The practical impact of these differentials is limited by a number of factors:
uv install $packagewith an attacker-controlled$package.python -c "import $package".Patches
Versions 0.8.6 and newer of uv address both of the parser differentials above, by refusing to process ZIPs with duplicated local file entries or stacked contents.
Workarounds
Users are advised to upgrade to 0.8.6 or newer to address this advisory.
Most users should experience no breaking changes as a result of the patch above. However, users who do experience breakage should carefully review their distributions for signs of malicious intent. Users may choose to set
UV_INSECURE_NO_ZIP_VALIDATION=1to revert to the previous behavior.Attribution
This vulnerability was discovered separately by two different individuals: Caleb Brown (Google) and Tim Hatch (Netflix).
Severity
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
uv has differential in tar extraction with PAX headers
GHSA-w476-p2h3-79g9
More information
Details
Impact
In versions 0.9.4 and earlier of uv, tar archives containing PAX headers with file size overrides were not handled properly. As a result, an attacker could contrive a source distribution (as a tar archive) that would extract differently when installed via uv versus other Python package installers.
The underlying parsing differential here originates with astral-tokio-tar, which disclosed this vulnerability as CVE-2025-62518.
In practice, the impact of this vulnerability is low: only source distributions can be formatted as tar archives, and source distributions execute arbitrary code at build/installation time by definition. Consequently, a parser differential in tar extraction is strictly less powerful than the capabilities already exposed to an attacker who has the ability to control source distributions.
However, this particular source of malleability in source distributions is unintentional and not operating by design, and therefore we consider it a vulnerability despite its overlap in capabilities with intended behavior.
Patches
Versions 0.9.5 and newer of uv address the vulnerability above. Users should upgrade to 0.9.5 or newer.
Workarounds
Users are advised to upgrade to version 0.9.5 or newer to address this advisory.
Users should experience no breaking changes as a result of the patch above.
References
Severity
Low
References
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
uv allows ZIP payload obfuscation through parsing differentials
GHSA-pqhf-p39g-3x64
More information
Details
Impact
In versions 0.9.5 and earlier of uv, ZIP archives were handled in a manner that enabled two parsing differentials against other components of the Python packaging ecosystem:
zipfilemodule truncates the filename at the first null, while uv would skip (not extract) any archive members whose filenames contained nulls. Because of this difference, a ZIP archive could be constructed that would extract differently across different Python package installers.In both cases, the outcome is that an attacker may be able to produce a ZIP with a consistent digest that expands differently with different Python package installers.
Like with GHSA-8qf3-x8v5-2pj8, the impact of these differentials is limited by a number of factors:
uv pip install $packageor similar with an attacker-controlled $package.When using wheel distributions, installation of the malicious package is not sufficient for execution of malicious code, the vicim would need to perform a separate invocation, e.g.,
python -c "import $package".Patches
Versions 0.9.6 and newer of uv address both of the parser differentials above, by properly handling comments in central directory entries and by refusing to process ZIPs that contain filename fields that are unlikely to be interpreted consistently across other ZIP parser implementations.
Workarounds
Users are advised to upgrade to 0.9.6 or newer to address this advisory.
Most users should experience no breaking changes as a result of the patch above. However, users who do experience breakage should carefully review their distributions for signs of malicious intent. Users may choose to set
UV_INSECURE_NO_ZIP_VALIDATION=1to revert to the previous behavior.Attribution
This vulnerability was disclosed by Caleb Brown (Google).
Severity
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
uv vulnerable to arbitrary file deletion through RECORD entries
CVE-2026-114110 / GHSA-pjjw-68hj-v9mw
More information
Details
Impact
Wheel RECORD entries can contain relative paths that traverse outside of the wheel’s installation prefix. In versions 0.11.5 and earlier of uv, these wheels were not rejected on installation and the RECORD was respected without validation on uninstall.
uv uses the RECORD to determine files to remove on uninstall. Consequently, a malicious or malformed wheel could induce deletion of arbitrary files outside of the wheel’s installation prefix on uninstall.
uv does not use the RECORD file to determine wheel file paths. Invalid RECORD entries cannot be used to create or modify files in arbitrary locations.
Standards-compliant Python packaging tooling does not produce RECORD files that exhibit this behavior; an attacker must manually manipulate the RECORD. A user must install and uninstall the malformed wheel to be affected. An attack must guess the depth of the installation prefix path in order to target system files.
Absolute paths in RECORD files are not allowed by the specification and, when present, uv always treats them as rooted in the wheel’s installation prefix. Absolute paths cannot be used to delete arbitrary files.
Only files can be deleted, attempts to delete a directory via an invalid RECORD entry will fail.
Patches
Versions 0.11.6 and newer of uv address the validation gap above, by removing invalid entries from RECORD files on wheel installation and ignoring RECORD paths that would escape the installation prefix on uninstall.
Workarounds
Users are advised to upgrade to 0.11.6 or newer to address this advisory.
Users should experience no breaking changes as a result of the patch above.
Severity
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:N/VI:L/VA:N/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
uv is vulnerable to arbitrary file write through entry point names
GHSA-4gg8-gxpx-9rph
More information
Details
Impact
In versions of uv prior to 0.11.15, when installing a distribution containing an entry point specification (under
console_scriptsorgui_scripts), uv would place the generated entry point according to the given name even if doing so resulted in a path outside of the environment's scripts directory.A malicious wheel could use this to place an executable outside of the intended environment, including in a directory already present on the user's
PATH. This could shadow or overwrite an existing executable and potentially result in unexpected code execution under the wheel's control, even if the wheel's installation environment was not explicitly added toPATHby the user.In order to exploit this vulnerability, the attacker must induce their target into installing a malicious wheel.
Patches
uv 0.11.15 and newer address this vulnerability. Users are encouraged to upgrade to 0.11.15.
Workarounds
There is no workaround other than upgrading to uv 0.11.15.
Severity
Medium
References
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
uv's bundled CA store trusts an emSign root whose intermediate CA keys are compromised
GHSA-hq85-5cpj-mr62
More information
Details
By default, uv verifies TLS connections against a vendored copy of the
webpki-root-certsbundle. Versions before 0.13.4 include theemSign ECC Root CA - G3root. Eight eMudhra intermediate CA certificates that chain to that root have compromised private keys, and the CA has revoked them.An attacker with one of the compromised keys can issue certificates that uv accepts for any hostname, and can be used to issue certificates to enable MITM attacks.
uv 0.13.4 removes the root from its vendored bundle, following
webpki-root-certs1.0.10. Upgrade to 0.13.4 or later.Severity
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Release Notes
astral-sh/uv (uv)
v0.13.4Compare Source
Released on 2026-10-20.
Preview features
wheel-variants(#22512)Other changes
webpki-root-certs1.0.10 (#22760)v0.13.3Compare Source
Released on 2026-10-20.
Performance
uv exportslowdowns in dependency graphs with extras (#22750)v0.13.2Compare Source
Released on 2026-10-19.
Enhancements
uv workspace metadata, including packages outside the selected resolution (#22395)pylock.toml(#22596)uv python find --scriptcannot discover an interpreter, including with-q(#22549)[build-system].requiresvalidation (#22577)Python
Preview features
wheel-variants(#22509, #22511)Performance
uv-buildbinary size, including Linux x86_64 wheels (#22539, #22573)Bug fixes
--exclude-newerwhen a newer wheel for the selected source distribution is already cached (#22685)--find-linksURLs that differ only in sensitive query values (#22630)pylock.toml(#22594)uv publish, and avoid prompting when no upload occurs (#22593)uv pip compile --python-versionvalues instead of panicking (#22727)pylock.tomloutput filenames before resolution instead of panicking (#22725)uv pip checkinvocations with-q(#22544)Rust API
unsafe-urlfeature to use rawurl::UrlAPIs inuv-pep508(#22623)Documentation
Other changes
sh.astral.*signing identifiers for macOS binaries (#22648)v0.13.1Compare Source
Released on 2026-10-14.
Enhancements
Requires-Pythonupper bounds inuv pip checkanduv pip install --strict, consistent with resolution (#22500)Python
Preview features
uv tool upgradeto upgrade installed tools whentool-install-locksis enabled (#22498)wheel-variants(#22039)Performance
Bug fixes
uv pip compileoruv exportoutput destinations (#22496)sys._base_executabledetection for environments created from symlinked interpreters (#22520)uv cache clean(#22387)uv tool upgradeleaves the tool version unchanged (#22499)Documentation
.netrcformat documentation link (#22514)Other changes
v0.13.0Compare Source
Released on 2026-10-09.
uv 0.13.0 makes Python 3.15 the default stable Python version. We've also included several breaking changes to improve correctness, performance, and compatibility, described below.
We expect most users to be able to upgrade without making changes.
While not a breaking change, this release also updates the format of many of uv's cache entries to improve performance. uv may download or rebuild dependencies after upgrading, because some cached entries from earlier versions cannot be reused. Multiple versions of uv can still safely share the same cache directory.
There are no breaking changes to the configuration of the uv build backend. If your
[build-system]table includes an upper bound onuv_build, update it to allowuv_build0.13, e.g.,uv_build>=0.13.0,<0.14.Breaking changes
Use Python 3.15 as the default stable version
The default stable Python version has changed from 3.14 to 3.15. This affects Python downloads when no version is requested or pinned, e.g., when running
uv python install.uv continues to use compatible Python installations that are already present. For example,
uv venvcan still use an installed Python 3.14. If no suitable interpreter is installed and automatic downloads are enabled, commands such asuv venvanduvx pythoncan now download Python 3.15.You can opt out of this behavior by requesting Python 3.14 explicitly, e.g.,
uv venv --python 3.14. For projects, useuv python pin 3.14to record the version in.python-version.Honor
--require-hashesin included constraints files (#22275)Previously, uv ignored
--require-hashesin constraints files included with-cfrom a requirements file. Now, uv honors the directive and requires hashes for all requirements in the installation. Installs that previously succeeded can now fail if a requirement is missing a hash.You cannot opt out while the directive is present. Add the missing hashes to your requirements, or remove the
--require-hashesdirective from the included constraints file if hash checking is not intended.Prefer native Python on Windows ARM64 (#22100)
Previously, ARM64 builds of uv preferred emulated
x86_64Python installations because native wheel support was limited. Now, uv prefers native ARM64 (aarch64) interpreters across Python versions.This follows similar changes in CPython, the official Windows Python install manager, and GitHub's actions/setup-python.
When a native interpreter is unavailable, uv continues to fall back to
x86_64, then 32-bitx86.You can opt out of this behavior by setting
UV_PYTHON_ARCH=x86_64or requesting an explicit architecture, e.g.,cpython-3.14-windows-x86_64. If you are usingsetup-uv, you can setpython-arch: x86_64instead.Reject editable requirements in included constraints files (#22282)
Previously, uv silently ignored editable (
-e) requirements in constraints files included with-cfrom a requirements file. Now, uv rejects these requirements with an error, matching pip's behavior.You cannot opt out of this behavior. Move editable requirements to a requirements file passed with
-r, or pass them directly with--editable, instead of including them in a constraints file.Omit the distutils startup patch on Python 3.10 and later (#22096)
Previously, uv installed
_virtualenv.pyand_virtualenv.pthinto every new virtual environment to prevent distutils configuration from changing installation paths. Now, likevirtualenv21.6.0, uv omits these files on Python 3.10 and later, which already ignore the affected configuration keys. This reduces Python startup overhead. Python 3.9 and earlier retain the patch.You cannot opt out of this behavior. Existing virtual environments are not modified automatically. Recreate an environment with Python 3.10 or later to remove the patch.
This stabilizes the
no-distutils-patchpreview feature.Treat requirement-file option values as single paths (#22290)
Previously, uv split values passed to
--constraint,--override,--exclude, and--build-constrainton spaces, even when quoted. Now, each value is treated as a single path, allowing file paths containing spaces.You cannot opt out of this behavior. Repeat the option to provide multiple files. For example, replace
-c "a.txt b.txt"with-c a.txt -c b.txt.Space-separated lists in
UV_CONSTRAINT,UV_OVERRIDE,UV_EXCLUDE, andUV_BUILD_CONSTRAINTremain supported.Use
tar-codecfor tar archives by default (#22094)Previously, uv used
astral-tokio-tarto extract tar archives, build source distributions withuv_build, and read their metadata foruv publish. Now, uv usestar-codec, which applies stricter validation when reading archives.uv may now reject archives containing hard links or unsupported tar extensions that previous versions accepted. Source distributions created by
uv_buildcan also have different archive bytes and hashes.You can opt out of this behavior by setting
UV_LEGACY_TAR_BACKEND=1.This stabilizes the
tar-codecpreview feature.Reject
uv build --clearoutput directories that contain a build source(#22276)
Previously,
uv build --clearcould delete a project or input source distribution when theoutput directory contained the source. Now, uv rejects these output directories, including
equivalent paths reached through symlinks, before clearing any build output.
Select an output directory that does not contain any build sources, or omit
--clear.Python
Preview features
--require-build-hashes(#21411)Performance
Bug fixes
v0.12.24Compare Source
Release Notes
Released on 2026-10-08.
Enhancements
uv cache prune(#22171)Preview features
uv auditreports, prioritizing PYSEC, GHSA, then CVE identifiers (#22292)Configuration
UV_NO_CACHE=falseto overrideno-cache = truein configuration (#22324)Performance
--find-linkspages withastral-html(#22203)uv-buildexecutable size by 7.5% by omitting unused Zstandard support (#22242)Bug fixes
--no-require-hashesorrequire-hashes = false(#22369)uv publish --trusted-publishingvalues precedence over configuration (#22279)UV_OFFLINE=falseto overrideoffline = truein configuration (#22283)UV_SYSTEM_CERTS=falseto overridesystem-certs = truein configuration (#22291)uv auth loginover IPv6 loopback addresses (#22306)#or%characters (#22281)uv versionanduv self versionwith a single--quietflag (#22280)WHEELmetadata contains multiple expandedTag:rows (#22235)--keyring-provideroption fromuv authhelp (#19520)uv toolrequirements (#22320)Documentation
required-environmentsdocumentation (#22238)Install uv 0.12.24
Install prebuilt binaries via shell script
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.12.24/uv-installer.ps1 | iex"Download uv 0.12.24
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
You can also download the attestation from GitHub and verify against that directly:
v0.12.23Compare Source
Release Notes
Released on 2026-10-03.
Python
Preview features
uv.lockwithout a workspace manifest usinguv sync --frozenwithfrozen-lockfile(#22018)uv.lockwithout a workspace manifest usinguv export --frozenwithfrozen-lockfile(#22007)uv.lockwithout a workspace manifest usinguv tree --frozenwithfrozen-lockfile(#22016)uv.lockwithout a workspace manifest usinguv workspace metadata --frozenwithfrozen-lockfile(#22017, #22018)Bug fixes
win_amd64wheels instead of building from source (#22099)Install uv 0.12.23
Install prebuilt binaries via shell script
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.12.23/uv-installer.ps1 | iex"Download uv 0.12.23