Repository navigation
fix(deps): clear the 2026-10-14 wasmtime and rustls advisories - #2725
Merged
Merged
Conversation
Nightly run 263 went red on the Advisory Audit with 15 vulnerabilities in the root and fuzz lockfiles and 11 in examples/hyperlight/host. Nothing in the tree changed; two upstream batches landed on 2026-10-14. wasmtime 48.0.5 collected eleven advisories (RUSTSEC-2026-0353..-0359 and -0361..-0364): host panics reachable from guest code, exception tags that can leave host data structures unaligned, and a component-model handle table capped only per instance and charged to no limit. 48.0.6 is the fix release on the 48 line and keeps MSRV at 1.95.0, matching rust-toolchain.toml. 49.0.3 carries the same fixes but needs rustc 1.96, so the reason the exact pin exists is unchanged and the dependabot ignore entries stay as they are. rustls 0.23.45 collected four (RUSTSEC-2026-0346..-0349): Debug impls on client session values exposing TLS secrets, buffered application data sent to the outer server after ECH rejection, Brotli certificate decompression allocating up to 1 GiB before authentication, and an unauthenticated ServerHello downgrading later connections to classical key exchange. It is a caret dependency and moves to 0.23.46. All three cargo lockfiles move together: the fuzz lockfile resolves the root workspace and examples/hyperlight/host carries its own. The wasmtime bump needs no guest rebuild - build.rs recompiles the .cwasm. cargo-vet covers wasmtime 48.0.6 through the existing bytecodealliance trusted-publisher wildcard. rustls 0.23.46 needed a hand delta audit; it is recorded in supply-chain/audits.toml after reading the diff. Every change in it narrows: the key-exchange hint moves out of handle_server_hello into ExpectFinished so it is recorded only after cert_verified and sig_verified, start_traffic moves after the ECH-rejection check, the writer and flush paths return the stored fatal error instead of buffering plaintext, and brotli/zlib decompression now check consumed input and produced output against the caller's slices. No unsafe added or changed, no new ambient capability, no new dependencies. Before: ./scripts/audit-lockfiles.sh exits 1, "error: 15 vulnerabilities found!" on the root and fuzz lockfiles and "11 vulnerabilities found!" on examples/hyperlight/host. After: the same script exits 0, with only the pre-existing allowed atomic-polyfill unmaintained warning. Claude-Session: https://claude.ai/code/session_014HHDRjwpPVfNtawkM9Ht8p
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
bashkit | cfdc433 | Commit Preview URL Branch Preview URL |
Oct 15 2026, 09:20 AM |
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.
What changed
The advisory scan passes again.
wasmtimemoves=48.0.5->=48.0.6andrustlsmoves0.23.45->0.23.46, across all three cargo lockfiles (root,crates/bashkit/fuzz,examples/hyperlight/host).No API or behavior change in this repo: both are drop-in patch releases on the lines already in use. 48.0.6 keeps MSRV at 1.95.0, matching
rust-toolchain.toml, so the exact pin's reason for existing is unchanged and the dependabotignoreentries stay as they are. 49.0.3 carries the same wasmtime fixes but needs rustc 1.96, which is the gap that reddened #2708. The wasmtime bump needs no CPython guest rebuild —build.rsrecompiles the.cwasm.Why
Nightly run 263 went red on the Advisory Audit: 15 vulnerabilities in the root and fuzz lockfiles, 11 in
examples/hyperlight/host. Nothing in the tree changed — two upstream batches landed on 2026-10-14.Eleven against
wasmtime48.0.5 (RUSTSEC-2026-0353..-0359, -0361..-0364): host panics reachable from guest code, exception tags that can leave host data structures unaligned, and a component-model handle table capped only per instance and charged to no limit.Four against
rustls0.23.45 (RUSTSEC-2026-0346..-0349):Debugimpls on client session values exposing TLS secrets, buffered application data sent to the outer server after ECH rejection, Brotli certificate decompression allocating up to 1 GiB before authentication, and an unauthenticatedServerHellodowngrading later connections to classical key exchange.Before / After
./scripts/audit-lockfiles.sh— the same script the nightlyadvisoriesjob and the CIauditjob both call.Before:
After:
The one remaining line is the pre-existing allowed
atomic-polyfillunmaintained warning.Confirmed end to end after merge: Nightly run 264 on
b6e712ais green on all four jobs, including the Advisory Audit that failed in run 263.Supply chain
cargo vet --lockedexits 0. wasmtime 48.0.6 is covered by the existing bytecodealliance trusted-publisher wildcard, so onlyimports.lockrefreshes. rustls 0.23.46 needed a hand delta audit, recorded insupply-chain/audits.tomlafter reading the diff.Every change in that delta narrows:
handle_server_hellointoExpectFinished, so it is recorded only aftercert_verifiedandsig_verifiedrather than from an unauthenticatedServerHello;start_trafficmoves after the ECH-rejection check, and thestdwriter/flush paths return the connection's stored fatal error instead of buffering plaintext, so application data cannot reach the outer server after ECH rejection;BrotliDecompressStreamover the caller's output slice withBrotliState::new_strict, rejecting large windows and trailing input instead of lettingbrotli::BrotliDecompressallocate; zlib switches toInflatesototal_in/total_outare checked against both slice lengths;Debugderives become hand impls that destructure and skipsecret/master_secret, withfinish_non_exhaustiveand upstream tests asserting the key bytes are absent.No unsafe added or changed, no new filesystem/network/process/environment access, no new dependencies,
build.rsunchanged.Risk
Checklist
scripts/audit-lockfiles.sh, which was already failing and now passes. The 162 repository-script tests (includingtest_dependabot_coverage.py, whose pin references move with the bump) pass.Validated locally:
./scripts/audit-lockfiles.sh(exit 0),cargo vet --locked(exit 0),cargo deny check licenses sources,cargo check -p bashkit --features cpythonon 48.0.6,just check(fmt, clippy--all-targets -D warnings,cargo test, 162 script tests, all parity gates).