Skip to content

fix(deps): rustls 0.23.45 in every live lockfile — RUSTSEC-2026-0285 - #887

Merged
cryptskii merged 1 commit into
mainfrom
fix/rustls-rustsec-2026-0285
Sep 14, 2026
Merged

cryptskii merged 1 commit into
mainfrom
fix/rustls-rustsec-2026-0285

Conversation

@cryptskii

@cryptskii cryptskii commented Sep 14, 2026

Copy link
Copy Markdown
Collaborator

What

RUSTSEC-2026-0285 (published 2026-09-14, severity 5.3 medium): rustls accepted TLS 1.3 handshake messages across encryption-level boundaries. Fixed in rustls 0.23.45. CI's Rust gates → Security audit step fails on it (first seen on #886; main's next run fails the same way).

Four lockfiles, all live, all bumped

Lockfile Why it matters rustls before
Cargo.lock (root) CI cargo audit and the workspace build 0.23.42
dsm_client/deterministic_state_machine/Cargo.lock its own workspace root; make android-libs and the test board build from it 0.23.38
crates/dsm-android-anchor/Cargo.lock the shipped Android cdylib (build.gradle.kts:300), links dsm_sdk statically 0.23.41
crates/dsm-anchor-hw-verifier/Cargo.lock anchor hardware verifier 0.23.41

Each was updated with cargo update -p rustls@<old> --precise 0.23.45. Every diff is exactly the same four packages: rustls → 0.23.45, rustls-webpki → 0.103.15, aws-lc-rs → 1.18.1, aws-lc-sys → 0.45.0. Nothing else moved.

Verification

  • cargo audit at the repo root, the CI gate: 0 vulnerabilities, and the same 3 allowed warnings CI already tolerates (lru unsound, chacha20 and spin yanked). The same command on origin/main's lock reproduces the RUSTSEC-2026-0285 error.
  • cargo audit -f on both anchor locks: 0 vulnerabilities.
  • cargo check --locked -p dsm_sdk -p dsm_storage_node (root) and cargo check --locked -p dsm_sdk (nested workspace) both finish. That includes running the new aws-lc-sys 0.45 build script.
  • Android arm64 NDK build of the shipped dsm-android-anchor cdylib against the new lock (cargo ndk -t arm64-v8a build --release --locked --features on_device_installs): finishes. The log shows aws-lc-sys v0.45.0 and rustls v0.23.45 compiling for aarch64-linux-android, and libdsm_android_anchor.so is produced. The C-building dependency that moved cross-compiles on the path the APK ships.

Not in this PR

The nested workspace lock also carries an older, unrelated advisory: quinn-proto 0.11.14, RUSTSEC-2026-0185 (high). The root lock is already on 0.11.15. CI never audits the nested lock. Filed as a separate task.

After this merges, #886 needs a rebase onto main to pick up the fixed root lock.

The two anchor locks resolve a path dependency at ../../../../libtropic-rs (outside the repo), so updating them requires that checkout.

RUSTSEC-2026-0285 (published 2026-09-14, severity 5.3): rustls accepted TLS
1.3 handshake messages across encryption-level boundaries; fixed in 0.23.45.
CI's Security audit (Rust gates) fails on it, first seen on #886.

Four lockfiles resolve rustls, and all four are live:
- Cargo.lock (repo root): the CI audit and workspace build.
- dsm_client/deterministic_state_machine/Cargo.lock: that directory is its
  own workspace root; `make android-libs` and the test board build from it.
- crates/dsm-android-anchor/Cargo.lock: the shipped Android cdylib
  (build.gradle.kts), which links dsm_sdk statically.
- crates/dsm-anchor-hw-verifier/Cargo.lock.

Each was updated with `cargo update -p rustls@<old> --precise 0.23.45` and
each diff is the same four packages: rustls, rustls-webpki 0.103.15,
aws-lc-rs 1.18.1, aws-lc-sys 0.45.0.
@cryptskii
cryptskii merged commit 9bf0ded into main Sep 14, 2026
23 checks passed
@cryptskii
cryptskii deleted the fix/rustls-rustsec-2026-0285 branch September 14, 2026 19:41
cryptskii added a commit that referenced this pull request Sep 14, 2026
…d lock (#889)

The security audit read only the root Cargo.lock. The nested dsm_client
workspace lock (the test board and make android-libs) and the
dsm-android-anchor lock (the shipped Android library) carried advisories
it never saw: RUSTSEC-2026-0285, fixed in #887, and RUSTSEC-2026-0185.

ci/audit_every_lockfile.sh audits every lockfile git tracks, reports
all failures before exiting, and refuses an empty list. The CI and
release security audits, make audit and make release-preflight call it.
The nested lock moves quinn-proto 0.11.14 to 0.11.15 so the widened gate
starts green.
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