Repository navigation
fix(deps): take the patched ctutils; record why three advisories stay - #2
Merged
Merged
Conversation
New RustSec advisories failed cargo audit in CI. A semver-compatible update clears one: - ctutils 0.4.8 (RUSTSEC-2026-0385, non-constant-time masks), under digest 0.11 in the hpke-rs provider; lockfile only The other three cannot move now and are ignored with their reasons: - crypto-bigint 0.5.5 (RUSTSEC-2026-0387) comes from elliptic-curve 0.13 under the openmls crypto crates, which still require p256 0.13 in 0.6.0. TapChat's only MLS suite is X25519/Ed25519, and openmls rejects a Welcome in another suite before opening it, so the NIST-curve code sees only the public inputs of a peer KeyPackage's signature check. - libsqlite3-sys 0.30.1 (RUSTSEC-2026-0459): TapChat builds the bundled SQLCipher, and the "patched" 0.39 still builds it from SQLite 3.53.4, so a rusqlite 0.41 upgrade would quiet the check without fixing the build. The bug needs a database and -wal written by someone else, and TapChat opens only its own state.db. - zip 4.6.1 (RUSTSEC-2026-0429) aborts in ZipArchive::extract(), on Windows too, and the updater calls extract() on a zip bundle. It does so only after download() has verified the signature, and TapChat's Windows updates are the signed .msi and -setup.exe, never a zip. tauri-plugin-updater 2.14.1 moved to zip ^9 but also moves tauri to 2.12; the four zip entries go when the lockfile takes it. cargo-deny does not read .cargo/audit.toml, so deny.toml ignores the two whose crates are in its graph (crypto-bigint, libsqlite3-sys). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
cargo auditstarted failing onmain(and so on every PR) after four RustSec advisories were published between 2026-10-22 and 2026-10-30. This makes thesupply-chainjob pass again: one lockfile upgrade, and three reasoned ignores.digest0.11 in the hpke-rs provider.elliptic-curve0.13 (p256/p384/k256), andopenmls_rust_crypto/openmls_basic_credentialstill require p256 0.13 in their newest release (0.6.0). TapChat's only MLS suite isMLS_128_DHKEMX25519_AES128GCM_SHA256_Ed25519: device key Ed25519, HPKE on X25519, neither of which uses crypto-bigint. openmls rejects a Welcome in another suite before opening the group secrets (creation.rs,CiphersuiteMismatch). So the NIST-curve code runs only whenKeyPackage::validate()checks a peer KeyPackage's signature on public inputs, and thenverify_key_package_is_peer_device()rejects it.bundled-sqlcipher-vendored-openssl. The "patched" libsqlite3-sys 0.39.x (rusqlite 0.41) still builds that feature fromsqlcipher-src =419.0.6, which bundles the affected SQLite 3.53.4, so a rusqlite 0.32 → 0.41 major bump would silence the audit without fixing the build. The bug needs a database plus-walwritten by a less trusted party. TapChat opens only its ownstate.dbin the profile it unlocks and has no database import.ZipArchive::extract()that also happens on Windows, and tauri-plugin-updater's Windowsextract_zipdoes callextract(). It does so only on bytes thatdownload()has already signature-verified, and TapChat's Windows updater artifacts are the signed.msi/-setup.exethemselves (createUpdaterArtifacts: true;release.ymlpublishes only those), so no genuine update takes the zip branch.Other changes:
deny.toml: cargo-deny does not read.cargo/audit.toml. Its graph is the root package, which builds tapchat-desktop withoutgui, so it contains crypto-bigint and libsqlite3-sys but not zip, quick-xml or rkyv. Only those two IDs are added there, each with a reason.zip ^9, but it also needstauri ^2.12(locked: 2.10.3) and Rust 1.90. The comment now says so. All four zip entries can go once the lockfile takes updater ≥ 2.14.1, which is a follow-up.Cargo.lockchange (ctutils version and checksum) was copied from the crates.io index; ctutils 0.4.8 needscmov ^0.5.4, which is already locked. This PR's CI is the verification.Not changed: the yanked
async-executor1.14.0 andclipboard-win5.4.1 thatcargo auditwarns about. Both come only through gui-feature Tauri plugins, so they are warnings and outside cargo-deny's graph.🤖 Generated with Claude Code