Skip to content

chore(deps): bump h2 to 0.4.17 for RUSTSEC-2026-0258 - #11378

Closed
michaelneale wants to merge 1 commit into
mainfrom
fix/h2-rustsec-2026-0258
Closed

michaelneale wants to merge 1 commit into
mainfrom
fix/h2-rustsec-2026-0258

Conversation

@michaelneale

Copy link
Copy Markdown
Collaborator

The deny gate is red for everyone

cargo-deny.yml has failed on every one of its last 12 runs, including runs on main itself:

failure  refactor: share `axum-server` via `workspace.dependencies` (#11326)  main  32292024545
failure  chore(deps): bump syn from 2.0.118 to 3.0.3 (#10855)                main  32288433057

Same cause every time:

error[vulnerability]: h2 unbounded empty DATA frames
  Cargo.lock:415  h2 0.4.15
  ID: RUSTSEC-2026-0258
  Solution: Upgrade to >=0.4.16

A gate that is red on every PR is signalling nothing — nobody can tell a real new advisory from the standing failure. That is the actual cost here; the advisory itself is Low severity.

The change

Lock-file only, two lines. h2 is transitive (hyper → axum/reqwest/tonic/rmcp/wiremock), so no manifest change is needed.

I hand-edited the single h2 entry rather than running cargo update -p h2, because that command also rewound 13 unrelated windows-sys pins from 0.61.2 back to 0.52.0/0.59.0/0.60.2 — 30 lines of churn with nothing to do with this advisory, and a real risk on the Windows build.

Verification (repo-pinned 1.96.1 from rust-toolchain.toml)

  • cargo metadata --locked — passes, so the hand-edit leaves a self-consistent lock file
  • cargo check --locked -p goose-cli — builds clean

Not fixed here

The same deny run emits two advisory-not-detected warnings for RUSTSEC-2026-0194 and RUSTSEC-2026-0195 (deny.toml:17-18) — quick-xml ignores that no longer match any crate. They are warnings, not the failure, and pruning them is a separate call for whoever owns the dep. Left alone deliberately.

Found while triaging #10515, whose only failing check was this.

The `deny` job has been failing on `main` and on every branch for at
least the last 12 runs of cargo-deny.yml:

    error[vulnerability]: h2 unbounded empty DATA frames
    Cargo.lock:415 h2 0.4.15

RUSTSEC-2026-0258 / GHSA-q83h-524g-xf6h: h2 accepted and queued empty
DATA frames without limit, so an undrained stream could grow memory
without bound or panic on length overflow. Low severity, patched in
0.4.16.

h2 is transitive only (hyper -> axum / reqwest / tonic / rmcp), so this
is a lock-file-only change. Hand-edited to the single h2 entry rather
than `cargo update -p h2`, which also churned 13 unrelated windows-sys
pins backwards.

Verified with the repo-pinned 1.96.1 toolchain:
  cargo metadata --locked   - lock file is consistent
  cargo check --locked -p goose-cli - builds

Co-authored-by: Michael Neale <14976+michaelneale@users.noreply.github.com>
Signed-off-by: Michael Neale <14976+michaelneale@users.noreply.github.com>
@michaelneale

Copy link
Copy Markdown
Collaborator Author

Closing as redundant — superseded by #11207, which I should have found before opening this.

#11207 (Disable thinking for tool call labels, DOsinga) already bumps h2 0.4.15 -> 0.4.16 in its Cargo.lock as part of a lock refresh, and additionally prunes the now-stale RUSTSEC-2026-0194/0195 quick-xml ignores from deny.toml — the two advisory-not-detected warnings I had explicitly declined to touch here.

I checked out #11207's head (2fd57e4c) and ran the gate locally with the repo-pinned 1.96.1 toolchain:

$ cargo deny check advisories
advisories ok

0.4.16 clears RUSTSEC-2026-0258; the 0.4.17 in this PR was not required. #11207 is approved (filipkujawa) and green on all 18 checks, so the right move is to merge that rather than land a competing lock edit and hand it a conflict.

Reopening this is one command if #11207 stalls.

@michaelneale
michaelneale deleted the fix/h2-rustsec-2026-0258 branch August 19, 2026 23:44
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