deps: pin aiohttp, cryptography and h2 for the August-2026 CVE batch - #81
Merged
Merged
Conversation
szjanikowski
force-pushed
the
claude/nasde-toolkit-libraries-status-f3i7wx
branch
from
September 9, 2026 07:27
c5d2638 to
73b5a35
Compare
The `CVE audit (pip-audit)` gate has been red on `main` since the 2026-08-10 TestPyPI canary — five advisories across three transitive packages, none introduced by a change of ours. `pip-audit` reads a live advisory database, so the gate went red on an unchanged tree (main is still at 61a91c3) and every PR inherits the failure; #78 has been red on exactly this since 2026-08-24 with all other jobs green. aiohttp 3.14.1 PYSEC-2026-3545/3546/3547 fix 3.14.3 cryptography 49.0.0 PYSEC-2026-3552 fix 50.0.0 h2 4.3.0 PYSEC-2026-3628 fix 4.4.1 No first-party code is affected: nasde serves no HTTP and decrypts no PKCS#7. The pins are there to keep the supply chain clean and the gate green, not to patch a reachable bug. `h2` gets its first explicit floor — it reaches the tree through harbor's e2b / grpclib / httpx path and had no lower bound of its own. Resolution moves exactly four packages (aiohttp 3.14.1->3.14.3, cryptography 49.0.0->50.0.1, h2 4.3.0->4.4.1, hpack 4.1.0->4.2.0); harbor stays at 0.19.0 and litellm at 1.87.0. A blanket `uv lock --upgrade` would also clear the advisories but drags ~40 packages including rich 14->15, which carries the whole CLI surface — deliberately not taken here. Verified: ruff check + format clean, mypy clean, 463 tests green, and `pip-audit --strict --ignore-vuln PYSEC-2025-183` (the CI command, on py3.12) reports no known vulnerabilities. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V9M7964Dzo5cHXsL13GZpj
szjanikowski
force-pushed
the
claude/nasde-toolkit-libraries-status-f3i7wx
branch
from
September 9, 2026 07:55
73b5a35 to
bf22760
Compare
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.
Unblocks the
CVE audit (pip-audit)gate, which has been red onmainsince the 2026-08-10 TestPyPI canary.Why now
Five advisories across three transitive packages, none introduced by a change of ours.
pip-auditreads a live advisory database, so the gate went red on an unchanged tree —mainis still at 61a91c3, and every PR inherits the failure:publish.ymlcanary onmainhas failed five weeks running (08-10, 08-17, 08-24, 08-31, 09-07). Last green: 08-03.What's pinned
aiohttpcryptographyh2permessage-deflate.pkcs7_decrypt_*distinguished RSA decryption outcomes both by result and by timing: a Bleichenbacher oracle against the content-encryption key (introduced in 44.0.0).Hostheader is forwarded whole, a request-smuggling primitive (CWE-444) once HTTP/2 is downgraded to HTTP/1.1. This ish2's first explicit floor; it reaches the tree through harbor's e2b / grpclib / httpx path and had no lower bound of its own.No first-party code is affected — nasde serves no HTTP and decrypts no PKCS#7. The pins keep the supply chain clean and the gate green; they are not patching a reachable bug here.
Blast radius
Resolution moves exactly four packages:
harborstays at 0.19.0 andlitellmat 1.87.0.A blanket
uv lock --upgradealso clears the advisories, but drags ~40 packages including rich 14 → 15 (a major, and rich carries the entire CLI surface — run summary tables,pricing_report), plus opik 2.0→2.2, starlette 1.3→1.6 and typer 0.27. Deliberately not taken here; that refresh deserves its own PR with eyes on the output.Verification
ruff check— all checks passedruff format --check— 60 files already formattedmypy src/nasde_toolkit/— no issues in 33 source filesuv run pytest— 463 passednasde --version/--help— banner and command table render fineuv export … | pip-audit --strict --ignore-vuln PYSEC-2025-183on py3.12 (the exact CI command) — No known vulnerabilities found, exit 0The disputed pyjwt advisory PYSEC-2025-183 keeps its existing ignore — still no upstream fix, still transitive-only.
No end-to-end benchmark run was performed: this touches no runner, evaluator or agent code, and every LLM run in this project is individually authorized by the owner.
Follow-ups (not in this PR)
setup()signature, the ADR-012 skill-injection command is byte-identical,JobConfigchanges are purely additive, opik's monkey-patch targets all survive). Cost is a litellm floor bump to 1.92 that pulls in boto3/botocore. Wants a smoke run before landing.🤖 Generated with Claude Code
https://claude.ai/code/session_01V9M7964Dzo5cHXsL13GZpj
Generated by Claude Code