Skip to content

fix(deps): bump h2 to 0.4.19 for RUSTSEC-2026-0258 - #120

Merged
haasonsaas merged 1 commit into
mainfrom
deps/h2-0.4.16-rustsec-2026-0258
Sep 2, 2026
Merged

fix(deps): bump h2 to 0.4.19 for RUSTSEC-2026-0258#120
haasonsaas merged 1 commit into
mainfrom
deps/h2-0.4.16-rustsec-2026-0258

Conversation

@haasonsaas

Copy link
Copy Markdown
Collaborator

What broke

Two jobs in .github/workflows/ci.yml are red on main and on every open PR, including Dependabot #112:

  • security — runs cargo audit
  • cargo-deny (advisories + licenses) — runs cargo deny check advisories licenses

Both fail on one advisory:

Crate:    h2
Version:  0.4.10
Title:    h2 unbounded empty DATA frames
ID:       RUSTSEC-2026-0258
URL:      https://rustsec.org/advisories/RUSTSEC-2026-0258

h2 accepted and queued empty DATA frames without limit. On streams that are not actively drained that grows memory without bound, or panics when the length overflows. Patched in 0.4.16.

The change

cargo update -p h2 moves h2 from 0.4.10 to 0.4.19 inside the existing semver requirement. h2 is transitive here — it arrives through hyper-util, hyper-rustls, axum, reqwest and mockito — so this is a Cargo.lock-only change with no manifest and no source edits.

The advisory is fixed, not silenced: deny.toml gets no new exception, and cargo audit gets no --ignore.

How I verified

Locally with cargo-audit and cargo-deny against this Cargo.lock:

Command Before After
cargo audit error: 1 vulnerability found! (RUSTSEC-2026-0258) exit 0
cargo deny check advisories licenses advisories FAILED, licenses ok advisories ok, licenses ok

After the bump cargo audit still reports the three warnings that were already tolerated on main and do not fail the build: RUSTSEC-2026-0221 (event-listener), RUSTSEC-2026-0097 (rand), and yanked spin 0.9.8. This PR does not change their status.

cargo check was not run locally (denied by a local disk and thermal guard on this machine). The lint, test and coverage jobs on this PR cover compilation.

Unblocks

#112 (ws 8.19.0 -> 8.21.3 in /web), whose only failing checks are these two jobs. Note that the review job the sweep flagged for a missing merge base already passes — .github/workflows/ci.yml line 18 and .github/workflows/diffscope.yml line 21 both already set fetch-depth: 0.

🤖 Generated with Claude Code

https://claude.ai/code/session_01XpuXXVrWCZk3Tq5NRXejNP

The `security` job (`cargo audit`) and the `cargo-deny (advisories +
licenses)` job in .github/workflows/ci.yml have been red on main and on
every pull request, including Dependabot PR #112. Both fail on the same
advisory:

  Crate:    h2
  Version:  0.4.10
  Title:    h2 unbounded empty DATA frames
  ID:       RUSTSEC-2026-0258
  URL:      https://rustsec.org/advisories/RUSTSEC-2026-0258

h2 accepted and queued empty DATA frames without limit; on streams that
were not actively drained this could grow memory without bound or panic
on length overflow. Patched in 0.4.16.

h2 is transitive here, reached through hyper-util, hyper-rustls, axum,
reqwest and mockito. `cargo update -p h2` moves it 0.4.10 -> 0.4.19
within the existing semver requirement, so this is a Cargo.lock-only
change; no manifest and no source changes. The advisory is fixed, not
ignored: deny.toml gains no exception and cargo audit gains no
--ignore flag.

Verified locally with cargo-audit 0.22 and cargo-deny against this
Cargo.lock:
- Before: `cargo audit` reports `error: 1 vulnerability found!`
  (RUSTSEC-2026-0258) and `cargo deny check advisories licenses` reports
  `advisories FAILED, licenses ok`.
- After: `cargo audit` exits 0 with only the three pre-existing allowed
  warnings (RUSTSEC-2026-0221 event-listener, RUSTSEC-2026-0097 rand,
  yanked spin 0.9.8), and `cargo deny check advisories licenses` reports
  `advisories ok, licenses ok`.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XpuXXVrWCZk3Tq5NRXejNP
@haasonsaas
haasonsaas merged commit 0443e6c into main Sep 2, 2026
15 checks passed
@haasonsaas
haasonsaas deleted the deps/h2-0.4.16-rustsec-2026-0258 branch September 2, 2026 01:37
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