Repository navigation
Conversation
Move the server's p256 to 0.14 and verify JSON Web Tokens through jsonwebtoken's aws_lc_rs backend instead of rust_crypto, so the lock holds only crypto-bigint 0.7.6. aws-lc-rs was already in the lock through rustls, rustls-webpki and object_store.
RecommendationApprove. This pull request removes the cause of RUSTSEC-2026-0387. I found no blocking issue. WhyDependency Guard fails on The server had two edges into that crate. Data-token verification depends on What
The server source that verifies tokens is unchanged. ES256 data tokens use omnigraph/crates/omnigraph-server/Cargo.toml Lines 45 to 46 in 8c592db How this holds the contractInvariant 10 says the HTTP boundary resolves bearer tokens to actors. The client does not supply a trusted actor. This change does not add a second verifier, a new API, or a shadow source of truth. It selects a different implementation of the same two checks. The server still accepts two algorithms.
omnigraph/crates/omnigraph-server/src/data_tokens.rs Lines 205 to 227 in 8c592db omnigraph/crates/omnigraph-server/src/oidc_identity.rs Lines 180 to 196 in 8c592db omnigraph/crates/omnigraph-server/src/oidc_identity.rs Lines 308 to 340 in 8c592db
Impact and liabilityQuery rows, counts, column types, and errors do not change. A GQT case does not apply. The DST storage-cost table does not apply. No user document names This removes a vulnerable bigint from every workspace feature and target. The new
Six unused crates leave: Five similar advisory bumps would add more majors only while Other lock pull requestsThe open pull requests that change FindingsBlocking: none. Optional: none. The duplicate majors in the liability section are an accepted cost of this fix. I do not ask for an ignore entry or a further abstraction. ValidationBefore, on
After, on head
Exact-commit CI on this head also passed Test Workspace, Test omnigraph-server --features aws, clippy, rustfmt, the GQT jobs, DST, RustFS, Azurite, the V5 to V10 fence, and Storage Upgrade Compatibility. Devin Review skipped a full review because the trial has no credits. That check is not a review of this commit. LimitationsI did not rerun the integration test |
RUSTSEC-2026-0387 reports timing side channels in
crypto-bigint0.5.5. The Dependency Guard now fails on main and on every pull request, so nothing can pass the merge queue. The crate came in twice throughelliptic-curve0.13: the server's ownp2560.13 dependency, andjsonwebtoken'srust_cryptobackend throughp256andp3840.13. The patched line, 0.7.6, needselliptic-curve0.14.jsonwebtoken11.1.0 still pinsp2560.13, so a version bump alone cannot clear it.The server's
p256moves to 0.14. Its ES256 data-token verification compiles unchanged against it:VerifyingKey::from_public_key_pem,to_public_key_der,Signature::from_sliceandVerifier::verify.jsonwebtokenswitches from itsrust_cryptobackend toaws_lc_rs, which was already in the lock throughrustls,rustls-webpkiandobject_store. OIDC verification accepts RS256 only (oidc_identity.rs), andaws-lc-rsverifies RS256. The lock now holds onlycrypto-bigint0.7.6, and therust_cryptochain leaves with it:p384,ed25519-dalek,curve25519-dalekandfiat-crypto. Nodeny.tomlexemption is added.The data-token and OIDC library tests pass on this branch. They sign with test keys and verify through the production paths: key rotation, strict JOSE header and signature checks, signature headers that try to bypass the published keys, and deadlines that never slide.
cargo denyreports advisories, bans, licenses and sources ok.For review: the change to challenge is the backend switch. Every key and token the server accepted before must still verify. The tests above pin RS256 OIDC tokens and ES256 data tokens. Nothing in production signs with these crates; signing appears only in tests.