Dependabot aug2026 - #27
Open
hakonhagland wants to merge 6 commits into
Open
Conversation
Fixes dependabot alerts OPM#26-#44. Between 2026-07-21 and 2026-08-07 a series of argument-injection findings were published against GitPython, each fixed in an incremental 3.1.x release. Bumping straight to 3.1.58 closes all of them: - Unguarded git option forwarding enabling arbitrary file read, arbitrary file overwrite or command execution via clone/checkout hooks: GHSA-956x-8gvw-wg5v, GHSA-6p8h-3wgx-97gf, GHSA-fjr4-x663-mwxc, GHSA-3f7w-8rr8-f37f, GHSA-4gmw-gg2m-w46p, GHSA-9rj7-rf2p-w77r, GHSA-hh9p-6wh2-4mfc, GHSA-539m-9xh6-q6rr, GHSA-p538-c434-8v24 - Bypasses of the unsafe option denylist through option-abbreviation, joined short options and single-character token smuggling: GHSA-v396-v7q4-x2qj, GHSA-2f96-g7mh-g2hx, GHSA-r9mr-m37c-5fr3, GHSA-wvpp-8hx9-p66j - git-config name/section injection forging core.sshCommand and core.hooksPath: GHSA-3rp5-jjmw-4wv2, GHSA-jm78-9fvv-mhgr - Environment-variable exfiltration via expandvars() on clone/remote URLs: GHSA-rwj8-pgh3-r573, GHSA-94p4-4cq8-9g67 - Repository creation outside the working tree via an unvalidated .gitmodules submodule name: GHSA-hmq2-w58f-27jc GitPython is only reached here with fixed, non-attacker-controlled values: git.Repo.init() and a positional branch checkout in the test fixtures, and plain branch-name checkouts inside sphinx-versioned-docs. The new option guards therefore do not affect either call site.
Fixes dependabot alert #30: - GHSA-h35f-9h28-mq5c (CVE-2026-59890): MANIFEST.in exclusion bypass when building an sdist, through an NFC/NFD Unicode normalization collision on macOS APFS/HFS+ filesystems setuptools is a transitive runtime dependency pulled in by sphinx-versioned-docs.
Fixes dependabot alert OPM#25: - GHSA-65pc-fj4g-8rjx (CVE-2026-45409): specially crafted input to idna.encode() bypasses the CVE-2024-3651 fix, allowing excessive resource consumption idna is a transitive dependency of requests.
Fixes dependabot alert OPM#16: - GHSA-5239-wwwm-4pmq (CVE-2026-4539): regular expression denial of service caused by an inefficient regex for GUID matching Pygments is a transitive dependency of Sphinx.
Fixes dependabot alert OPM#15: - GHSA-gc5v-m9x4-r6x2 (CVE-2026-25645): insecure temporary file reuse in the extract_zipped_paths() utility function
Fixes dependabot alert OPM#17: - GHSA-6w46-j5rx-g56g (CVE-2025-71176): insecure handling of the per-user temporary directory, which is reused across runs and can be pre-created by another local user The fix first landed in pytest 9.0.3, so the dev constraint has to move from ^8.3.4 to ^9.0.3. pytest-mock 3.14.0 requires only pytest >= 6.2.5 and is unaffected.
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.
Clear all 23 open Dependabot alerts in
python/sphinx_docs/poetry.lockAll 23 open Dependabot alerts on this repository sit in the single lock file
python/sphinx_docs/poetry.lockand cover five distinct packages. This PR closes all of them with a targeted relock — onepoetry update --lock <pkg>per affected package — so the only versions that move are the six that actually need to. A plainpoetry updatewould additionally have pulled insphinx7.2.6 → 7.3.7,sphinx-versioned-docs1.3.1 → 1.4,typer0.9.0 → 0.27.1,rich13 → 15 and roughly thirty more packages. Several of those are load-bearing for the gh-pages docs build — sphinx-versioned-docs provides the sphinx-versioned command the workflow runs, and typer/rich sit underneath it — so the churn carries real regression risk while closing no additional alerts. That upgrade is better done separately and reviewed on its own.Version delta versus
master:Bump GitPython to 3.1.58 (commit 1)
GHSA-956x-8gvw-wg5v,GHSA-6p8h-3wgx-97gf,GHSA-fjr4-x663-mwxc,GHSA-3f7w-8rr8-f37f,GHSA-4gmw-gg2m-w46p,GHSA-9rj7-rf2p-w77r,GHSA-hh9p-6wh2-4mfc,GHSA-539m-9xh6-q6rr,GHSA-p538-c434-8v24); denylist bypasses through option abbreviation, joined short options and single-character token smuggling (GHSA-v396-v7q4-x2qj,GHSA-2f96-g7mh-g2hx,GHSA-r9mr-m37c-5fr3,GHSA-wvpp-8hx9-p66j); git-config injection forgingcore.sshCommandandcore.hooksPath(GHSA-3rp5-jjmw-4wv2,GHSA-jm78-9fvv-mhgr); environment-variable exfiltration viaexpandvars()on clone and remote URLs (GHSA-rwj8-pgh3-r573,GHSA-94p4-4cq8-9g67); and repository creation outside the working tree via an unvalidated.gitmodulessubmodule name (GHSA-hmq2-w58f-27jc).git.Repo.init()and a positional branch checkout in the test fixtures, and plain branch-name checkouts insidesphinx-versioned-docs. Both call sites were checked against the new option guards and are unaffected.Bump setuptools to 84.0.0 (commit 2)
GHSA-h35f-9h28-mq5c(CVE-2026-59890):MANIFEST.inexclusion bypass when building an sdist, through an NFC/NFD Unicode normalization collision on macOS APFS/HFS+ filesystems.setuptoolsis a transitive runtime dependency pulled in bysphinx-versioned-docs.Bump idna to 3.18 (commit 3)
GHSA-65pc-fj4g-8rjx(CVE-2026-45409): specially crafted input toidna.encode()bypasses the CVE-2024-3651 fix, allowing excessive resource consumption.idnais a transitive dependency ofrequests, and was still locked at 3.7.Bump Pygments to 2.20.0 (commit 4)
GHSA-5239-wwwm-4pmq(CVE-2026-4539): regular expression denial of service caused by an inefficient regex for GUID matching.Pygmentsis a transitive dependency of Sphinx.Bump requests to 2.34.2 (commit 5)
GHSA-gc5v-m9x4-r6x2(CVE-2026-25645): insecure temporary file reuse in theextract_zipped_paths()utility function.Bump pytest to 9.1.1 (commit 6)
GHSA-6w46-j5rx-g56g(CVE-2025-71176): insecure handling of the per-user temporary directory, which is reused across runs and can be pre-created by another local user.pyproject.tomlchange — the fix first landed in pytest 9.0.3, so the dev constraint moves from^8.3.4to^9.0.3. Every other bump is lock-only.pytest-mock3.14.0 requires onlypytest >= 6.2.5and is unaffected.Verification
poetry install && poetry run pytest testspasses on the new lock.poetry run sphinx-versioned -m master -b "master release-2025.10 release-2026.04" --force --git-root ../../succeeded for all three branches and produced the expecteddocs/_build/tree. This is the check that matters for the GitPython bump, sincesphinx-versionedis what drives the branch checkouts.python_sphinx_docs.ymlbuilds the docs on push, andpython_scripts.ymlruns the test suite on Python 3.11 and 3.12.Follow-up (not in this PR)
This repository has no
.github/dependabot.yml, so GitHub only raises security alerts and never opens version-update PRs. That is why the lock had drifted to a 2024-eraidnaandcertifi. Adding a groupedpipconfiguration for/python/sphinx_docswould keep this from recurring — grouping matters, since GitPython alone went through eight patch releases in the three weeks from 2026-07-21 to 2026-08-07, and ungrouped that would have arrived as a steady stream of individual PRs.