Skip to content

fix(deps): clear the 2026-10-14 wasmtime and rustls advisories - #2725

Merged
chaliy merged 1 commit into
mainfrom
eve/clever-mccarthy-ahg1wo
Oct 15, 2026
Merged

chaliy merged 1 commit into
mainfrom
eve/clever-mccarthy-ahg1wo

Conversation

@chaliy

@chaliy chaliy commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

What changed

The advisory scan passes again. wasmtime moves =48.0.5 -> =48.0.6 and rustls moves 0.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 dependabot ignore entries 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.rs recompiles 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 wasmtime 48.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 rustls 0.23.45 (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.

Before / After

./scripts/audit-lockfiles.sh — the same script the nightly advisories job and the CI audit job both call.

Before:

::group::cargo audit ./Cargo.lock
    Scanning ./Cargo.lock for vulnerabilities (680 crate dependencies)
Crate:     wasmtime
Version:   48.0.5
Title:     Component-model handle tables are capped only per instance and charged to no limit
ID:        RUSTSEC-2026-0363
Severity:  6.2 (medium)
Solution:  Upgrade to >=36.0.18, <37.0.0 OR >=48.0.6, <49.0.0 OR >=49.0.3
...
error: 15 vulnerabilities found!
::group::cargo audit ./crates/bashkit/fuzz/Cargo.lock
error: 15 vulnerabilities found!
::group::cargo audit ./examples/hyperlight/host/Cargo.lock
error: 11 vulnerabilities found!
##[error]Process completed with exit code 1.

After:

::group::cargo audit ./Cargo.lock
    Scanning ./Cargo.lock for vulnerabilities (680 crate dependencies)
Crate:     atomic-polyfill
Version:   1.0.3
Warning:   unmaintained
ID:        RUSTSEC-2023-0089

warning: 1 allowed warning found
::group::cargo audit ./crates/bashkit/fuzz/Cargo.lock
    Scanning ./crates/bashkit/fuzz/Cargo.lock for vulnerabilities (267 crate dependencies)
::group::cargo audit ./examples/hyperlight/host/Cargo.lock
    Scanning ./examples/hyperlight/host/Cargo.lock for vulnerabilities (118 crate dependencies)
...
AUDIT_EXIT=0

The one remaining line is the pre-existing allowed atomic-polyfill unmaintained warning.

Confirmed end to end after merge: Nightly run 264 on b6e712a is green on all four jobs, including the Advisory Audit that failed in run 263.

Supply chain

cargo vet --locked exits 0. wasmtime 48.0.6 is covered by the existing bytecodealliance trusted-publisher wildcard, so only imports.lock refreshes. rustls 0.23.46 needed a hand delta audit, recorded in supply-chain/audits.toml after reading the diff.

Every change in that delta narrows:

  • the TLS 1.3 key-exchange hint moves out of handle_server_hello into ExpectFinished, so it is recorded only after cert_verified and sig_verified rather than from an unauthenticated ServerHello;
  • start_traffic moves after the ECH-rejection check, and the std writer/flush paths return the connection's stored fatal error instead of buffering plaintext, so application data cannot reach the outer server after ECH rejection;
  • Brotli decompression switches to BrotliDecompressStream over the caller's output slice with BrotliState::new_strict, rejecting large windows and trailing input instead of letting brotli::BrotliDecompress allocate; zlib switches to Inflate so total_in/total_out are checked against both slice lengths;
  • the secret-bearing Debug derives become hand impls that destructure and skip secret/master_secret, with finish_non_exhaustive and upstream tests asserting the key bytes are absent.

No unsafe added or changed, no new filesystem/network/process/environment access, no new dependencies, build.rs unchanged.

Risk

  • Low
  • Two patch-level dependency bumps with no API change on our side. The residual risk is an upstream regression inside the patch releases themselves; both are the vendors' own advisory-fix releases. Staying on 48.0.5/0.23.45 is the larger risk, and the MSRV reason for the exact pin is preserved rather than worked around.

Checklist

  • Tests added or updated — no new behavior to test here; the regression gate is scripts/audit-lockfiles.sh, which was already failing and now passes. The 162 repository-script tests (including test_dependabot_coverage.py, whose pin references move with the bump) pass.
  • Backward compatibility considered — no public API or behavior change.

Validated locally: ./scripts/audit-lockfiles.sh (exit 0), cargo vet --locked (exit 0), cargo deny check licenses sources, cargo check -p bashkit --features cpython on 48.0.6, just check (fmt, clippy --all-targets -D warnings, cargo test, 162 script tests, all parity gates).

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
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

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

@chaliy
chaliy merged commit b6e712a into main Oct 15, 2026
43 checks passed
@chaliy
chaliy deleted the eve/clever-mccarthy-ahg1wo branch October 15, 2026 09:42
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