Skip to content

fix(deps): patch Dependabot security alerts - #66

Merged
abrichr merged 2 commits into
mainfrom
fix/dependabot-2026-10-14
Oct 14, 2026
Merged

abrichr merged 2 commits into
mainfrom
fix/dependabot-2026-10-14

Conversation

@abrichr

@abrichr abrichr commented Oct 14, 2026

Copy link
Copy Markdown
Member

Summary

This PR fixes all 14 open Dependabot alerts. Every alert is for PyJWT, which comes in as a transitive runtime dependency of mcp. The locked version moves from 2.13.0 to 2.15.0, the first release that fixes every alert.

Only the pyjwt entry in uv.lock changes (version, sdist, and wheel hashes). pyproject.toml and every other locked package stay the same. No Dependabot PR covered this. The open Dependabot PRs only bump GitHub Actions.

Alerts

Alert Advisory Severity From To
#8 GHSA-ffc3-869f-jxw9: whitespace-mutated PEM public keys skip the HS/asymmetric confusion guard critical 2.13.0 2.15.0
#4 GHSA-r6x4-923q-g947: BOM bypass high 2.13.0 2.15.0
#5 GHSA-p4g4-x82p-q773: DER public keys accepted as HMAC secrets high 2.13.0 2.15.0
#6 GHSA-9v7f-9g4p-ffgj: PyJWKClient follows redirects when fetching JWKS high 2.13.0 2.15.0
#7 GHSA-w2cx-738m-mc7w: public JWK containers accepted as HMAC secrets high 2.13.0 2.15.0
#11 GHSA-9j54-fg26-wv3r: PyJWK accepts empty HMAC keys high 2.13.0 2.15.0
#2 GHSA-w6j9-cwv2-h6wq: a malformed RSA JWK aborts parsing of a whole JWK Set medium 2.13.0 2.15.0
#3 GHSA-2gx3-rcp4-g85q: JWKS fetch amplification on unknown kid medium 2.13.0 2.15.0
#9 GHSA-hxm8-2xgr-2p9m: non-canonical signature segments bypass raw-token revocation medium 2.13.0 2.15.0
#10 GHSA-8wjv-2p76-3863: uncaught RecursionError on a deeply nested header medium 2.13.0 2.15.0
#12 GHSA-jwrc-g2q2-pq5p: ReDoS in is_pem_format medium 2.13.0 2.15.0
#13 GHSA-42vr-xj54-vc7v: unauthenticated RecursionError DoS in pre-verification parse medium 2.13.0 2.15.0
#14 GHSA-gvp8-978c-rx2q: decode() options-dict mutation medium 2.13.0 2.15.0
#15 GHSA-x33g-cr3x-6449: inconsistent OKP x/d JWKs medium 2.13.0 2.15.0

Alerts #13 and #15 first get a fix in 2.15.0, and the rest in 2.14.0. Alert #14 lists no patched version, but its vulnerable range ends at 2.13.0, so 2.15.0 is outside it. I chose 2.15.0 over 2.15.1 because it is the smallest version that fixes every alert. The only change in 2.15.1 is that it also accepts trailing Base64URL padding.

Verification

  • uv lock --locked passes.
  • pip-audit -r <uv export --locked --all-extras> --require-hashes reports no known vulnerabilities. For comparison, pyjwt==2.13.0 alone has 14 findings.
  • uv sync --locked --extra dev --extra tutorial: ruff check src tests scripts passes.
  • pytest -q with OPENADAPT_AGENT_E2E=1 (includes the real-engine MockMed sandbox): 340 passed, 1 skipped (Flow authoring browser extra not installed).
  • python -m build, check_release_artifacts.py, check_dist.py, and check_source_boundary.py --require-dist pass.

Notes

  • The package does not import jwt directly. PyJWT is only reached through mcp's HTTP auth code.
  • CI's pip-based jobs (floor, mcp2-floor, current) do not install from uv.lock, so this PR does not change what they install.
  • Branch fix/ledger-wave2-2026-10-14 (fix: confirm admit with a person and report approval waits #64) also edits uv.lock, but its hunks do not overlap with this one.

🤖 Generated with Claude Code

Move the locked PyJWT from 2.13.0 to 2.15.0, the first release that
fixes all 14 open Dependabot alerts. PyJWT is a transitive dependency
of mcp. Only the PyJWT entry in uv.lock changes. pyproject.toml and
every other locked package stay the same.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@abrichr
abrichr merged commit 4d29086 into main Oct 14, 2026
8 checks passed
@abrichr
abrichr deleted the fix/dependabot-2026-10-14 branch October 14, 2026 17:11
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.

1 participant