Repository navigation
chore: bump rustls-webpki and webpki-roots for RUSTSEC-2026-0381/0382/0383 - #5582
Conversation
…/0383 Lockfile-only, targeted `cargo update --precise` bumps: - rustls-webpki 0.103.15 -> 0.103.16 (RUSTSEC-2026-0382) - webpki-roots 1.0.7 -> 1.0.11 (RUSTSEC-2026-0381) - webpki-root-certs 1.0.7 -> 1.0.11 (RUSTSEC-2026-0383) cargo audit on v5.0-dev: 7 -> 4 vulnerabilities. Remaining: zip 8.6.0 via rs-tenderdash-abci v1.8.0 (fixed in tag v1.8.1) and crypto-bigint 0.5.5 via elliptic-curve 0.13 in the BLS stack (no 0.5.x fix exists). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Review skippedReview was skipped due to path filters ⛔ Files ignored due to path filters: 1
CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including
|
|
Waiting for bot review — coderabbitai not yet · thepastaclaw ✓. Wait for the missing reviews, or a writer can post |
|
✅ Final review complete — no blockers (commit 7f824d7) · triage: low |
thepastaclaw
left a comment
There was a problem hiding this comment.
Final validation — Phase 1 + Phase 2
The root Cargo.lock update is correctly limited to the three intended TLS dependency upgrades, and the available CI results show no related failure. However, the repository also commits a stale packages/wasm-drive-verify/Cargo.lock containing rustls-webpki 0.103.3; although the root workspace build ignores it, repository-wide security scanners can still report the advisory. This is a non-blocking scope-completeness issue for the security bump.
🟡 1 suggestion(s)
1 finding(s) not shown inline (the lines are not part of this PR's diff)
🟡 Suggestion: Committed WASM lockfile still pins vulnerable rustls-webpki
packages/wasm-drive-verify/Cargo.lock:3084-3087
This committed lockfile still pins rustls-webpki 0.103.3, below the 0.103.16 version that fixes RUSTSEC-2026-0382. wasm-drive-verify is listed as a member of the root workspace, and its build script uses the root Cargo.lock, so this stale lockfile does not affect the normal workspace build. It can nevertheless be discovered by tools that scan every committed lockfile, leaving the repository with an apparently unresolved vulnerable pin despite this security-focused update. Delete the vestigial lockfile if it is no longer supported, or regenerate it from the appropriate manifest and update the vulnerable entry.
source: glm-5.3-flash (phase1-reviewer: general)
Review provenance
Source: reviewer 1: glm-5.3-flash (agent: phase1-reviewer, role: general); reviewer 2: gpt-6.1-sol (agent: phase2-reviewer, role: general); reviewer 3: gpt-6.1-sol (agent: phase2-reviewer, role: architecture-layering); reviewer 4: gpt-6.1-sol (agent: phase2-reviewer, role: security-auditor); final verifier: gpt-6.1-sol (agent: sol-verifier, role: final-verifier)
- Triage:
lowbygpt-6.1-sol(effort low) — This is a tightly scoped Cargo.lock-only dependency refresh with no source or consensus changes, and its correctness is straightforward to verify from the exact package version and checksum updates. - Phase 1 reviewers:
glm-5.3-flash— general (completed, effort high); agentphase1-reviewer - Phase 1 model:
glm-5.3-flash— zai quota: 5h 100% left, weekly 100% left; passed overgemini-3.8-flash-high(antigravity quota lookup failed) - Fresh verifier:
gpt-6.1-sol— final-verifier; agentsol-verifier - Phase 2 reviewers:
gpt-6.1-sol— general (completed, effort medium); agentphase2-reviewer,gpt-6.1-sol— architecture-layering (completed, effort medium); agentphase2-reviewer,gpt-6.1-sol— security-auditor (completed, effort medium); agentphase2-reviewer
🤖 Prompt for all review comments with AI agents
These findings are from an automated code review. Verify each finding against the current code and only fix it if needed.
In `packages/wasm-drive-verify/Cargo.lock`:
- [SUGGESTION] packages/wasm-drive-verify/Cargo.lock:3084-3087: Committed WASM lockfile still pins vulnerable rustls-webpki
This committed lockfile still pins rustls-webpki 0.103.3, below the 0.103.16 version that fixes RUSTSEC-2026-0382. wasm-drive-verify is listed as a member of the root workspace, and its build script uses the root Cargo.lock, so this stale lockfile does not affect the normal workspace build. It can nevertheless be discovered by tools that scan every committed lockfile, leaving the repository with an apparently unresolved vulnerable pin despite this security-focused update. Delete the vestigial lockfile if it is no longer supported, or regenerate it from the appropriate manifest and update the vulnerable entry.
Basic explanation
What this does: Updates three small Rust libraries that decide which HTTPS/TLS certificates Platform's Rust code trusts.
webpki-rootsandwebpki-root-certsare the built-in lists of trusted certificate authorities;rustls-webpkichecks a server's certificate chain against that list. The new versions stop trusting certificates issued by a set of emSign (eMudhra) authorities whose private keys are now publicly known. OnlyCargo.lockchanges.Value: The nightly "Security: Rust Crates" audit on
v5.0-devgoes from 7 vulnerabilities to 4, so 5.0.0 does not ship with these TLS advisories. The fix reaches everything that connects to DAPI or other servers over TLS from Rust: rs-dapi, the Rust SDK, and the FFI, mobile and wasm SDKs built on it.Risks: Low. These are patch releases on the same semver lines, with no new dependencies and no API changes. No consensus code is touched (block execution does not use TLS). The one visible behaviour change is intended: a server whose certificate chains to one of the removed roots (listed below) now fails the TLS handshake. Certificates that dashmate obtains from ZeroSSL or Let's Encrypt do not chain to those roots; only a node using the
fileprovider with a certificate bought from one of those authorities would be affected.Issue being fixed or feature implemented
The nightly
cargo auditjob (.github/workflows/security-audit-rust.yml) went red again onv5.0-devafter #5499, because new advisories were published between 2026-10-19 and 2026-10-23:rustls-webpkiwebpki-rootswebpki-root-certscrypto-bigintzipThis PR fixes the first three. The last two cannot be fixed in the lockfile; see "What remains" below.
What was done?
Three targeted
cargo update -p <crate>@<old> --precise <new>calls, so nothing else re-resolved:git diff Cargo.lockis exactly these three entries (version and checksum); their dependency lists are unchanged.1.0.11 is the latest
webpki-rootsrelease (the advisory is fixed from 1.0.10; 1.0.11 drops two more eMudhra roots tracked by the same Mozilla bug). Trust-store changes from 1.0.7 to 1.0.11, from the upstream release notes:emSign ECC Root CA - G3,emSign Root CA - C1,emSign ECC Root CA - C3,SecureSign Root CA12,Atos TrustedRoot 2011Telia EC TLS Root CA v3,Telia RSA TLS Root CA v3,SECOM TLS ECC Root CA 2024,SECOM TLS RSA Root CA 2024Where the crates are used:
rustls-webpkiis used byrustls(tonic, reqwest, hyper-rustls).webpki-rootsis used bytonic(dapi-grpc, rs-dapi-client, dash-sdk and everything above it),reqwest/hyper-rustls(rs-dapi, rs-sdk-trusted-context-provider) andureq(rs-scripts, the tenderdash-proto build script).webpki-root-certsis only in the lockfile: its one user,rustls-platform-verifier, is an optional dependency that no workspace crate enables on any target (cargo tree -i webpki-root-certs --target allfinds nothing). It is bumped anyway becausecargo auditreadsCargo.lock.What remains (4 vulnerabilities) and why
zip8.6.0 (RUSTSEC-2026-0367 / 0368 / 0369, 3 of the 4). Comes only fromtenderdash-proto-compiler, a build dependency oftenderdash-protoatrs-tenderdash-abcitagv1.8.0. It is used at build time to unpack the Tenderdash proto files, not at runtime. dashpay/rs-tenderdash-abci#221 moved it to zip 9 and is released as tagv1.8.1(2026-10-23; v1.8.0 plus that bump and CI changes, still building against Tenderdashv1.8.0protos). Clearing it needs the tag bumped fromv1.8.0tov1.8.1inpackages/rs-drive-abci/Cargo.toml,packages/rs-drive-proof-verifier/Cargo.tomlandpackages/dapi-grpc/Cargo.toml. That is aCargo.tomlchange to the ABCI library, so it is left for a separate PR.crypto-bigint0.5.5 (RUSTSEC-2026-0387). Fixed only in 0.7.6+; there is no 0.5.x release with the fix. It comes fromelliptic-curve0.13.8 (andvsss-rs5.1.0), pulled in byblstrs_plus0.8.18 ->blsful(dashpay/agora-blsful) ->dashcore(rust-dashcore). No compatible release removes it:elliptic-curve0.13.8 is the last 0.13.x and requirescrypto-bigint0.5.blstrs_plus0.9.0 (used by upstreamblsful4.x) still depends onelliptic-curve^0.13.8 next to ^0.14, so moving the BLS stack to the 4.x line would not dropcrypto-bigint0.5 either.A fix has to start upstream in
blstrs_plusand then flow through agora-blsful and rust-dashcore. Noaudit.tomlignore is added for it.Warnings (unchanged, "allowed", do not fail the job)
atomic-polyfill1.0.3 (unmaintained),lru0.16.4,scc2.4.0 andtokio1.52.3 (RUSTSEC-2026-0386,AsyncFdI/O safety, fixed in tokio >= 1.53.3) are reported as warnings before and after this PR.How Has This Been Tested?
cargo audit(cargo-audit 0.22.2, the version the workflow pins), advisory DB fetched 2026-10-26.Before (
v5.0-devat 7ea82c7):After (this PR):
Build check on the workspace crates that compile the changed crates (tonic, reqwest, hyper-rustls, ureq, rustls):
The log shows
rustls0.23.46,rustls-webpki0.103.16,webpki-roots1.0.11,tonic,reqwestandureqcompiled, with no new warnings.No test suites were run: the change is three patch-version bumps of certificate-checking crates with no API change.
Breaking Changes
None.
Checklist:
structure.rs, regeneratedgrovedb-structure.json, and checked the structure viewer link posted on this pull requestFor repository code-owners and collaborators only
🤖 Generated with Claude Code
PR Hygiene ·
7f824d7/skip-botsproceeds without the ones not yet reported/self-reviewedWhen every merge requirement is met, the
PR Hygienecheck passes. Reviewer limits do not block merging; other required GitHub checks and protections still apply.