chore(deps): nightly audit 2026-08-04 - #363
Merged
Merged
Conversation
Patch-level, non-crypto/net/async/FFI updates from the nightly dependency audit: lru 0.18.1 -> 0.18.2 (Rust lockfile), ksp 2.3.10 -> 2.3.11 and compose-preview-plugin 0.19.12 -> 0.19.25 (Gradle version catalog). Everything else surfaced by the audit (RUSTSEC-2025-0141, RUSTSEC-2026-0221, arti-client/tor-rtcompat major bump, rand patch) is reported in the PR body for review. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015FCuwjLWtxdDpvEype9Jrg
po4yka
marked this pull request as ready for review
August 4, 2026 04:10
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.
Task
N/A — scheduled nightly dependency and security audit, not tied to a
docs/tasks/issues/entry.Summary
Nightly automated audit of the Rust Cargo workspace (
native/rust, 223 crate entries across the workspace graph) and the Gradle version catalog (gradle/libs.versions.toml, 19 modules). Only the SAFE bucket (patch-level bumps with no crypto/networking/async-runtime/JNI-FFI surface) is applied here. Everything else is reported below for a human decision — nothing in Needs Review or Major was touched.Applied
Rust
lru:0.18.1→0.18.2(lockfile-only patch bump viacargo update -p lru --precise 0.18.2; general-purpose cache data structure, no crypto/net/async/FFI surface, consumed byripdpi-dns-resolver,ripdpi-runtime-dns-cache,ripdpi-tunnel-core,ripdpi-flow-app-attribution)Gradle
ksp:2.3.10→2.3.11(patch bump, KSP annotation processor)compose-preview-plugin:0.19.12→0.19.25(patch bump within the0.19.xseries; build-time-only Compose preview image renderer, not shipped in the app)Security
native/rust/deny.toml/advisory-waivers.toml. Affectsrsa 0.9.10(viaarti-client→ Tor) andrsa 0.10.0-rc.18(viarussh 0.62.5, the SSH relay's exact-pinned RustCrypto stack). No fix available upstream on either path as of this run (russh 0.62.5 is still exact-pinned torsa =0.10.0-rc.18; no 0.63 release yet). The waiver expires 2026-08-12 — 8 days from this run and will failcargo-deny-advisories/CI on that date until reviewed. Tracking:docs/tasks/issues/unpin-russh-after-rsa-advisory-fix.md.bincode 2.0.1enters transitively viator-netdir→typed-index-collections(part of the Arti/Tor stack). Bincode's maintainers ceased development permanently (Dec 2025); no patched version exists. Needs a deny.toml waiver (with owner/expiry/tracking-issue per the repo's governance) or an upstream fix in Arti's dependency tree. Unresolved.Send/Syncleak viaStackSlot) — new, not currently waived.event-listener 5.4.1is unsound: a!Sendtag set viaEvent::with_tagcan cross threads throughStackSlot::wait. A patched5.4.2exists on crates.io. Withheld from SAFE despite being a straightforward patch because the dependency chain is async-runtime- and tunnel-adjacent:event-listener-strategy→async-channel→blocking→tun-rs(the TUN driver inripdpi-tunnel-core/ripdpi-tunnel-android), and separatelytor-dirmgr→arti-client→ripdpi-tor. See Needs Review.native/rust/fuzz/Cargo.lock(separate, dev-only fuzz-tooling workspace, not shipped):anyhow 1.0.102flagged unsound by RUSTSEC-2026-0190 (Error::downcast_mut()). Out of scope for this run (separate lockfile, not part of the app's dependency graph) but noted for awareness.cargo deny --locked check(advisories, bans, licenses, sources): ok. Pre-existingmultiple-versions/wildcardbans warnings are unchanged and already tolerated bydeny.tomlpolicy (warn, notdeny).Needs review
5.4.1→5.4.2(Rust) — patches RUSTSEC-2026-0221 (unsoundSend/Sync). Withheld because the dependency chain is async-runtime/tunnel-adjacent (tun-rs,arti-client) — policy requires human review for any such change regardless of semver level, even a security fix. Suggested fix once reviewed:cargo update -p event-listener --precise 5.4.2in its own PR.rand_09alias)=0.9.3→0.9.5available (Rust) — exact-pinned crypto RNG (os_rng,std_rngfeatures). Patch-level, but crypto crates never auto-apply regardless of semver level per policy.Major
0.44.0→0.45.0(Rust) — Tor client backend forripdpi-tor. 0.x minor bump (breaking under Cargo semver rules); requires aCargo.tomlversion-requirement edit, not just a lockfile update. Upstream changelog not reachable from this environment to summarize breaking changes — review manually before bumping.0.44.0→0.45.0(Rust) — paired witharti-client; must move in lockstep ifarti-clientis bumped.Conflicts
None found. The Gradle build uses a single centralized version catalog (
gradle/libs.versions.toml) with no per-module hardcoded dependency versions, noresolutionStrategy/forceoverrides, and no secondary version catalogs — so no cross-module version divergence is possible by construction.Test plan
cargo update -p lru --precise 0.18.2(Rust workspace) — lockfile-only change, diff limited to thelruentry.cargo check --locked -p ripdpi-dns-resolver -p ripdpi-runtime-dns-cache -p ripdpi-tunnel-core -p ripdpi-flow-app-attribution(all direct consumers oflru) — passed clean.cargo deny --locked --manifest-path native/rust/Cargo.toml check— advisories/bans/licenses/sources all ok.python3 scripts/ci/check_rust_advisory_waivers.py— waiver governance metadata current.cargo audit --file native/rust/Cargo.lock— 2 known/waived vulnerabilities (RUSTSEC-2023-0071), 3 unmaintained + 1 unsound warnings (see Security)../gradlew help(Gradle, afterksp/compose-preview-pluginbump) — resolved the new plugin/dependency versions and configured every module (:app, all:core:*,:testing:socket-bind-probe) cleanly; the only failure wasSDK location not found, an environment limitation (noANDROID_HOMEin this sandbox) unrelated to the version bumps.Checklist
timeout-minutesadded to any new CI job — N/A, no CI job addedGenerated by Claude Code