fix(deps): raise current security floors - #63152
vexclawx31 wants to merge 1 commit into
Conversation
Related: part of the June/July-2026 dependency-CVE floor-bump cluster of competing/overlapping consolidated PRs — #63099, #56830, #58487, #59993, #54424, #51305, tracking #47998. All bump the same advisory floors (cryptography GHSA-537c-gmf6-5ccf, Starlette 2026 set, python-multipart parsing/smuggling). A human should pick the canonical consolidated bump; these are related, not duplicates of each other. |
teknium1
left a comment
There was a problem hiding this comment.
Thanks for consolidating the dependency-floor updates. The security premise is still present on current main, but the patch does not yet cover every dashboard install path.
Problems
tools/lazy_deps.py:219-225still pins thetool.dashboardlazy-install path tostarlette==1.0.1andpython-multipart==0.0.27.hermes_cli/web_server.py:104-110invokes that bundle after an import failure, so a lean dashboard install bypasses the proposed[web]floors.pyproject.toml:112-116retains corepython-multipart>=0.0.9,<1; changing only the[web]copy does not enforce the proposed floor for that declared core dependency.- The changed
cryptographyspec replaces the exact core pin despite the exact-pin policy inpyproject.toml:25-37.
Suggested changes
- Update the dashboard lazy bundle and the core multipart declaration in lockstep, then regenerate
uv.lock. - Keep
cryptographyat an audited exact version; the candidate lock resolves49.0.0.
This is an automated hermes-sweeper review.
| "cryptography==46.0.7", # CVE-2026-39892, CVE-2026-34073 | ||
| # cryptography is pulled in transitively by PyJWT[crypto]; keep it explicitly | ||
| # above the current CVE-fixed floor for WeCom/Weixin crypto paths. | ||
| "cryptography>=48.0.1,<50", # GHSA-537c-gmf6-5ccf |
There was a problem hiding this comment.
This is a core direct dependency, while pyproject.toml:25-37 requires exact pins so upgrades are intentional and reviewed. Please retain an audited exact pin (the candidate lock resolves 49.0.0) instead of reopening this range.
| web = ["fastapi==0.133.1", "uvicorn[standard]==0.41.0", "starlette==1.0.1", "python-multipart==0.0.27"] | ||
| # Starlette and python-multipart are pinned above current 2026 advisory fixed | ||
| # floors for the dashboard's FastAPI multipart surface. | ||
| web = ["fastapi==0.133.1", "uvicorn[standard]==0.41.0", "starlette>=1.3.1,<2", "python-multipart>=0.0.31,<1"] | ||
| all = [ |
There was a problem hiding this comment.
Please update the corresponding tool.dashboard bundle in tools/lazy_deps.py:219-225. hermes_cli/web_server.py:104-110 invokes it for lean installs, and it still installs Starlette 1.0.1 and python-multipart 0.0.27.
|
not enough evidence I could not complete a reliable security review because the run-owned deterministic patch replay of PR head Review setup: A run-owned local rebase or patch replay was attempted against current GitHub Signed: GPT-5.6-sol-xhigh in Codex |
cde8e68 to
6a0260e
Compare
|
@egilewski The branch has been replayed coherently onto current
The Alibaba lock movement is required: Local verification: 235 targeted tests passed (1 skipped); the broad web/dashboard slice passed 1,218 tests (2 skipped), with three known order-dependent tests passing individually; Could you please rerun the security review against this refreshed head? No merge or runtime rollout is requested. |
|
CI follow-up on
I am leaving the unrelated base file out of this focused security dependency PR rather than adding churn. No merge or runtime rollout was attempted. |
|
suggesting changes The base installation still has no direct Starlette security floor. Security evidence:
Signed: GPT-5.6-sol-xhigh in Codex |
|
Resolved by #72362 (merged) — same floors this PR raised: cryptography 48.0.1, starlette 1.3.1, python-multipart 0.0.32, across pyproject + LAZY_DEPS + uv.lock with a CI anti-downgrade guard. #60839 by @embwl0x was the earliest open submission of the refresh so it got the salvage. Thanks @vexclawx31. |
Summary
Refresh the dependency-floor change on current
mainand enforce the reviewed versions across every affected install path:cryptography==48.0.1as an audited exact core pin for GHSA-537c-gmf6-5ccfstarlette==1.3.1across dev, MCP, computer-use, web, and both lazy-install surfacespython-multipart==0.0.32across the core dependency, web extra, and dashboard lazy-install surfaceuv.lockregenerated from currentmainThis also extends the existing invariant-style metadata coverage so the reviewed core exact pins and security-critical lazy paths cannot silently drift.
Resolver note
cryptography==48.0.1cannot coexist withalibabacloud-tea-openapi==0.4.4, which declarescryptography>=3,<47. The current resolver therefore selects the compatible neweralibabacloud-tea-openapi==0.4.5, updatesdarabonba-coreto1.0.8, and adds itswebsocket-client==1.9.0dependency. This is required resolver movement rather than incidental lock churn; no packages are downgraded or removed.Focused validation covers that path: the locked Dingtalk extra installs cleanly,
uv pip checkpasses, bothdingtalk_streamand the Dingtalk card SDK import successfully, and the Dingtalk auth/gateway suites pass.Overlap review
The closest live overlaps were rechecked before refresh:
python-multipartdeclaration that the live review requested here. Its cryptography 49.0.0 choice also lacks Intel-macOS and 32-bit-Windows wheels; this PR uses the advisory-fixed 48.0.1 exact pin, which retains those supported-platform wheels.This PR stays focused on the reviewed cryptography/Starlette/multipart contract instead of absorbing unrelated dependency bumps.
Verification
origin/main.mainand passed after sanitizing the inherited dashboard auth/public-URL env.uv lock --checkuv pip check— 102 installed packages compatibleruff check .— passed (one pre-existing invalid-noqa warning)git diff --checkfeature_specs()API and introduces no source/AST inspection.Scope
No merge, deployment, gateway restart, or live-profile/runtime change is part of this PR.