# cargo-deny v2 configuration for Pezkuwi SDK # https://embarkstudios.github.io/cargo-deny/ [graph] targets = [ { triple = "wasm32-unknown-unknown" }, { triple = "x86_64-unknown-linux-gnu" }, { triple = "x86_64-unknown-linux-musl" }, ] # all-features prevents krates 0.20+ from panicking with "unable to locate std" # on workspace crates that have a std feature but don't enable it by default. all-features = true # Advisory database - check for known vulnerabilities # In v2: all vulnerability/unsound/notice advisories automatically emit errors. # Use `ignore` to suppress specific advisories. [advisories] yanked = "warn" # All unmaintained crates are transitive upstream dependencies we cannot replace. # Track via quarterly review instead of blocking CI. unmaintained = "none" ignore = [ # ── wasmtime ────────────────────────────────────────────────────────────── # wasmtime is pinned at 37.x (the version sc-executor-wasmtime targets). Clearing # these needs wasmtime 42.0.2+ — a 5-major-version bump requiring cranelift updates # and executor API adaptation, so it is a dedicated, tested effort (issue #7), not a # drop-in bump; we will NOT destabilize the fund-critical executor on a whim. The # toolchain (now 1.96.0) no longer blocks it. Risk is contained regardless: these # CVEs only affect the Winch backend, Component Model, or 64-bit tables — none of # which PezkuwiChain's executor uses. "RUSTSEC-2026-0006", # wasmtime: segfault with f64.copysign on x86-64 "RUSTSEC-2026-0020", # wasmtime: WASI guest-controlled resource exhaustion "RUSTSEC-2026-0021", # wasmtime: panic in wasi:http/types.fields "RUSTSEC-2026-0085", # wasmtime: panic lifting flags component value "RUSTSEC-2026-0086", # wasmtime: host data leakage 64-bit tables + Winch "RUSTSEC-2026-0087", # wasmtime: segfault f64x2.splat on Cranelift x86-64 "RUSTSEC-2026-0088", # wasmtime: data leakage pooling allocator instances "RUSTSEC-2026-0089", # wasmtime: host panic table.fill with Winch "RUSTSEC-2026-0091", # wasmtime: OOB write transcoding component model strings "RUSTSEC-2026-0092", # wasmtime: panic transcoding misaligned UTF-16 strings "RUSTSEC-2026-0093", # wasmtime: heap OOB read UTF-16 to latin1+utf16 "RUSTSEC-2026-0094", # wasmtime: masked return value table.grow Winch "RUSTSEC-2026-0095", # wasmtime: Winch sandbox-escaping memory access "RUSTSEC-2026-0096", # wasmtime: miscompiled guest heap aarch64 Cranelift # ── memmap2 ─────────────────────────────────────────────────────────────── # Unsound unchecked pointer-offset in memory-mapping. Host-side only — memmap2 # is not reachable from the WASM runtime (no mmap in WASM), so it cannot affect # on-chain/fund logic. Transitive dep; no fixed release for the pinned versions. "RUSTSEC-2026-0186", # memmap2: unchecked pointer offset (unsound, host-side) # ── webpki ──────────────────────────────────────────────────────────────── # Name-constraints and CRL parsing bugs in transitive webpki dep. # We do not use CRLs or rely on certificate name constraints in our P2P/RPC stack. "RUSTSEC-2026-0098", # webpki: URI name constraints incorrectly accepted "RUSTSEC-2026-0099", # webpki: wildcard name constraints incorrectly accepted "RUSTSEC-2026-0104", # webpki: reachable panic in CRL parsing (onlySomeReasons BIT STRING) # ── git2 / libgit2 (build tooling only) ─────────────────────────────────── # Pulled by build-time tooling (wasm-builder / cargo metadata), NOT present in # the runtime WASM or the node consensus path. Track for upstream git2 bump. "RUSTSEC-2026-0183", # git2: potential UB in Remote::list() "RUSTSEC-2026-0184", # git2: potential UB in Signature from buffer-created BlameHunk # ── hickory DNS (node networking only) ──────────────────────────────────── # Transitive via libp2p DNS resolution. DoS on malformed/cross-zone responses. # Affects node networking availability only, not the runtime. Track upstream. "RUSTSEC-2026-0118", # hickory: NSEC3 closest-encloser proof unbounded loop "RUSTSEC-2026-0119", # hickory: O(n^2) name-compression CPU exhaustion # ── wasmtime (additional; see toolchain note above) ─────────────────────── "RUSTSEC-2026-0114", # wasmtime: panic allocating table exceeding host address space (64-bit tables; unused) ] # License compliance # In v2: all licenses are denied unless explicitly allowed. # Removed v1 fields: unlicensed, deny, copyleft, allow-osi-fsf-free, default [licenses] confidence-threshold = 0.8 allow = [ "Apache-2.0 WITH LLVM-exception", "Apache-2.0", "BSD-2-Clause", "BSD-3-Clause", "BSL-1.0", "CC0-1.0", "CDLA-Permissive-2.0", "GPL-3.0-only WITH Classpath-exception-2.0", "GPL-3.0-only", "GPL-3.0-or-later WITH Classpath-exception-2.0", "GPL-3.0-or-later", "ISC", "MIT", "MIT-0", "MPL-2.0", "NCSA", "OpenSSL", "Unicode-3.0", "Unicode-DFS-2016", "Unlicense", "Zlib", ] exceptions = [ # ring uses a custom ISC-style license { allow = ["OpenSSL"], name = "ring" }, ] [licenses.private] ignore = true # Banned crates and duplicate version detection [bans] multiple-versions = "warn" wildcards = "allow" highlight = "simplest-path" deny = [] skip = [] skip-tree = [] # Source origin checks [sources] unknown-registry = "warn" unknown-git = "warn" allow-registry = ["https://github.com/rust-lang/crates.io-index"] allow-git = [ # Our serde fork with wasm32v1-none target fix (pending upstream merge) "https://github.com/pezkuwichain/serde.git", ]