Repository navigation
Conversation
`cargo audit` fails on RUSTSEC-2026-0346, RUSTSEC-2026-0347, RUSTSEC-2026-0348 and RUSTSEC-2026-0349 against `rustls` 0.23.45. All four are fixed in 0.23.46. They reached the RustSec database on 2026-10-14. Since then `main`'s lockfile fails `cargo audit`, and the Security Audit job fails whenever CI runs on a PR that still locks `rustls` 0.23.45. Only the `rustls` entry in `Cargo.lock` changes (version and checksum). 0.23.45 and 0.23.46 declare the same dependencies and `rust-version`, every existing requirement on `rustls` already allows the new patch, and the unique package lines of `cargo tree --locked --workspace --all-features --target all -e normal,build,dev --prefix none` differ only in the `rustls` version. `cargo update -p rustls` also moves `tempfile` from `getrandom` 0.4.3 to 0.3.4, a crate this fix has no reason to touch, so that line is kept as it was. Cargo 1.95, 1.98 and 1.99 accept the lockfile under `--locked` and find nothing to change with `--precise 0.23.46`.
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.
Linear issue
Closes V2-1595
Risk tier
Proposed rather than asserted, following how dependency patch bumps here have been tiered: #209 (
h2, compiled into the node) and WithAutonomi/saorsa-transport#190 (this samerustlsmove, in the transport itself) were both T1. Against the template's boundary question it is a borderline call.rustlsis compiled into the node, and besides the four advisory fixes 0.23.46 tightens TLS handling (stricter handshake checks, key-update and I/O fixes). It changes no Autonomi protocol message, stored data, payment logic or upgrade mechanism. It does change TLS handling in the node transport and in thereqwestclient the auto-upgrader uses; the code builds unchanged on it, the local e2e suite below passes over real node-transport connections, and the upgrader's release check works over HTTPS (below). If review wants T2, it needs a dev-testnet run and a linked ADR first.Compatibility
Semver impact
Test evidence
Run on this branch, one commit on top of
mainata6e3388e, with the RustSec database at its current head (edb58f59).cargo audit: no vulnerabilities, leaving only the six warningsmainalready has. Onmain's ownCargo.lockit fails with exactly RUSTSEC-2026-0346, RUSTSEC-2026-0347, RUSTSEC-2026-0348 and RUSTSEC-2026-0349.cargo tree --locked --workspace --all-features --target all -e normal,build,dev --prefix none | sort -u: 818 unique lines onmainand on this branch, identical exceptrustls v0.23.45becomingrustls v0.23.46.cargo metadata --lockedaccepts the lockfile on cargo 1.95 (MSRV), 1.98 and 1.99, andcargo update -p rustls --precise 0.23.46 --dry-runfinds nothing to change.rustls-0.23.46.cratehashes to48e13bd8…, the same as the crates.io sparse index, and the release is not yanked.rust-version(1.71), so the entry's dependency list is still correct.cargo fmt --all -- --check,cargo check --all-targets --all-features --locked,cargo clippy --locked --all-targets --all-features -- -D warnings(CI's flags, plus--locked),cargo clippy --locked -- -D warnings,cargo check --lib --no-default-features --lockedandcargo doc --locked --no-depswithRUSTDOCFLAGS=--deny=warnings: all clean.cargo test --locked --lib --features test-utils1188 passed;cargo test --locked --test e2e --features test-utils -- --test-threads=1119 passed, with the suite's 3#[ignore]d live-testnet tests skipped;cargo test --locked --test webrtc_direct_devnet3 passed. The e2e suite runs real QUIC connections between local nodes, so it exercises the newrustlson the node's own transport.UpgradeMonitor::check_for_updates()on this branch's lockfile, i.e.reqwestoverrustls0.23.46 toapi.github.com, fetched and parsed the release list and correctly found no stable release newer than 0.23.0. The binary and signature downloads insrc/upgrade/apply.rswere not run.antbinary from the matching ant-client branch at33b78931(grumbach/ant-client,chore/rustls-0.23.46, linkingrustls0.23.46) connected to the production network (six peers) and downloaded a 54,903,201-byte public file in 78.4 s. Separately, ant-node v0.21.0, v0.22.0, v0.23.0-rc.1 and v0.23.0 all lockrustls0.23.45; the smoke log does not record which versions the peers it fetched from run. A node built from this branch has not been run against production.New dependency
None. An existing lockfile entry,
rustls, moves from 0.23.45 to 0.23.46. No entry is added or removed.ADR
n/a, Tier 1.
Mitigation / rollback
Revert the commit. It touches only
Cargo.lock, so there is nothing to migrate either way.What this is
The Security Audit job fails on four advisories against
rustls0.23.45, all fixed in 0.23.46. They reached the RustSec database on 2026-10-14.Debugimpls of client session values print the TLS 1.2 master secret or TLS 1.3 resumption PSK.Exposure depends on configuration. The
brotlifeature is off, so 0348 cannot trigger, and nothing in this repo or in the compiled crates that userustlshere (saorsa-transport, reqwest, hyper-rustls, tokio-rustls, dtls, rustls-platform-verifier, rustls-post-quantum;quinnandquinn-protoalso depend on it but are lockfile-only and never compiled) enables ECH or implements a customClientSessionStore, so 0346 and 0347 do not apply. 0349 is the one that can apply: client session resumption is on by default, so an on-path attacker could make later connections to a server name use classical-only key exchange, as long as the genuine server accepts that share.Why the diff is two lines
cargo update -p rustlsalso movestempfilefromgetrandom0.4.3 to 0.3.4. An advisory fix has no reason to change it, so that line is left asmainhas it, as on #251. The checks above show cargo accepts the result as it stands.