Repository navigation
chore(deps): move rustls-webpki to 0.103.16, webpki-root-certs and webpki-roots to 1.0.10 for three RustSec advisories - #384
Conversation
…bpki-roots to 1.0.10 for three RustSec advisories The emSign distrust (CVE-2026-111943): RUSTSEC-2026-0382 (rustls-webpki), RUSTSEC-2026-0383 (webpki-root-certs) and RUSTSEC-2026-0381 (webpki-roots) fail the Security Audit job. Each entry moves one patch release; nothing else in the lockfile changes. Closes V2-1665 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dirvine
left a comment
There was a problem hiding this comment.
APPROVE — no verified blocking defect
Reviewed WithAutonomi/ant-sdk #384 at 2bee0162a3ed9a2e725c3ba2140a61ce66f53a69, against f06b671fac28b625567f6c2b39e3358ef0b38072. Scope: every changed hunk in all four Cargo.lock files; no source or manifest changes.
Verified
- The affected lockfiles resolve
rustls-webpkito 0.103.16 andwebpki-root-certs/webpki-roots, where present, to 1.0.10. These meet the patched floors for RUSTSEC-2026-0382, 0383 and 0381. The olderwebpki-rootswrapper resolves to the patched 1.x package. - Registry checksums match the downloaded crate archives and lock entries. New releases are not yanked. Published dependency and feature sections are unchanged, including optional and target-specific dependencies. The new Rust 1.71 floor remains below the projects' Rust 1.82 floor.
cargo metadata --lockedpasses for all four manifests. Reproduction from the exact base is byte-identical forantd-rustandffi/node. Forantdandffi/rust, Cargo also rewrites unrelatedwindows-sysedges; the PR deliberately retains their existing valid resolution.- Local macOS
cargo test --locked --manifest-path antd-rust/Cargo.tomlexits 0: 170 unit tests, 1 proto-drift test, 5 example tests, 3 doc tests. The two live integration tests return early without service configuration; this is not live-network evidence. - Current-head CI confirms locked tests: 154 passed for
antd; 23 passed, 1 ignored forant-ffi, plus successful locked release builds and binding generation. Windows Node 20 and 22 tests and Windows x86_64/ARM64 builds pass.
Panel and dissent
6/6 role reviews completed: GLM 5.3, Qwen 3.8 and DS4, each in correctness and adversarial roles. 4 APPROVE; 2 CHANGES_REQUIRED. This is not unanimous.
Qwen objects in both roles because two lockfiles differ from fresh Cargo update output, and predicts locked builds/CI will fail. I do not promote that prediction to a blocking defect: unchanged published dependencies, successful locked metadata, and the actual current-head antd locked CI and ant-ffi locked CI contradict it. The resolver-normalisation difference remains a maintenance caveat; Qwen's dissent is retained, not counted as approval.
Caveats and next step
- Raw audits clear the targeted advisories and introduce no new findings.
antd-rustnow exits 0. The other three still exit 1 because of inheritedzipadvisories; existing warnings are unchanged. Green filtered CI is not a clean raw audit. - Please correct the description's “one patch” and “same rust-version” claims: some updates span several patch releases, and some old releases declare Rust 1.64/1.70, not 1.71. These are non-blocking description errors.
- At the pre-submission CI snapshot, 40/41 checks pass; still pending:
build aarch64-apple-darwin. Leave merge gated on CI completion. No merge or release performed. No production TLS smoke test performed.
Authored by Hermes. The six independent role receipts share frozen evidence SHA256 e09ffc0ce21560bf473a1e44de1c610670647f700e4a79d1e87e4aa6087f5870. One narrative MSRV typo in that packet was checked against its correct raw registry records; the conclusion is unchanged.
Linear issue
Closes V2-1665
Part of V2-1659, which tracks the same move across every affected WithAutonomi lockfile.
Risk tier
Proposed rather than asserted. Lockfile only: 3 crates move to their patched releases (
rustls-webpki0.103.15 → 0.103.16;webpki-rootsandwebpki-root-certsfrom 1.0.6–1.0.9, depending on the lockfile, → 1.0.10), with the same dependency lists. The new releases declarerust-version1.71 (some of the old ones declared 1.64 or 1.70), still below the projects' Rust 1.82 floor. The one behaviour change is that TLS certificate paths through the distrusted emSign intermediates, or the removedemSign ECC Root CA - G3root, no longer verify. No Autonomi protocol message changes. Same tier as the earlier rustls lockfile moves (ant-client#232, ant-node#256, ant-protocol#46, saorsa-core#177, saorsa-transport#190).Compatibility
Semver impact
Test evidence
Run on this branch: one commit on top of
mainat848a2f8. RustSec database at4b587f00(2026-10-21), cargo-audit 0.22.1, cargo 1.97.1.cargo audit -f <lockfile>: onmain's lockfiles it reports RUSTSEC-2026-0381, RUSTSEC-2026-0382, RUSTSEC-2026-0383; on this branch none of them, and every other finding is unchanged.versionandchecksumlines of the moved entries:antd/Cargo.lock8 lines,antd-rust/Cargo.lock14 lines,ffi/node/Cargo.lock12 lines,ffi/rust/Cargo.lock12 lines (the extra 2 inantd-rustare the wrapper's reference to its parent). No entry is added or removed.cargo metadata --lockedaccepts every changed lockfile. Each moved release has the same dependency list as the version it replaces, checked entry by entry.cargo update -p <crate> --precise <version>also re-picked some unrelated multi-version edges (getrandom,windows-sys). The lockfile was reduced to the target entries, so those edges stay asmainhas them.New dependency
None. Existing lockfile entries move to their patched releases (one or several patch releases, depending on the lockfile); none is added or removed.
ADR
n/a, Tier 1.
Mitigation / rollback
Revert the commit. It touches only lockfiles, so there is nothing to migrate either way.
What this is
Three RustSec advisories published on 2026-10-19 and 2026-10-20 cover one incident, CVE-2026-111943: the private keys of some emSign intermediate CAs are now well known, so certificate paths through them must stop verifying. This lockfile is affected by:
rustls-webpki, fixed in 0.103.16): rejects certificate paths that contain the distrusted emSign intermediate public keys.webpki-root-certs, fixed in 1.0.10): drops theemSign ECC Root CA - G3root.webpki-roots, fixed in 1.0.10): drops the same root.antd/Cargo.lockrustls-webpki0.103.15 → 0.103.16,webpki-root-certs1.0.7 → 1.0.10antd-rust/Cargo.lockrustls-webpki0.103.15 → 0.103.16,webpki-root-certs1.0.7 → 1.0.10,webpki-roots1.0.7 → 1.0.10ffi/node/Cargo.lockrustls-webpki0.103.15 → 0.103.16,webpki-root-certs1.0.9 → 1.0.10,webpki-roots1.0.9 → 1.0.10ffi/rust/Cargo.lockrustls-webpki0.103.15 → 0.103.16,webpki-root-certs1.0.6 → 1.0.10,webpki-roots1.0.8 → 1.0.10rustls-webpkiis rustls's certificate-path verifier, compiled in throughrustls,rustls-platform-verifierandrustls-post-quantum.webpki-root-certsis the bundled root storerustls-platform-verifieruses.In
antd-rust, thewebpki-roots0.26.11 compatibility wrapper stays (it is unaffected and re-exports its 1.x parent); its dependency reference moves to the 1.0.10 parent. Inffi/nodeandffi/rust,webpki-rootsis the root storereqwest/hyper-rustlscompile in. The zip 2.4.2 findings inantdand the ffi lockfiles are V2-1634 and are unchanged here.🤖 Generated with Claude Code