Skip to content

chore(deps): raise the pip floor past CVE-2026-8643 - #143

Merged
jrosskopf merged 1 commit into
masterfrom
claude/issue-141-remove-dead-uv-scaffold
Sep 5, 2026
Merged

chore(deps): raise the pip floor past CVE-2026-8643#143
jrosskopf merged 1 commit into
masterfrom
claude/issue-141-remove-dead-uv-scaffold

Conversation

@jrosskopf

@jrosskopf jrosskopf commented Sep 5, 2026

Copy link
Copy Markdown
Collaborator

Closes #141.

pip < 26.1.2 treats console_scripts / gui_scripts entry points as paths rather than file names, without checking that the resolved absolute path stays inside the installation directory, so a crafted wheel can write its entry-point wrappers anywhere the installing user can write. CVSS v4.0 4.1 (MEDIUM); 8.0 (HIGH) under Red Hat's v3.1 assessment. The CVE checks out against the MITRE record — see the closing note on the issue.

What changed

pyproject.toml pip>=25.0.1pip>=26.1.2, and uv lock, which resolves to 26.2.1.

uv 0.12.9 also rewrites the lockfile header revision = 13. That is the current on-disk format, not part of the bump.

Why a bump and not a deletion

My first read was that the root pyproject.toml was dead scaffolding from 4b7f593 ("initialize UV") — nothing in the Makefile, CMake or CI touches it, and its only declared dependency is pip itself. That was wrong. rfc/test/parallel/README.md documents uv run pytest rfc/test/parallel from the repo root, so this project is the harness's environment, and the root .venv had pip 25.0.1 actually installed. The vulnerable version was live, not merely recorded.

I upgraded that local .venv in place rather than via uv sync — see the follow-up below for why.

Rest of the org is clean

Checked whether anything else pins a vulnerable pip: 25 uv.lock, 2 requirements.txt and 1 poetry.lock across DataZooDE; 48 Python manifests grepped across the locally-cloned repos plus API fetches for the four that are not cloned. This is the only pin of pip anywhere in the org. The ~30 repos that run pip in CI use the ambient setup-python pip, and several already python -m pip install --upgrade pip, which lands on a fixed version by itself.

Follow-up, not in this PR

The root .venv carries pytest, duckdb and adbc_driver_duckdb, none of which are declared in pyproject.toml — they were installed ad hoc. A plain uv sync (or uv run, which syncs) would prune them and break the parallel harness. Worth declaring them so the documented command actually works from a clean checkout, but that changes what the harness resolves and belongs in its own change.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

pip < 26.1.2 treats console_scripts and gui_scripts entry points as paths
rather than file names, without checking that the resolved absolute path stays
inside the installation directory. A crafted wheel can therefore write its
entry-point wrappers anywhere the installing user can write. CVSS v4.0 4.1
(MEDIUM), 8.0 (HIGH) on Red Hat's v3.1 assessment.

The root project pins pip for the .venv that rfc/test/parallel runs under (see
its README: "uv run pytest rfc/test/parallel"), so the vulnerable version was
genuinely installed, not merely recorded in a lockfile. uv resolves the new
floor to 26.2.1.

uv 0.12.9 also rewrites the lockfile header from revision 1 to 3; that is the
current on-disk format, unrelated to the bump.

Reported in #141.
@jrosskopf
jrosskopf merged commit 5ee2b63 into master Sep 5, 2026
53 checks passed
@jrosskopf
jrosskopf deleted the claude/issue-141-remove-dead-uv-scaffold branch September 5, 2026 10:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Possible fix(deps): pip 25.0.1 → 26.1.2 (CVE-2026-8643) in uv.lock

1 participant