deny.toml 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. # Supply-chain gates for the OAuth 2.1 authorization server (task 42).
  2. #
  3. # Ring-only TLS: `openssl-sys`, `aws-lc-sys`, and `native-tls` must never enter
  4. # the graph (see the `bans` deny list below). `cargo deny check` runs in CI.
  5. [advisories]
  6. db-urls = ["https://github.com/rustsec/advisory-db"]
  7. yanked = "deny"
  8. # RUSTSEC-2023-0071 (rsa Marvin timing): no patched release exists upstream
  9. # ("No safe upgrade is available"); this crate uses RSA for signature
  10. # verification only (JWK-selected `DecodingKey`), never RSA decryption, so
  11. # the padding-timing oracle does not apply. Re-evaluate when rsa ships a fix.
  12. # RUSTSEC-2026-0387 (crypto-bigint timing): patched only in crypto-bigint
  13. # >=0.7.6, which needs p256 0.14 via the still-unmerged jsonwebtoken bump
  14. # (Keats/jsonwebtoken#536); this is a real exposure on the ES256 signing path
  15. # (`src/jose/jwt_access.rs`), so drop the ignore as soon as jsonwebtoken
  16. # releases a p256 0.14 build rather than leaving it in place indefinitely.
  17. ignore = [
  18. { id = "RUSTSEC-2023-0071", reason = "unpatched upstream; RSA verify-only, never decryption" },
  19. { id = "RUSTSEC-2026-0387", reason = "unpatched in the p256 0.13 generation; fixed only in crypto-bigint >=0.7.6 via the unmerged jsonwebtoken p256 0.14 bump (Keats/jsonwebtoken#536); ES256 signing does run through it, so re-evaluate on that release" },
  20. { id = "RUSTSEC-2026-0374", reason = "unmaintained (no safe upgrade); basic-toml is a compile-time-only dep of the askama_derive proc macro, never in the runtime graph" },
  21. ]
  22. [bans]
  23. multiple-versions = "warn"
  24. wildcards = "deny"
  25. highlight = "all"
  26. # Ring-only TLS policy: no OpenSSL, no AWS-LC, no platform TLS anywhere in
  27. # the graph (main or dev). A duplicated dependency that pulls one of these
  28. # in fails CI until the duplicate is removed.
  29. deny = [
  30. { crate = "openssl-sys", reason = "ring-only TLS: no OpenSSL anywhere in the graph" },
  31. { crate = "aws-lc-sys", reason = "ring-only TLS: no AWS-LC anywhere in the graph" },
  32. { crate = "native-tls", reason = "ring-only TLS: no platform TLS anywhere in the graph" },
  33. ]
  34. [licenses]
  35. confidence-threshold = 0.93
  36. allow = [
  37. "MIT",
  38. "Apache-2.0",
  39. "ISC",
  40. "BSD-2-Clause",
  41. "BSD-3-Clause",
  42. "CC0-1.0",
  43. "BSL-1.0",
  44. "Zlib",
  45. "OpenSSL",
  46. "Unicode-3.0",
  47. "Unicode-DFS-2016",
  48. "MPL-2.0",
  49. # Mozilla root-store data (via webpki-roots); OSI-approved data license.
  50. "CDLA-Permissive-2.0",
  51. ]
  52. exceptions = []
  53. [sources]
  54. unknown-registry = "deny"
  55. unknown-git = "deny"
  56. allow-registry = ["https://github.com/rust-lang/crates.io-index"]