This commit is contained in:
Denis Pisarev 2026-04-08 13:42:17 +00:00 committed by GitHub
commit 12de0c828a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 86 additions and 0 deletions

View File

@ -179,6 +179,15 @@ jobs:
# End Run cargo fmt
# Run cargo deny (supply-chain: advisories, licenses, bans, sources)
# Only run on rust-toolchain channel — deny.toml pins the feature set.
- name: "cargo deny"
id: deny
if: ${{ !cancelled() && matrix.channel == 'rust-toolchain' }}
uses: EmbarkStudios/cargo-deny-action@3fd3802e88374d3fe9159b834c7714ec57d6c979 # v2
# End Run cargo deny
# Check for any previous failures, if there are stop, else continue.
# This is useful so all test/clippy/fmt actions are done, and they can all be addressed
- name: "Some checks failed"
@ -192,6 +201,7 @@ jobs:
TEST_POSTGRESQL: ${{ steps.test_postgresql.outcome }}
CLIPPY: ${{ steps.clippy.outcome }}
FMT: ${{ steps.formatting.outcome }}
DENY: ${{ steps.deny.outcome }}
run: |
echo "### :x: Checks Failed!" >> "${GITHUB_STEP_SUMMARY}"
echo "" >> "${GITHUB_STEP_SUMMARY}"
@ -205,6 +215,7 @@ jobs:
echo "|test (postgresql)|${TEST_POSTGRESQL}|" >> "${GITHUB_STEP_SUMMARY}"
echo "|clippy (sqlite,mysql,postgresql,enable_mimalloc,s3)|${CLIPPY}|" >> "${GITHUB_STEP_SUMMARY}"
echo "|fmt|${FMT}|" >> "${GITHUB_STEP_SUMMARY}"
echo "|cargo deny|${DENY}|" >> "${GITHUB_STEP_SUMMARY}"
echo "" >> "${GITHUB_STEP_SUMMARY}"
echo "Please check the failed jobs and fix where needed." >> "${GITHUB_STEP_SUMMARY}"
echo "" >> "${GITHUB_STEP_SUMMARY}"

75
deny.toml Normal file
View File

@ -0,0 +1,75 @@
# https://embarkstudios.github.io/cargo-deny/
[graph]
# Check the full feature set used by CI so all optional dependencies are included.
features = ["sqlite", "mysql", "postgresql", "enable_mimalloc", "s3"]
# =============================================================================
# Advisories — RustSec vulnerability and unmaintained crate database
# =============================================================================
[advisories]
ignore = [
# Marvin Attack: timing side-channel in the `rsa` crate (no fix available).
# Used only for JWT RS256 signing, not for network-facing RSA decryption,
# which limits exposure. Track: https://rustsec.org/advisories/RUSTSEC-2023-0071
{ id = "RUSTSEC-2023-0071", reason = "No upstream fix available; exposure is limited to JWT signing, not network-facing decryption." },
# `rustls-pemfile` v1.x is unmaintained (archived Aug 2025). It is a thin
# wrapper around rustls-pki-types and pulled in transitively via rustls 0.21.x.
# Removing it requires upstream crates to drop their rustls 0.21 dependency.
{ id = "RUSTSEC-2025-0134", reason = "Transitive via rustls 0.21.x compat chain; blocked on upstream upgrade." },
# CRL validation bug in rustls-webpki: fix requires >=0.103.10, but rustls-webpki
# 0.101.x is pinned by the rustls 0.21.x compatibility stack.
# Track upstream rustls upgrade to resolve both occurrences.
{ id = "RUSTSEC-2026-0049", reason = "rustls-webpki 0.101.x locked by rustls 0.21.x compat chain; track upstream rustls upgrade." },
]
# =============================================================================
# Licenses
# =============================================================================
[licenses]
# OSI-approved permissive licenses and weak copyleft licenses compatible with
# distributing vaultwarden (AGPL-3.0-only) as a Docker image.
allow = [
"0BSD",
"Apache-2.0",
"Apache-2.0 WITH LLVM-exception",
"BSD-1-Clause",
"BSD-2-Clause",
"BSD-3-Clause",
"BSL-1.0", # Boost Software License (ryu)
"CDLA-Permissive-2.0", # Community Data License Agreement (webpki-roots)
"ISC",
"LGPL-2.1-or-later", # r-efi (Windows-only UEFI crate; dynamically linked)
"MIT",
"MPL-2.0", # webauthn-rs crates (file-level copyleft, compatible)
"Unicode-3.0",
"Unlicense",
"Zlib",
]
[licenses.private]
# Skip license checks for unpublished workspace crates (vaultwarden, macros).
ignore = true
# =============================================================================
# Bans — duplicate versions and disallowed crates
# =============================================================================
[bans]
# Warn on duplicate versions; many arise from transitive deps and require
# upstream changes to resolve. Promote to "deny" once the dep tree stabilises.
multiple-versions = "warn"
# Warn on wildcard version requirements. "deny" would also flag internal
# workspace path dependencies (macros = { path = "./macros" }), which have
# no version specifier by design, so "warn" is used instead.
wildcards = "warn"
highlight = "all"
# =============================================================================
# Sources — only crates.io is an allowed registry
# =============================================================================
[sources]
unknown-registry = "deny"
unknown-git = "deny"
allow-registry = ["https://github.com/rust-lang/crates.io-index"]