|
| 1 | +# cargo-deny configuration. |
| 2 | +# |
| 3 | +# Scope: advisory + source-allowlist checks only. License and ban checks are |
| 4 | +# intentionally not enabled here so this config does not block builds on |
| 5 | +# unrelated policy decisions — tighten later if/when we want that coverage. |
| 6 | +# |
| 7 | +# Run locally: cargo deny check --config <repo-root>/deny.toml advisories sources |
| 8 | +# CI invocation: see .github/workflows/rust-ci.yml |
| 9 | + |
| 10 | +[graph] |
| 11 | +all-features = true |
| 12 | + |
| 13 | +[advisories] |
| 14 | +# RustSec advisory database. Vulnerabilities still fail the build by default; |
| 15 | +# yanked crates warn (the lockfile can lag a yank by hours). |
| 16 | +db-urls = ["https://github.com/rustsec/advisory-db"] |
| 17 | +yanked = "warn" |
| 18 | + |
| 19 | +# Pre-existing advisory backlog captured on 2026-05-19 across all four cargo |
| 20 | +# workspaces (lit-actions, lit-core, lit-api-server, rust_generator_and_deployer). |
| 21 | +# Every entry here should be triaged and either resolved (cargo update / dep |
| 22 | +# bump) or kept with explicit justification. Advisories published AFTER this |
| 23 | +# snapshot will NOT be in this list, so they will fail CI — that is the point. |
| 24 | +# |
| 25 | +# History: |
| 26 | +# - 2026-05-19: initial snapshot, 34 advisories. |
| 27 | +# - 2026-05-19: lockfile bumps via `cargo update -p` cleared RUSTSEC-2026-{0007, |
| 28 | +# 0037,0067,0068} (bytes / quinn-proto / tar / tar) across all workspaces, |
| 29 | +# and RUSTSEC-2026-0009 (time) in lit-core and lit-api-server. Picked up |
| 30 | +# RUSTSEC-2024-0388 (derivative unmaintained, transitive via ark-ff). The |
| 31 | +# time bump in lit-actions had to be reverted because `time --precise 0.3.47` |
| 32 | +# cascaded serde to 1.0.228, which broke compilation of `swc_config 0.1.15` |
| 33 | +# and `swc_common 0.37.5` (transitives via deno_ast → deno_runtime — they |
| 34 | +# re-export the removed `serde::__private` module). Real fix is bumping |
| 35 | +# deno_runtime; until then time stays at 0.3.44 in lit-actions and |
| 36 | +# RUSTSEC-2026-0009 stays in the ignore list. Net: 31 active. |
| 37 | +# |
| 38 | +# Suggested triage order: vulnerabilities > unsound > unmaintained. |
| 39 | +ignore = [ |
| 40 | + # ── vulnerabilities ─────────────────────────────────────────────────────── |
| 41 | + { id = "RUSTSEC-2023-0071", reason = "Marvin Attack timing sidechannel in rsa — transitive via ethers; no upstream fix" }, |
| 42 | + { id = "RUSTSEC-2025-0009", reason = "AES panic on overflow check — transitive; pre-existing" }, |
| 43 | + { id = "RUSTSEC-2026-0009", reason = "time DoS via stack exhaustion — still present in lit-actions (time 0.3.47 cascades serde 1.0.228 which breaks swc_config/swc_common from deno chain); cleared in lit-core and lit-api-server" }, |
| 44 | + { id = "RUSTSEC-2026-0049", reason = "rustls-webpki CRL distribution-point matching — pinned by rustls 0.21 via ethers chain" }, |
| 45 | + { id = "RUSTSEC-2026-0098", reason = "rustls-webpki URI name constraints — pinned by rustls 0.21 via ethers chain" }, |
| 46 | + { id = "RUSTSEC-2026-0099", reason = "rustls-webpki wildcard name constraints — pinned by rustls 0.21 via ethers chain" }, |
| 47 | + { id = "RUSTSEC-2026-0104", reason = "rustls-webpki CRL parsing panic — pinned by rustls 0.21 via ethers chain" }, |
| 48 | + { id = "RUSTSEC-2026-0118", reason = "hickory NSEC3 unbounded loop — no upstream fix yet" }, |
| 49 | + { id = "RUSTSEC-2026-0119", reason = "hickory DNS O(n^2) name compression — pinned by deno_runtime chain" }, |
| 50 | + |
| 51 | + # ── unsound ─────────────────────────────────────────────────────────────── |
| 52 | + { id = "RUSTSEC-2019-0036", reason = "failure type confusion — transitive; pre-existing" }, |
| 53 | + { id = "RUSTSEC-2021-0145", reason = "atty unaligned read — transitive; pre-existing" }, |
| 54 | + { id = "RUSTSEC-2026-0012", reason = "keccak ARMv8 asm backend — only triggers with opt-in feature; pre-existing" }, |
| 55 | + { id = "RUSTSEC-2026-0097", reason = "rand custom logger unsound — pre-existing" }, |
| 56 | + |
| 57 | + # ── unmaintained ────────────────────────────────────────────────────────── |
| 58 | + { id = "RUSTSEC-2020-0036", reason = "failure deprecated — transitive; pre-existing" }, |
| 59 | + { id = "RUSTSEC-2024-0370", reason = "proc-macro-error unmaintained — pre-existing" }, |
| 60 | + { id = "RUSTSEC-2024-0375", reason = "atty unmaintained — pre-existing" }, |
| 61 | + { id = "RUSTSEC-2024-0384", reason = "instant unmaintained — pre-existing" }, |
| 62 | + { id = "RUSTSEC-2024-0388", reason = "derivative unmaintained — transitive via ark-ff; surfaced after bytes/quinn/tar bumps refreshed the lockfile" }, |
| 63 | + { id = "RUSTSEC-2024-0436", reason = "paste unmaintained — pre-existing" }, |
| 64 | + { id = "RUSTSEC-2025-0010", reason = "ring <0.17 unmaintained — pre-existing" }, |
| 65 | + { id = "RUSTSEC-2025-0052", reason = "async-std discontinued — pre-existing" }, |
| 66 | + { id = "RUSTSEC-2025-0056", reason = "adler unmaintained, use adler2 — pre-existing" }, |
| 67 | + { id = "RUSTSEC-2025-0057", reason = "fxhash unmaintained — pre-existing" }, |
| 68 | + { id = "RUSTSEC-2025-0075", reason = "unic-char-range unmaintained — pre-existing" }, |
| 69 | + { id = "RUSTSEC-2025-0080", reason = "unic-common unmaintained — pre-existing" }, |
| 70 | + { id = "RUSTSEC-2025-0081", reason = "unic-char-property unmaintained — pre-existing" }, |
| 71 | + { id = "RUSTSEC-2025-0098", reason = "unic-ucd-version unmaintained — pre-existing" }, |
| 72 | + { id = "RUSTSEC-2025-0100", reason = "unic-ucd-ident unmaintained — pre-existing" }, |
| 73 | + { id = "RUSTSEC-2025-0134", reason = "rustls-pemfile unmaintained — pre-existing" }, |
| 74 | + { id = "RUSTSEC-2025-0141", reason = "bincode unmaintained — pre-existing" }, |
| 75 | + { id = "RUSTSEC-2026-0105", reason = "core2 unmaintained, all versions yanked — pre-existing" }, |
| 76 | +] |
| 77 | + |
| 78 | +[sources] |
| 79 | +# Block any non-crates.io registry and any git dep not on the explicit allow |
| 80 | +# list below. New git deps must be added here, which forces a review. |
| 81 | +unknown-registry = "deny" |
| 82 | +unknown-git = "deny" |
| 83 | +allow-registry = ["https://github.com/rust-lang/crates.io-index"] |
| 84 | +allow-git = [ |
| 85 | + "https://github.com/LIT-Protocol/bulletproofs", |
| 86 | + "https://github.com/Lit-Protocol/deno_core", |
| 87 | + "https://github.com/LIT-Protocol/env_logger", |
| 88 | + "https://github.com/LIT-Protocol/rust-ipfs-api", |
| 89 | + "https://github.com/LIT-Protocol/zerossl", |
| 90 | + "https://github.com/integer32llc/libffi-rs", |
| 91 | +] |
0 commit comments