Repository navigation
Conversation
Cargo.lock resolved aws-smithy-json 0.61.9 (via aws-sdk-s3 1.119.0) and 0.62.5 (via aws-config and the sso/ssooidc/sts clients). Both are in the range affected by GHSA-8ffr-xgwf-xj56 / CVE-2026-18140 (<= 0.62.6): uncontrolled recursion when skipping unknown keys in deeply nested JSON. 0.62.7 requires aws-smithy-runtime-api ^1.12.3, so the AWS SDK moves as a set to the newest releases that still build on our 1.91 MSRV (they declare rust-version 1.91.1; later releases need 1.94.1): aws-config 1.8.18, aws-sdk-s3 1.137.0 (which itself requires aws-smithy-json ^0.62.7), aws-sdk-sso 1.102.0, aws-sdk-ssooidc 1.104.0, aws-sdk-sts 1.107.0, aws-sigv4 1.4.5, and matching aws-smithy-* crates. aws-sigv4 1.4.5 moves to p256 0.13, which drops crypto-bigint 0.4.9 from the lockfile. Update the RUSTSEC-2026-0387 note in .cargo/audit.toml to match; the ignore is still needed for crypto-bigint 0.5.5. Lockfile and audit-config comment only; no manifest or source changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. Walkthrough
Merge Risk:
|
jatmn
left a comment
There was a problem hiding this comment.
🟢 Thanks for the contribution. I do not see any actionable issues from my review.
Reviewed head 6954f4c against merge base/current main 4d024e0.
Merge readiness
The branch is mergeable, with no target drift or conflicts. All 12 CI checks pass; CodeRabbit skipped this draft. The PR is draft and requires an approving review before proceeding through the repository's merge queue.
Findings
No actionable findings.
The lockfile contains only aws-smithy-json 0.62.7, the patched version identified by GHSA-8ffr-xgwf-xj56. Both affected resolutions are removed. The audit comment accurately describes the retained crypto-bigint 0.5.5 graph, without adding an ignore.
Scope and contract tracing
| Surface | Producer, consumer and lifecycle | Mutation / ordering / sibling result |
|---|---|---|
Cargo.lock JSON/AWS closure |
Manifests → locked graph → build → SDK client | Both affected JSON copies replaced; all added/removed packages and changed dependency edges inspected. |
| Tigris operations affected through SDK | Config loader → client → HEAD/PUT/GET/DELETE → RepoStore acquisition/publication | Application code unchanged. In-memory PUT retains checksum header behavior; GET collection precedes extraction; write-guard upload precedes unlock. Client construction and all direct storage callers checked. |
.cargo/audit.toml operator copy |
Resolved signing graph → two comment corrections → audit readers | Both changed comment lines agree with the graph; parsed suppression settings unchanged. No other in-diff operator-copy surface. |
| Build/test/release consumers | Locked restore → CI/MSRV/Docker → packaged binaries | No changed routes, records, tests, persistence format, or CI selection. No new application malformed-input boundary or shared-field matrix applies. |
Validation
Locally passed: locked full Cargo metadata, cargo +1.91 check --locked --offline --workspace --all-targets on Rust 1.91.1, formatting, and cargo audit 0.22.2 with a fresh advisory database and the repository configuration. Audit reports no unsuppressed vulnerabilities and 10 warnings. The dependency's 1.91.1 patch-level requirement already existed at the merge base.
A focused executable exercised the production JSON token skip API on a 64 KiB thread stack: nesting through 512 succeeds; 513 and 10,000 return the depth error without crashing. Inspected CI logs show stable and beta each passed 1,692 tests with four ignored; locked lint/MSRV/release checks and Docker version smoke pass.
No live S3/Tigris round trip was performed. Existing stalled-endpoint tests and upload counters do not establish provider interoperability; the SDK operation/default comparison and successful builds provide narrower evidence.
Primary review, two waves of two independent blind full-diff searches, a separate missing-contract search, candidate reconciliation, and intent/base/head/target attribution audit completed. Related dependency fixes #514/#455 are incorporated; overlapping storage PRs #285/#244 retain the vulnerable versions and do not supersede this change. There are no review threads or prior change requests on this PR; the relevant #514 audit-comment request is satisfied in current code.
There was a problem hiding this comment.
🟢 Approval recommended
No active review issues are reported for the AWS dependency update targeting the stack-exhaustion vulnerability.
No open issues 🎉
What changed in this PR
Updates the AWS dependency stack used by gitlawb-node’s S3/Tigris storage client to address the stack-exhaustion vulnerability in GHSA-8ffr-xgwf-xj56.
Changes:
- Replaces both vulnerable
aws-smithy-jsonversions with 0.62.7 and updates related AWS dependencies. - Updates transitive cryptography and checksum dependencies, removing older dependency versions.
- Corrects audit-ignore comments to reflect the remaining
crypto-bigintdependency paths; no source, manifest, or audit-policy changes.
| File | Description |
|---|---|
Cargo.lock |
Locks the patched JSON library and accompanying AWS dependency updates. |
.cargo/audit.toml |
Updates comments describing the retained crypto-bigint risk exception. |
Review effort: Balanced
beardthelion
left a comment
There was a problem hiding this comment.
Approving at 6954f4c. The lock now resolves a single aws-smithy-json, 0.62.7 (base had 0.61.9 and 0.62.5), cargo metadata --locked accepts it, and cargo audit exits 0.
crypto-bigint 0.5.5 is still reached through aws-sigv4 and elliptic-curve 0.13, so the RUSTSEC-2026-0387 ignore stays needed and the corrected comment matches the lock. The 1.91.1 rust-version on the new SDK crates is the same floor main already carried, and the MSRV job is green. The tigris test passes on this head. The real S3/Tigris path is untested, as the description says.
Non-blocking, for a follow-up: audit-schedule.yml has a drift guard for the hickory ignores but none for the crypto-bigint one.
|
@kevincodex1 still blocked by code quality check. :( |
Summary
Moves
aws-smithy-jsonto 0.62.7, the first release patched for GHSA-8ffr-xgwf-xj56 / CVE-2026-18140, a high-severity flaw: unbounded recursion when skipping unknown keys in deeply nested JSON exhausts the stack. Before this change,Cargo.lockresolved two vulnerable versions, 0.61.9 and 0.62.5.Motivation & context
Resolves Dependabot alert #16. No GitHub issue is filed for it.
cargo auditdoesn't catch this one because RustSec has no advisory for it, so Dependabot is the only check that flags it.Where the two vulnerable versions came from:
aws-sdk-s31.119.0 requiredaws-smithy-json ^0.61.9. No 0.61.x release has the fix.aws-config1.8.15 and the sso/ssooidc/sts clients required^0.62.5, locked at 0.62.5.Kind of change
What changed
Cargo.lock: 0.62.7 requiresaws-smithy-runtime-api ^1.12.3, so the AWS SDK moves together. Each crate goes to its newest release that still builds on our 1.91 MSRV; those declarerust-version = 1.91.1, which the MSRV job's1.91toolchain is, and later releases need 1.94.1:aws-smithy-json ^0.62.7.cargo/audit.toml: two comment lines in the RUSTSEC-2026-0387 entry corrected, because crypto-bigint 0.4.9 and the p256 0.11 path are gone. The ignore is still needed for crypto-bigint 0.5.5, through alloy and aws-sigv4.No manifest or source changes. Crate affected: gitlawb-node, through its
aws-sdk-s3/aws-configdependencies (Tigris storage client).How a reviewer can verify
All local results are on 6954f4c, the PR head:
cargo fmt --all -- --check: pass.cargo +1.91 check --locked --workspace --all-targets(rustc 1.91.1): pass.cargo clippy --locked --workspace --all-targets -- -D warnings: pass.cargo audit(0.22.2): exit 0, no vulnerabilities, 10 allowed warnings (down from 12).scripts/check-gitlawb-core-deps.sh: OK.cargo build --locked --release --workspace: pass.cargo test --locked --workspaceagainst a local Postgres 17: 1692 passed, 0 failed, 4 ignored.docker build .plus a--versionsmoke run: pass (gitlawb-node 0.7.1).Limitation: I didn't test against a real S3/Tigris endpoint. The S3 path (
git/tigris.rs: head/put/get object andaws_config::load_defaults) is covered only by compilation and the existing workspace tests.How the lockfile was produced, for anyone redoing it:
rust-versionto1.91.1.CARGO_RESOLVER_INCOMPATIBLE_RUST_VERSIONS=fallback cargo update -p aws-sdk-s3 -p aws-config.Cargo.toml.cargo metadata --lockedaccepts the lockfile without changing it.Before you request review
cargo test --workspacepasses locallycargo fmt --allandcargo clippy --workspace --all-targets -- -D warningsare cleanfeat(...),fix(...),docs(...)).env.exampleupdated if behavior or config changed (or N/A)🤖 Generated with Claude Code
Summary by CodeRabbit