Advisories: nightly check failed (2026-10-24) #1

Open
opened 2026-10-19 13:43:47 +00:00 by forgejo-actions · 0 comments

Nightly advisories run 173 on 4a7c29d6c0.

cargo deny check advisories (root, chatmail, desktop)

==== cargo deny root (Cargo.toml, deny.toml): check advisories
error[vulnerability]: Multiple timing variability issues in operations intended to be constant-time
    ┌─ /workspace/exo/reed/Cargo.lock:109:1
    │
109 │ crypto-bigint 0.5.5 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
    │
    ├ ID: RUSTSEC-2026-0387
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0387
    ├ ## Summary
      
      Several operations intended to be constant-time could execute secret-dependent
      branches, depending on the compiler and target CPU. These include subtraction,
      zero counting, division, and Montgomery multiplication.
      
      Additionally, `UintRef` equality could terminate at the first unequal limb,
      and `BoxedMontyForm::invert` branched on whether an inverse exists.
      
      ## Impact
      
      Applications using affected operations on secret integers may leak information
      through timing or microarchitectural side channels. This includes information
      about intermediate arithmetic values, matching limbs, and invertibility.
      
      Such leakage could potentially enable recovery of cryptographic secrets.
      Practical exploitability depends on the downstream algorithm, compiler, target
      CPU, and an attacker's ability to observe the side channel.
      
      ## Resolution
      
      Upgrade to v0.7.6, which removes the identified branches, updates `ctutils` to
      include its constant-time fixes, and adds BINSEC-based regression checks using
      `cargo checkct` for arithmetic on multiple targets.
    ├ Announcement: https://github.com/RustCrypto/crypto-bigint/pull/1365
    ├ Solution: Upgrade to >=0.7.6 (try `cargo update -p crypto-bigint`)
    ├ crypto-bigint v0.5.5
      └── elliptic-curve v0.13.8
          ├── ecdsa v0.16.9
          │   ├── k256 v0.13.4
          │   │   └── reed-nostr v0.5.0-rc1
          │   │       ├── reed-core v0.5.0-rc1
          │   │       │   ├── (dev) reed-bearer v0.5.0-rc1
          │   │       │   │   ├── reed-bearer-lora v0.5.0-rc1
          │   │       │   │   │   ├── reed-cli v0.5.0-rc1
          │   │       │   │   │   ├── reed-conformance v0.5.0-rc1
          │   │       │   │   │   ├── reed-core v0.5.0-rc1 (*)
          │   │       │   │   │   ├── (dev) reed-mesh-client v0.5.0-rc1
          │   │       │   │   │   │   ├── reed-core v0.5.0-rc1 (*)
          │   │       │   │   │   │   └── reed-property v0.5.0-rc1
          │   │       │   │   │   │       ├── (dev) reed-conformance v0.5.0-rc1 (*)
          │   │       │   │   │   │       └── reed-ct-bench v0.5.0-rc1
          │   │       │   │   │   └── reed-property v0.5.0-rc1 (*)
          │   │       │   │   ├── reed-conformance v0.5.0-rc1 (*)
          │   │       │   │   ├── (dev) reed-core v0.5.0-rc1 (*)
          │   │       │   │   ├── reed-discovery v0.5.0-rc1
          │   │       │   │   │   ├── reed-cli v0.5.0-rc1 (*)
          │   │       │   │   │   ├── reed-conformance v0.5.0-rc1 (*)
          │   │       │   │   │   ├── reed-core v0.5.0-rc1 (*)
          │   │       │   │   │   ├── reed-property v0.5.0-rc1 (*)
          │   │       │   │   │   └── (dev) reed-relay v0.5.0-rc1
          │   │       │   │   │       ├── (dev) reed-cli v0.5.0-rc1 (*)
          │   │       │   │   │       ├── reed-conformance v0.5.0-rc1 (*)
          │   │       │   │   │       ├── reed-property v0.5.0-rc1 (*)
          │   │       │   │   │       └── (dev) reed-relay v0.5.0-rc1 (*)
          │   │       │   │   ├── reed-property v0.5.0-rc1 (*)
          │   │       │   │   ├── (dev) reed-relay v0.5.0-rc1 (*)
          │   │       │   │   └── reed-sim v0.5.0-rc1
          │   │       │   ├── reed-cli v0.5.0-rc1 (*)
          │   │       │   ├── reed-conformance v0.5.0-rc1 (*)
          │   │       │   ├── reed-ffi v0.5.0-rc1
          │   │       │   ├── (dev) reed-gmessages v0.5.0-rc1
          │   │       │   ├── reed-image v0.5.0-rc1
          │   │       │   │   └── (dev) reed-conformance v0.5.0-rc1 (*)
          │   │       │   ├── reed-property v0.5.0-rc1 (*)
          │   │       │   ├── reed-sim v0.5.0-rc1 (*)
          │   │       │   ├── reed-voice v0.5.0-rc1
          │   │       │   └── reed-wasm v0.5.0-rc1
          │   │       └── reed-property v0.5.0-rc1 (*)
          │   ├── p256 v0.13.2
          │   │   ├── reed-conformance v0.5.0-rc1 (*)
          │   │   ├── reed-relay v0.5.0-rc1 (*)
          │   │   └── rustls-rustcrypto v0.0.2-alpha
          │   │       ├── reed-cli v0.5.0-rc1 (*)
          │   │       ├── reed-relay v0.5.0-rc1 (*)
          │   │       ├── reed-smptls v0.5.0-rc1
          │   │       │   ├── reed-cli v0.5.0-rc1 (*)
          │   │       │   └── reed-ffi v0.5.0-rc1 (*)
          │   │       └── reed-tor v0.5.0-rc1
          │   │           ├── reed-cli v0.5.0-rc1 (*)
          │   │           ├── reed-ffi v0.5.0-rc1 (*)
          │   │           └── reed-smptls v0.5.0-rc1 (*)
          │   ├── p384 v0.13.1
          │   │   └── rustls-rustcrypto v0.0.2-alpha (*)
          │   └── rustls-rustcrypto v0.0.2-alpha (*)
          ├── k256 v0.13.4 (*)
          ├── p256 v0.13.2 (*)
          ├── p384 v0.13.1 (*)
          ├── primeorder v0.13.6
          │   ├── p256 v0.13.2 (*)
          │   └── p384 v0.13.1 (*)
          └── voprf v0.5.0
              ├── reed-bearer v0.5.0-rc1 (*)
              ├── reed-discovery v0.5.0-rc1 (*)
              └── reed-relay v0.5.0-rc1 (*)

error[vulnerability]: Non-constant-time mask generation and `u128` comparisons
    ┌─ /workspace/exo/reed/Cargo.lock:117:1
    │
117 │ ctutils 0.4.2 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
    │
    ├ ID: RUSTSEC-2026-0385
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0385
    ├ ## Summary
      
      The `ctutils::Choice` type has mask generation functions for each unsigned
      integer size (`u8`, `u16`, `u32`, `u64`, `u128`). These are `const fn` and
      therefore can't reuse the `asm!`-backed mask generation in the `cmov` crate
      that's otherwise used to ensure constant-time.
      
      In releases prior to v0.4.4, the generated code from these functions could
      include a branch on commonly used platforms. This has been corrected in this
      release and now verified on several platforms using BINSEC.
      
      Additionally, `u128` comparison operations provided via `ctutils::Choice` and
      intended to work in constant-time were generating branches on 32-bit targets.
      This has been resolved via a special case implementation of these functions
      for such targets.
      
      ## Impact
      
      Branch instructions on secret values can potentially leak such values via
      covert channels. This can enable attackers to potentially recover such secrets.
      
      ## Resolution
      
      This has been resolved by calling `Choice::to_u8()` when generating the mask,
      which in turn uses `black_box` as an optimization barrier. Verification that
      this resulted in the desired change in the generated assembly across a variety
      of target CPU architectures was performed by BINSEC, which now runs
      automatically in CI using `cargo checkct`.
    ├ Announcement: https://github.com/RustCrypto/utils/pull/1569
    ├ Solution: Upgrade to >=0.4.4 (try `cargo update -p ctutils`)
    ├ ctutils v0.4.2
      ├── digest v0.11.3
      │   ├── blake2 v0.11.0
      │   │   └── reed-bramble v0.5.0-rc1
      │   │       ├── reed-core v0.5.0-rc1
      │   │       │   ├── (dev) reed-bearer v0.5.0-rc1
      │   │       │   │   ├── reed-bearer-lora v0.5.0-rc1
      │   │       │   │   │   ├── reed-cli v0.5.0-rc1
      │   │       │   │   │   ├── reed-conformance v0.5.0-rc1
      │   │       │   │   │   ├── reed-core v0.5.0-rc1 (*)
      │   │       │   │   │   ├── (dev) reed-mesh-client v0.5.0-rc1
      │   │       │   │   │   │   ├── reed-core v0.5.0-rc1 (*)
      │   │       │   │   │   │   └── reed-property v0.5.0-rc1
      │   │       │   │   │   │       ├── (dev) reed-conformance v0.5.0-rc1 (*)
      │   │       │   │   │   │       └── reed-ct-bench v0.5.0-rc1
      │   │       │   │   │   └── reed-property v0.5.0-rc1 (*)
      │   │       │   │   ├── reed-conformance v0.5.0-rc1 (*)
      │   │       │   │   ├── (dev) reed-core v0.5.0-rc1 (*)
      │   │       │   │   ├── reed-discovery v0.5.0-rc1
      │   │       │   │   │   ├── reed-cli v0.5.0-rc1 (*)
      │   │       │   │   │   ├── reed-conformance v0.5.0-rc1 (*)
      │   │       │   │   │   ├── reed-core v0.5.0-rc1 (*)
      │   │       │   │   │   ├── reed-property v0.5.0-rc1 (*)
      │   │       │   │   │   └── (dev) reed-relay v0.5.0-rc1
      │   │       │   │   │       ├── (dev) reed-cli v0.5.0-rc1 (*)
      │   │       │   │   │       ├── reed-conformance v0.5.0-rc1 (*)
      │   │       │   │   │       ├── reed-property v0.5.0-rc1 (*)
      │   │       │   │   │       └── (dev) reed-relay v0.5.0-rc1 (*)
      │   │       │   │   ├── reed-property v0.5.0-rc1 (*)
      │   │       │   │   ├── (dev) reed-relay v0.5.0-rc1 (*)
      │   │       │   │   └── reed-sim v0.5.0-rc1
      │   │       │   ├── reed-cli v0.5.0-rc1 (*)
      │   │       │   ├── reed-conformance v0.5.0-rc1 (*)
      │   │       │   ├── reed-ffi v0.5.0-rc1
      │   │       │   ├── (dev) reed-gmessages v0.5.0-rc1
      │   │       │   ├── reed-image v0.5.0-rc1
      │   │       │   │   └── (dev) reed-conformance v0.5.0-rc1 (*)
      │   │       │   ├── reed-property v0.5.0-rc1 (*)
      │   │       │   ├── reed-sim v0.5.0-rc1 (*)
      │   │       │   ├── reed-voice v0.5.0-rc1
      │   │       │   └── reed-wasm v0.5.0-rc1
      │   │       ├── reed-property v0.5.0-rc1 (*)
      │   │       └── (dev) reed-tor v0.5.0-rc1
      │   │           ├── reed-cli v0.5.0-rc1 (*)
      │   │           ├── reed-ffi v0.5.0-rc1 (*)
      │   │           └── reed-smptls v0.5.0-rc1
      │   │               ├── reed-cli v0.5.0-rc1 (*)
      │   │               └── reed-ffi v0.5.0-rc1 (*)
      │   ├── sha1 v0.11.0
      │   │   └── tungstenite v0.30.0
      │   │       └── tokio-tungstenite v0.30.0
      │   │           ├── reed-cli v0.5.0-rc1 (*)
      │   │           ├── reed-relay v0.5.0-rc1 (*)
      │   │           └── reed-tor v0.5.0-rc1 (*)
      │   ├── sha3 v0.11.0
      │   │   └── ml-kem v0.3.2
      │   │       ├── reed-conformance v0.5.0-rc1 (*)
      │   │       └── (dev) reed-crypto v0.5.0-rc1
      │   │           ├── reed-bearer v0.5.0-rc1 (*)
      │   │           ├── reed-bearer-lora v0.5.0-rc1 (*)
      │   │           ├── reed-bramble v0.5.0-rc1 (*)
      │   │           ├── reed-conformance v0.5.0-rc1 (*)
      │   │           ├── reed-core v0.5.0-rc1 (*)
      │   │           ├── reed-ct-bench v0.5.0-rc1 (*)
      │   │           ├── reed-discovery v0.5.0-rc1 (*)
      │   │           ├── reed-interop v0.5.0-rc1
      │   │           │   ├── reed-bramble v0.5.0-rc1 (*)
      │   │           │   ├── reed-chatmail v0.5.0-rc1
      │   │           │   │   └── reed-cli v0.5.0-rc1 (*)
      │   │           │   ├── reed-cli v0.5.0-rc1 (*)
      │   │           │   ├── reed-core v0.5.0-rc1 (*)
      │   │           │   ├── reed-gmessages v0.5.0-rc1 (*)
      │   │           │   ├── reed-interop-tests v0.5.0-rc1
      │   │           │   ├── reed-mesh-client v0.5.0-rc1 (*)
      │   │           │   ├── reed-nostr v0.5.0-rc1
      │   │           │   │   ├── reed-core v0.5.0-rc1 (*)
      │   │           │   │   └── reed-property v0.5.0-rc1 (*)
      │   │           │   ├── reed-property v0.5.0-rc1 (*)
      │   │           │   ├── reed-rcs v0.5.0-rc1
      │   │           │   │   └── reed-property v0.5.0-rc1 (*)
      │   │           │   └── reed-simplex v0.5.0-rc1
      │   │           │       ├── reed-core v0.5.0-rc1 (*)
      │   │           │       └── reed-property v0.5.0-rc1 (*)
      │   │           ├── reed-kani v0.5.0-rc1
      │   │           ├── reed-mesh-client v0.5.0-rc1 (*)
      │   │           ├── reed-nostr v0.5.0-rc1 (*)
      │   │           ├── reed-property v0.5.0-rc1 (*)
      │   │           ├── reed-proto v0.5.0-rc1
      │   │           │   ├── reed-bearer v0.5.0-rc1 (*)
      │   │           │   ├── reed-bearer-lora v0.5.0-rc1 (*)
      │   │           │   ├── reed-bramble v0.5.0-rc1 (*)
      │   │           │   ├── reed-cli v0.5.0-rc1 (*)
      │   │           │   ├── reed-conformance v0.5.0-rc1 (*)
      │   │           │   ├── reed-core v0.5.0-rc1 (*)
      │   │           │   ├── reed-ct-bench v0.5.0-rc1 (*)
      │   │           │   ├── reed-discovery v0.5.0-rc1 (*)
      │   │           │   ├── reed-ffi v0.5.0-rc1 (*)
      │   │           │   ├── reed-image v0.5.0-rc1 (*)
      │   │           │   ├── reed-interop v0.5.0-rc1 (*)
      │   │           │   ├── reed-kani v0.5.0-rc1 (*)
      │   │           │   ├── reed-mesh-client v0.5.0-rc1 (*)
      │   │           │   ├── reed-nostr v0.5.0-rc1 (*)
      │   │           │   ├── reed-property v0.5.0-rc1 (*)
      │   │           │   ├── reed-ratchet-ref v0.5.0-rc1
      │   │           │   │   └── reed-property v0.5.0-rc1 (*)
      │   │           │   ├── reed-rcs v0.5.0-rc1 (*)
      │   │           │   ├── reed-relay v0.5.0-rc1 (*)
      │   │           │   ├── reed-session v0.5.0-rc1
      │   │           │   │   ├── reed-conformance v0.5.0-rc1 (*)
      │   │           │   │   ├── reed-core v0.5.0-rc1 (*)
      │   │           │   │   ├── reed-ct-bench v0.5.0-rc1 (*)
      │   │           │   │   ├── reed-ffi v0.5.0-rc1 (*)
      │   │           │   │   ├── reed-kani v0.5.0-rc1 (*)
      │   │           │   │   ├── reed-property v0.5.0-rc1 (*)
      │   │           │   │   └── reed-wasm v0.5.0-rc1 (*)
      │   │           │   ├── reed-sim v0.5.0-rc1 (*)
      │   │           │   ├── reed-simplex v0.5.0-rc1 (*)
      │   │           │   ├── reed-tor v0.5.0-rc1 (*)
      │   │           │   ├── reed-voice v0.5.0-rc1 (*)
      │   │           │   └── reed-wasm v0.5.0-rc1 (*)
      │   │           ├── reed-ratchet-ref v0.5.0-rc1 (*)
      │   │           ├── reed-relay v0.5.0-rc1 (*)
      │   │           ├── reed-session v0.5.0-rc1 (*)
      │   │           ├── reed-simplex v0.5.0-rc1 (*)
      │   │           ├── reed-store v0.5.0-rc1
      │   │           │   ├── (dev) reed-bearer v0.5.0-rc1 (*)
      │   │           │   ├── reed-conformance v0.5.0-rc1 (*)
      │   │           │   ├── reed-core v0.5.0-rc1 (*)
      │   │           │   ├── reed-ffi v0.5.0-rc1 (*)
      │   │           │   ├── (dev) reed-gmessages v0.5.0-rc1 (*)
      │   │           │   ├── reed-property v0.5.0-rc1 (*)
      │   │           │   ├── reed-sim v0.5.0-rc1 (*)
      │   │           │   ├── (dev) reed-store-sqlite v0.5.0-rc1
      │   │           │   │   ├── reed-cli v0.5.0-rc1 (*)
      │   │           │   │   └── reed-ffi v0.5.0-rc1 (*)
      │   │           │   └── reed-wasm v0.5.0-rc1 (*)
      │   │           └── reed-wasm v0.5.0-rc1 (*)
      │   └── sha3 v0.12.0
      │       └── derive-deftly-macros v1.11.5
      │           └── derive-deftly v1.11.5
      │               ├── arti-client v0.46.0
      │               │   └── reed-tor v0.5.0-rc1 (*)
      │               ├── pwd-grp v1.0.2
      │               │   └── fs-mistrust v0.15.1
      │               │       ├── arti-client v0.46.0 (*)
      │               │       ├── reed-tor v0.5.0-rc1 (*)
      │               │       ├── tor-config v0.46.0
      │               │       │   ├── arti-client v0.46.0 (*)
      │               │       │   ├── reed-tor v0.5.0-rc1 (*)
      │               │       │   ├── tor-chanmgr v0.46.0
      │               │       │   │   ├── arti-client v0.46.0 (*)
      │               │       │   │   ├── tor-circmgr v0.46.0
      │               │       │   │   │   ├── arti-client v0.46.0 (*)
      │               │       │   │   │   ├── tor-dirclient v0.46.0
      │               │       │   │   │   │   ├── tor-dirmgr v0.46.0
      │               │       │   │   │   │   │   └── arti-client v0.46.0 (*)
      │               │       │   │   │   │   ├── tor-hsclient v0.46.0
      │               │       │   │   │   │   │   ├── arti-client v0.46.0 (*)
      │               │       │   │   │   │   │   └── reed-tor v0.5.0-rc1 (*)
      │               │       │   │   │   │   └── tor-hsservice v0.46.0
      │               │       │   │   │   │       ├── arti-client v0.46.0 (*)
      │               │       │   │   │   │       └── reed-tor v0.5.0-rc1 (*)
      │               │       │   │   │   ├── tor-dirmgr v0.46.0 (*)
      │               │       │   │   │   ├── tor-hsclient v0.46.0 (*)
      │               │       │   │   │   └── tor-hsservice v0.46.0 (*)
      │               │       │   │   └── tor-ptmgr v0.46.0
      │               │       │   │       └── arti-client v0.46.0 (*)
      │               │       │   ├── tor-circmgr v0.46.0 (*)
      │               │       │   ├── tor-dircommon v0.46.0
      │               │       │   │   ├── arti-client v0.46.0 (*)
      │               │       │   │   ├── tor-circmgr v0.46.0 (*)
      │               │       │   │   ├── tor-dirmgr v0.46.0 (*)
      │               │       │   │   └── tor-guardmgr v0.46.0
      │               │       │   │       ├── arti-client v0.46.0 (*)
      │               │       │   │       ├── tor-circmgr v0.46.0 (*)
      │               │       │   │       └── tor-dirmgr v0.46.0 (*)
      │               │       │   ├── tor-dirmgr v0.46.0 (*)
      │               │       │   ├── tor-guardmgr v0.46.0 (*)
      │               │       │   ├── tor-hsclient v0.46.0 (*)
      │               │       │   ├── tor-hsservice v0.46.0 (*)
      │               │       │   ├── tor-keymgr v0.46.0
      │               │       │   │   ├── arti-client v0.46.0 (*)
      │               │       │   │   ├── reed-tor v0.5.0-rc1 (*)
      │               │       │   │   ├── tor-chanmgr v0.46.0 (*)
      │               │       │   │   ├── tor-hsclient v0.46.0 (*)
      │               │       │   │   └── tor-hsservice v0.46.0 (*)
      │               │       │   ├── tor-linkspec v0.46.0
      │               │       │   │   ├── arti-client v0.46.0 (*)
      │               │       │   │   ├── tor-cell v0.46.0
      │               │       │   │   │   ├── reed-tor v0.5.0-rc1 (*)
      │               │       │   │   │   ├── tor-chanmgr v0.46.0 (*)
      │               │       │   │   │   ├── tor-circmgr v0.46.0 (*)
      │               │       │   │   │   ├── tor-hsclient v0.46.0 (*)
      │               │       │   │   │   ├── tor-hsservice v0.46.0 (*)
      │               │       │   │   │   ├── tor-netdoc v0.46.0
      │               │       │   │   │   │   ├── arti-client v0.46.0 (*)
      │               │       │   │   │   │   ├── tor-circmgr v0.46.0 (*)
      │               │       │   │   │   │   ├── tor-consdiff v0.46.0
      │               │       │   │   │   │   │   └── tor-dirmgr v0.46.0 (*)
      │               │       │   │   │   │   ├── tor-dirclient v0.46.0 (*)
      │               │       │   │   │   │   ├── tor-dircommon v0.46.0 (*)
      │               │       │   │   │   │   ├── tor-dirmgr v0.46.0 (*)
      │               │       │   │   │   │   ├── tor-guardmgr v0.46.0 (*)
      │               │       │   │   │   │   ├── tor-hsclient v0.46.0 (*)
      │               │       │   │   │   │   ├── tor-hsservice v0.46.0 (*)
      │               │       │   │   │   │   ├── tor-netdir v0.46.0
      │               │       │   │   │   │   │   ├── arti-client v0.46.0 (*)
      │               │       │   │   │   │   │   ├── tor-chanmgr v0.46.0 (*)
      │               │       │   │   │   │   │   ├── tor-circmgr v0.46.0 (*)
      │               │       │   │   │   │   │   ├── tor-dirmgr v0.46.0 (*)
      │               │       │   │   │   │   │   ├── tor-guardmgr v0.46.0 (*)
      │               │       │   │   │   │   │   ├── tor-hsclient v0.46.0 (*)
      │               │       │   │   │   │   │   ├── tor-hsservice v0.46.0 (*)
      │               │       │   │   │   │   │   └── tor-relay-selection v0.46.0
      │               │       │   │   │   │   │       ├── tor-circmgr v0.46.0 (*)
      │               │       │   │   │   │   │       ├── tor-guardmgr v0.46.0 (*)
      │               │       │   │   │   │   │       └── tor-hsservice v0.46.0 (*)
      │               │       │   │   │   │   └── tor-relay-selection v0.46.0 (*)
      │               │       │   │   │   └── tor-proto v0.46.0
      │               │       │   │   │       ├── arti-client v0.46.0 (*)
      │               │       │   │   │       ├── reed-tor v0.5.0-rc1 (*)
      │               │       │   │   │       ├── tor-chanmgr v0.46.0 (*)
      │               │       │   │   │       ├── tor-circmgr v0.46.0 (*)
      │               │       │   │   │       ├── tor-dirclient v0.46.0 (*)
      │               │       │   │   │       ├── tor-dirmgr v0.46.0 (*)
      │               │       │   │   │       ├── tor-guardmgr v0.46.0 (*)
      │               │       │   │   │       ├── tor-hsclient v0.46.0 (*)
      │               │       │   │   │       ├── tor-hsservice v0.46.0 (*)
      │               │       │   │   │       └── tor-ptmgr v0.46.0 (*)
      │               │       │   │   ├── tor-chanmgr v0.46.0 (*)
      │               │       │   │   ├── tor-circmgr v0.46.0 (*)
      │               │       │   │   ├── tor-dirclient v0.46.0 (*)
      │               │       │   │   ├── tor-dircommon v0.46.0 (*)
      │               │       │   │   ├── tor-guardmgr v0.46.0 (*)
      │               │       │   │   ├── tor-hsclient v0.46.0 (*)
      │               │       │   │   ├── tor-hsservice v0.46.0 (*)
      │               │       │   │   ├── tor-netdir v0.46.0 (*)
      │               │       │   │   ├── tor-netdoc v0.46.0 (*)
      │               │       │   │   ├── tor-proto v0.46.0 (*)
      │               │       │   │   ├── tor-ptmgr v0.46.0 (*)
      │               │       │   │   └── tor-relay-selection v0.46.0 (*)
      │               │       │   ├── tor-memquota v0.46.0
      │               │       │   │   ├── arti-client v0.46.0 (*)
      │               │       │   │   ├── tor-cell v0.46.0 (*)
      │               │       │   │   ├── tor-chanmgr v0.46.0 (*)
      │               │       │   │   ├── tor-circmgr v0.46.0 (*)
      │               │       │   │   ├── tor-hsclient v0.46.0 (*)
      │               │       │   │   ├── tor-hscrypto v0.46.0
      │               │       │   │   │   ├── arti-client v0.46.0 (*)
      │               │       │   │   │   ├── reed-tor v0.5.0-rc1 (*)
      │               │       │   │   │   ├── tor-cell v0.46.0 (*)
      │               │       │   │   │   ├── tor-dirclient v0.46.0 (*)
      │               │       │   │   │   ├── tor-hsclient v0.46.0 (*)
      │               │       │   │   │   ├── tor-hsservice v0.46.0 (*)
      │               │       │   │   │   ├── tor-keymgr v0.46.0 (*)
      │               │       │   │   │   ├── tor-netdir v0.46.0 (*)
      │               │       │   │   │   ├── tor-netdoc v0.46.0 (*)
      │               │       │   │   │   └── tor-proto v0.46.0 (*)
      │               │       │   │   ├── tor-linkspec v0.46.0 (*)
      │               │       │   │   ├── tor-proto v0.46.0 (*)
      │               │       │   │   └── tor-units v0.46.0
      │               │       │   │       ├── tor-cell v0.46.0 (*)
      │               │       │   │       ├── tor-chanmgr v0.46.0 (*)
      │               │       │   │       ├── tor-circmgr v0.46.0 (*)
      │               │       │   │       ├── tor-guardmgr v0.46.0 (*)
      │               │       │   │       ├── tor-hscrypto v0.46.0 (*)
      │               │       │   │       ├── tor-netdir v0.46.0 (*)
      │               │       │   │       ├── tor-netdoc v0.46.0 (*)
      │               │       │   │       └── tor-proto v0.46.0 (*)
      │               │       │   ├── tor-proto v0.46.0 (*)
      │               │       │   └── tor-ptmgr v0.46.0 (*)
      │               │       ├── tor-dirmgr v0.46.0 (*)
      │               │       ├── tor-hsservice v0.46.0 (*)
      │               │       ├── tor-keymgr v0.46.0 (*)
      │               │       ├── tor-persist v0.46.0
      │               │       │   ├── arti-client v0.46.0 (*)
      │               │       │   ├── tor-circmgr v0.46.0 (*)
      │               │       │   ├── tor-dirmgr v0.46.0 (*)
      │               │       │   ├── tor-guardmgr v0.46.0 (*)
      │               │       │   ├── tor-hsclient v0.46.0 (*)
      │               │       │   ├── tor-hsservice v0.46.0 (*)
      │               │       │   └── tor-keymgr v0.46.0 (*)
      │               │       └── tor-ptmgr v0.46.0 (*)
      │               ├── tor-async-utils v0.46.0
      │               │   ├── arti-client v0.46.0 (*)
      │               │   ├── tor-chanmgr v0.46.0 (*)
      │               │   ├── tor-circmgr v0.46.0 (*)
      │               │   ├── tor-dirmgr v0.46.0 (*)
      │               │   ├── tor-guardmgr v0.46.0 (*)
      │               │   ├── tor-hsclient v0.46.0 (*)
      │               │   ├── tor-hsservice v0.46.0 (*)
      │               │   ├── tor-memquota v0.46.0 (*)
      │               │   ├── tor-persist v0.46.0 (*)
      │               │   ├── tor-proto v0.46.0 (*)
      │               │   └── tor-ptmgr v0.46.0 (*)
      │               ├── tor-basic-utils v0.46.0
      │               │   ├── arti-client v0.46.0 (*)
      │               │   ├── tor-async-utils v0.46.0 (*)
      │               │   ├── tor-cell v0.46.0 (*)
      │               │   ├── tor-chanmgr v0.46.0 (*)
      │               │   ├── tor-circmgr v0.46.0 (*)
      │               │   ├── tor-config v0.46.0 (*)
      │               │   ├── tor-dircommon v0.46.0 (*)
      │               │   ├── tor-dirmgr v0.46.0 (*)
      │               │   ├── tor-guardmgr v0.46.0 (*)
      │               │   ├── tor-hsclient v0.46.0 (*)
      │               │   ├── tor-hscrypto v0.46.0 (*)
      │               │   ├── tor-hsservice v0.46.0 (*)
      │               │   ├── tor-keymgr v0.46.0 (*)
      │               │   ├── tor-linkspec v0.46.0 (*)
      │               │   ├── tor-memquota v0.46.0 (*)
      │               │   ├── tor-netdir v0.46.0 (*)
      │               │   ├── tor-netdoc v0.46.0 (*)
      │               │   ├── tor-persist v0.46.0 (*)
      │               │   ├── tor-proto v0.46.0 (*)
      │               │   ├── tor-protover v0.46.0
      │               │   │   ├── arti-client v0.46.0 (*)
      │               │   │   ├── tor-cell v0.46.0 (*)
      │               │   │   ├── tor-circmgr v0.46.0 (*)
      │               │   │   ├── tor-dirmgr v0.46.0 (*)
      │               │   │   ├── tor-guardmgr v0.46.0 (*)
      │               │   │   ├── tor-hsclient v0.46.0 (*)
      │               │   │   ├── tor-hsservice v0.46.0 (*)
      │               │   │   ├── tor-linkspec v0.46.0 (*)
      │               │   │   ├── tor-netdir v0.46.0 (*)
      │               │   │   ├── tor-netdoc v0.46.0 (*)
      │               │   │   └── tor-proto v0.46.0 (*)
      │               │   ├── tor-ptmgr v0.46.0 (*)
      │               │   └── tor-relay-selection v0.46.0 (*)
      │               ├── tor-bytes v0.46.0
      │               │   ├── tor-cell v0.46.0 (*)
      │               │   ├── tor-cert v0.46.0
      │               │   │   ├── tor-cell v0.46.0 (*)
      │               │   │   ├── tor-key-forge v0.46.0
      │               │   │   │   ├── tor-hscrypto v0.46.0 (*)
      │               │   │   │   └── tor-keymgr v0.46.0 (*)
      │               │   │   ├── tor-netdoc v0.46.0 (*)
      │               │   │   └── tor-proto v0.46.0 (*)
      │               │   ├── tor-hsclient v0.46.0 (*)
      │               │   ├── tor-hscrypto v0.46.0 (*)
      │               │   ├── tor-hsservice v0.46.0 (*)
      │               │   ├── tor-key-forge v0.46.0 (*)
      │               │   ├── tor-keymgr v0.46.0 (*)
      │               │   ├── tor-linkspec v0.46.0 (*)
      │               │   ├── tor-netdoc v0.46.0 (*)
      │               │   ├── tor-proto v0.46.0 (*)
      │               │   ├── tor-protover v0.46.0 (*)
      │               │   └── tor-socksproto v0.46.0
      │               │       ├── tor-chanmgr v0.46.0 (*)
      │               │       └── tor-ptmgr v0.46.0 (*)
      │               ├── tor-cell v0.46.0 (*)
      │               ├── tor-chanmgr v0.46.0 (*)
      │               ├── tor-circmgr v0.46.0 (*)
      │               ├── tor-config v0.46.0 (*)
      │               ├── tor-dircommon v0.46.0 (*)
      │               ├── tor-guardmgr v0.46.0 (*)
      │               ├── tor-hsclient v0.46.0 (*)
      │               ├── tor-hscrypto v0.46.0 (*)
      │               ├── tor-hsservice v0.46.0 (*)
      │               ├── tor-key-forge v0.46.0 (*)
      │               ├── tor-keymgr v0.46.0 (*)
      │               ├── tor-linkspec v0.46.0 (*)
      │               ├── tor-llcrypto v0.46.0
      │               │   ├── arti-client v0.46.0 (*)
      │               │   ├── reed-tor v0.5.0-rc1 (*)
      │               │   ├── tor-bytes v0.46.0 (*)
      │               │   ├── tor-cell v0.46.0 (*)
      │               │   ├── tor-cert v0.46.0 (*)
      │               │   ├── tor-chanmgr v0.46.0 (*)
      │               │   ├── tor-checkable v0.46.0
      │               │   │   ├── tor-cert v0.46.0 (*)
      │               │   │   ├── tor-dircommon v0.46.0 (*)
      │               │   │   ├── tor-dirmgr v0.46.0 (*)
      │               │   │   ├── tor-hsclient v0.46.0 (*)
      │               │   │   ├── tor-key-forge v0.46.0 (*)
      │               │   │   ├── tor-netdoc v0.46.0 (*)
      │               │   │   └── tor-proto v0.46.0 (*)
      │               │   ├── tor-consdiff v0.46.0 (*)
      │               │   ├── tor-dirclient v0.46.0 (*)
      │               │   ├── tor-dircommon v0.46.0 (*)
      │               │   ├── tor-dirmgr v0.46.0 (*)
      │               │   ├── tor-guardmgr v0.46.0 (*)
      │               │   ├── tor-hsclient v0.46.0 (*)
      │               │   ├── tor-hscrypto v0.46.0 (*)
      │               │   ├── tor-hsservice v0.46.0 (*)
      │               │   ├── tor-key-forge v0.46.0 (*)
      │               │   ├── tor-keymgr v0.46.0 (*)
      │               │   ├── tor-linkspec v0.46.0 (*)
      │               │   ├── tor-netdir v0.46.0 (*)
      │               │   ├── tor-netdoc v0.46.0 (*)
      │               │   └── tor-proto v0.46.0 (*)
      │               ├── tor-memquota v0.46.0 (*)
      │               ├── tor-memquota-cost v0.46.0
      │               │   ├── tor-llcrypto v0.46.0 (*)
      │               │   └── tor-memquota v0.46.0 (*)
      │               ├── tor-netdoc v0.46.0 (*)
      │               ├── tor-persist v0.46.0 (*)
      │               ├── tor-proto v0.46.0 (*)
      │               ├── tor-protover v0.46.0 (*)
      │               ├── tor-ptmgr v0.46.0 (*)
      │               ├── tor-rtmock v0.46.0
      │               │   └── tor-proto v0.46.0 (*)
      │               ├── tor-socksproto v0.46.0 (*)
      │               └── tor-units v0.46.0 (*)
      ├── hybrid-array v0.4.14
      │   ├── block-buffer v0.12.1
      │   │   ├── cipher v0.5.2
      │   │   │   ├── aes v0.9.3
      │   │   │   │   ├── tor-llcrypto v0.46.0 (*)
      │   │   │   │   └── tor-proto v0.46.0 (*)
      │   │   │   ├── ctr v0.10.1
      │   │   │   │   ├── tor-llcrypto v0.46.0 (*)
      │   │   │   │   └── tor-proto v0.46.0 (*)
      │   │   │   ├── salsa20 v0.11.0
      │   │   │   │   └── reed-bramble v0.5.0-rc1 (*)
      │   │   │   ├── tor-hscrypto v0.46.0 (*)
      │   │   │   ├── tor-netdoc v0.46.0 (*)
      │   │   │   └── tor-proto v0.46.0 (*)
      │   │   └── digest v0.11.3 (*)
      │   ├── crypto-common v0.2.2
      │   │   ├── cipher v0.5.2 (*)
      │   │   ├── digest v0.11.3 (*)
      │   │   ├── kem v0.3.0
      │   │   │   └── ml-kem v0.3.2 (*)
      │   │   └── universal-hash v0.6.1
      │   │       └── polyval v0.7.3
      │   │           └── tor-proto v0.46.0 (*)
      │   ├── inout v0.2.2
      │   │   └── cipher v0.5.2 (*)
      │   ├── ml-kem v0.3.2 (*)
      │   └── module-lattice v0.2.3
      │       └── ml-kem v0.3.2 (*)
      ├── module-lattice v0.2.3 (*)
      └── universal-hash v0.6.1 (*)

error[unsound]: `AsyncFd::new` and related constructors violate I/O safety
    ┌─ /workspace/exo/reed/Cargo.lock:541:1
    │
541 │ tokio 1.53.1 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ unsound advisory detected
    │
    ├ ID: RUSTSEC-2026-0386
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0386
    ├ `tokio::io::unix::AsyncFd` provides safe constructors (`new`, `with_interest`, `try_new`, and `try_with_interest`) that accept any `T: AsRawFd` rather than requiring proof of ownership or validity of the file descriptor. Because `RawFd` implements `AsRawFd`, safe code can construct an `AsyncFd` from an arbitrary or closed file descriptor, or close/replace the underlying file descriptor while the `AsyncFd` is still alive.
      
      This violates I/O safety in two ways:
      
      1. `AsyncFd<T>` implements `AsFd` for all `T: AsRawFd` by calling `BorrowedFd::borrow_raw(self.as_raw_fd())`, allowing safe code to obtain an arbitrary `BorrowedFd<'_>` without owning the file descriptor.
      2. Tokio's I/O driver stores a pointer to an internal allocation in the `epoll`/`kqueue` user data for registered file descriptors. If the underlying file descriptor is duplicated and then closed while an `AsyncFd` is alive, and the OS reuses that file descriptor number for a another IO resource on the same runtime, dropping the first `AsyncFd` deregisters the reused file descriptor number and frees the first while the original file description remains registered in `epoll`, leading to a use-after-free when a readiness event fires.
      
      Starting in Tokio 1.51.6, 1.53.3, and 1.54.0, `AsyncFd::new`, `AsyncFd::with_interest`, `AsyncFd::try_new`, and `AsyncFd::try_with_interest` are deprecated in favor of the `unsafe` constructors `AsyncFd::register` and `AsyncFd::register_with_interest`. Callers must ensure that the file descriptor remains valid, open, and unchanged for the lifetime of the `AsyncFd`.
    ├ Announcement: https://github.com/tokio-rs/tokio/pull/8587
    ├ Solution: Upgrade to >=1.51.6, <1.52.0 OR >=1.53.3 (try `cargo update -p tokio`)
    ├ tokio v1.53.1
      ├── async_executors v0.7.0
      │   └── tor-rtcompat v0.46.0
      │       ├── arti-client v0.46.0
      │       │   └── reed-tor v0.5.0-rc1
      │       │       ├── reed-cli v0.5.0-rc1
      │       │       ├── reed-ffi v0.5.0-rc1
      │       │       └── reed-smptls v0.5.0-rc1
      │       │           ├── reed-cli v0.5.0-rc1 (*)
      │       │           └── reed-ffi v0.5.0-rc1 (*)
      │       ├── reed-tor v0.5.0-rc1 (*)
      │       ├── tor-async-utils v0.46.0
      │       │   ├── arti-client v0.46.0 (*)
      │       │   ├── tor-chanmgr v0.46.0
      │       │   │   ├── arti-client v0.46.0 (*)
      │       │   │   ├── tor-circmgr v0.46.0
      │       │   │   │   ├── arti-client v0.46.0 (*)
      │       │   │   │   ├── tor-dirclient v0.46.0
      │       │   │   │   │   ├── tor-dirmgr v0.46.0
      │       │   │   │   │   │   └── arti-client v0.46.0 (*)
      │       │   │   │   │   ├── tor-hsclient v0.46.0
      │       │   │   │   │   │   ├── arti-client v0.46.0 (*)
      │       │   │   │   │   │   └── reed-tor v0.5.0-rc1 (*)
      │       │   │   │   │   └── tor-hsservice v0.46.0
      │       │   │   │   │       ├── arti-client v0.46.0 (*)
      │       │   │   │   │       └── reed-tor v0.5.0-rc1 (*)
      │       │   │   │   ├── tor-dirmgr v0.46.0 (*)
      │       │   │   │   ├── tor-hsclient v0.46.0 (*)
      │       │   │   │   └── tor-hsservice v0.46.0 (*)
      │       │   │   └── tor-ptmgr v0.46.0
      │       │   │       └── arti-client v0.46.0 (*)
      │       │   ├── tor-circmgr v0.46.0 (*)
      │       │   ├── tor-dirmgr v0.46.0 (*)
      │       │   ├── tor-guardmgr v0.46.0
      │       │   │   ├── arti-client v0.46.0 (*)
      │       │   │   ├── tor-circmgr v0.46.0 (*)
      │       │   │   └── tor-dirmgr v0.46.0 (*)
      │       │   ├── tor-hsclient v0.46.0 (*)
      │       │   ├── tor-hsservice v0.46.0 (*)
      │       │   ├── tor-memquota v0.46.0
      │       │   │   ├── arti-client v0.46.0 (*)
      │       │   │   ├── tor-cell v0.46.0
      │       │   │   │   ├── reed-tor v0.5.0-rc1 (*)
      │       │   │   │   ├── tor-chanmgr v0.46.0 (*)
      │       │   │   │   ├── tor-circmgr v0.46.0 (*)
      │       │   │   │   ├── tor-hsclient v0.46.0 (*)
      │       │   │   │   ├── tor-hsservice v0.46.0 (*)
      │       │   │   │   ├── tor-netdoc v0.46.0
      │       │   │   │   │   ├── arti-client v0.46.0 (*)
      │       │   │   │   │   ├── tor-circmgr v0.46.0 (*)
      │       │   │   │   │   ├── tor-consdiff v0.46.0
      │       │   │   │   │   │   └── tor-dirmgr v0.46.0 (*)
      │       │   │   │   │   ├── tor-dirclient v0.46.0 (*)
      │       │   │   │   │   ├── tor-dircommon v0.46.0
      │       │   │   │   │   │   ├── arti-client v0.46.0 (*)
      │       │   │   │   │   │   ├── tor-circmgr v0.46.0 (*)
      │       │   │   │   │   │   ├── tor-dirmgr v0.46.0 (*)
      │       │   │   │   │   │   └── tor-guardmgr v0.46.0 (*)
      │       │   │   │   │   ├── tor-dirmgr v0.46.0 (*)
      │       │   │   │   │   ├── tor-guardmgr v0.46.0 (*)
      │       │   │   │   │   ├── tor-hsclient v0.46.0 (*)
      │       │   │   │   │   ├── tor-hsservice v0.46.0 (*)
      │       │   │   │   │   ├── tor-netdir v0.46.0
      │       │   │   │   │   │   ├── arti-client v0.46.0 (*)
      │       │   │   │   │   │   ├── tor-chanmgr v0.46.0 (*)
      │       │   │   │   │   │   ├── tor-circmgr v0.46.0 (*)
      │       │   │   │   │   │   ├── tor-dirmgr v0.46.0 (*)
      │       │   │   │   │   │   ├── tor-guardmgr v0.46.0 (*)
      │       │   │   │   │   │   ├── tor-hsclient v0.46.0 (*)
      │       │   │   │   │   │   ├── tor-hsservice v0.46.0 (*)
      │       │   │   │   │   │   └── tor-relay-selection v0.46.0
      │       │   │   │   │   │       ├── tor-circmgr v0.46.0 (*)
      │       │   │   │   │   │       ├── tor-guardmgr v0.46.0 (*)
      │       │   │   │   │   │       └── tor-hsservice v0.46.0 (*)
      │       │   │   │   │   └── tor-relay-selection v0.46.0 (*)
      │       │   │   │   └── tor-proto v0.46.0
      │       │   │   │       ├── arti-client v0.46.0 (*)
      │       │   │   │       ├── reed-tor v0.5.0-rc1 (*)
      │       │   │   │       ├── tor-chanmgr v0.46.0 (*)
      │       │   │   │       ├── tor-circmgr v0.46.0 (*)
      │       │   │   │       ├── tor-dirclient v0.46.0 (*)
      │       │   │   │       ├── tor-dirmgr v0.46.0 (*)
      │       │   │   │       ├── tor-guardmgr v0.46.0 (*)
      │       │   │   │       ├── tor-hsclient v0.46.0 (*)
      │       │   │   │       ├── tor-hsservice v0.46.0 (*)
      │       │   │   │       └── tor-ptmgr v0.46.0 (*)
      │       │   │   ├── tor-chanmgr v0.46.0 (*)
      │       │   │   ├── tor-circmgr v0.46.0 (*)
      │       │   │   ├── tor-hsclient v0.46.0 (*)
      │       │   │   ├── tor-hscrypto v0.46.0
      │       │   │   │   ├── arti-client v0.46.0 (*)
      │       │   │   │   ├── reed-tor v0.5.0-rc1 (*)
      │       │   │   │   ├── tor-cell v0.46.0 (*)
      │       │   │   │   ├── tor-dirclient v0.46.0 (*)
      │       │   │   │   ├── tor-hsclient v0.46.0 (*)
      │       │   │   │   ├── tor-hsservice v0.46.0 (*)
      │       │   │   │   ├── tor-keymgr v0.46.0
      │       │   │   │   │   ├── arti-client v0.46.0 (*)
      │       │   │   │   │   ├── reed-tor v0.5.0-rc1 (*)
      │       │   │   │   │   ├── tor-chanmgr v0.46.0 (*)
      │       │   │   │   │   ├── tor-hsclient v0.46.0 (*)
      │       │   │   │   │   └── tor-hsservice v0.46.0 (*)
      │       │   │   │   ├── tor-netdir v0.46.0 (*)
      │       │   │   │   ├── tor-netdoc v0.46.0 (*)
      │       │   │   │   └── tor-proto v0.46.0 (*)
      │       │   │   ├── tor-linkspec v0.46.0
      │       │   │   │   ├── arti-client v0.46.0 (*)
      │       │   │   │   ├── tor-cell v0.46.0 (*)
      │       │   │   │   ├── tor-chanmgr v0.46.0 (*)
      │       │   │   │   ├── tor-circmgr v0.46.0 (*)
      │       │   │   │   ├── tor-dirclient v0.46.0 (*)
      │       │   │   │   ├── tor-dircommon v0.46.0 (*)
      │       │   │   │   ├── tor-guardmgr v0.46.0 (*)
      │       │   │   │   ├── tor-hsclient v0.46.0 (*)
      │       │   │   │   ├── tor-hsservice v0.46.0 (*)
      │       │   │   │   ├── tor-netdir v0.46.0 (*)
      │       │   │   │   ├── tor-netdoc v0.46.0 (*)
      │       │   │   │   ├── tor-proto v0.46.0 (*)
      │       │   │   │   ├── tor-ptmgr v0.46.0 (*)
      │       │   │   │   └── tor-relay-selection v0.46.0 (*)
      │       │   │   ├── tor-proto v0.46.0 (*)
      │       │   │   └── tor-units v0.46.0
      │       │   │       ├── tor-cell v0.46.0 (*)
      │       │   │       ├── tor-chanmgr v0.46.0 (*)
      │       │   │       ├── tor-circmgr v0.46.0 (*)
      │       │   │       ├── tor-guardmgr v0.46.0 (*)
      │       │   │       ├── tor-hscrypto v0.46.0 (*)
      │       │   │       ├── tor-netdir v0.46.0 (*)
      │       │   │       ├── tor-netdoc v0.46.0 (*)
      │       │   │       └── tor-proto v0.46.0 (*)
      │       │   ├── tor-persist v0.46.0
      │       │   │   ├── arti-client v0.46.0 (*)
      │       │   │   ├── tor-circmgr v0.46.0 (*)
      │       │   │   ├── tor-dirmgr v0.46.0 (*)
      │       │   │   ├── tor-guardmgr v0.46.0 (*)
      │       │   │   ├── tor-hsclient v0.46.0 (*)
      │       │   │   ├── tor-hsservice v0.46.0 (*)
      │       │   │   └── tor-keymgr v0.46.0 (*)
      │       │   ├── tor-proto v0.46.0 (*)
      │       │   └── tor-ptmgr v0.46.0 (*)
      │       ├── tor-chanmgr v0.46.0 (*)
      │       ├── tor-circmgr v0.46.0 (*)
      │       ├── tor-config v0.46.0
      │       │   ├── arti-client v0.46.0 (*)
      │       │   ├── reed-tor v0.5.0-rc1 (*)
      │       │   ├── tor-chanmgr v0.46.0 (*)
      │       │   ├── tor-circmgr v0.46.0 (*)
      │       │   ├── tor-dircommon v0.46.0 (*)
      │       │   ├── tor-dirmgr v0.46.0 (*)
      │       │   ├── tor-guardmgr v0.46.0 (*)
      │       │   ├── tor-hsclient v0.46.0 (*)
      │       │   ├── tor-hsservice v0.46.0 (*)
      │       │   ├── tor-keymgr v0.46.0 (*)
      │       │   ├── tor-linkspec v0.46.0 (*)
      │       │   ├── tor-memquota v0.46.0 (*)
      │       │   ├── tor-proto v0.46.0 (*)
      │       │   └── tor-ptmgr v0.46.0 (*)
      │       ├── tor-dirclient v0.46.0 (*)
      │       ├── tor-dirmgr v0.46.0 (*)
      │       ├── tor-guardmgr v0.46.0 (*)
      │       ├── tor-hsclient v0.46.0 (*)
      │       ├── tor-hsservice v0.46.0 (*)
      │       ├── tor-log-ratelim v0.46.0
      │       │   ├── tor-hsservice v0.46.0 (*)
      │       │   ├── tor-memquota v0.46.0 (*)
      │       │   └── tor-proto v0.46.0 (*)
      │       ├── tor-memquota v0.46.0 (*)
      │       ├── tor-proto v0.46.0 (*)
      │       ├── tor-ptmgr v0.46.0 (*)
      │       └── tor-rtmock v0.46.0
      │           └── tor-proto v0.46.0 (*)
      ├── axum v0.8.9
      │   └── reed-relay v0.5.0-rc1
      │       ├── (dev) reed-cli v0.5.0-rc1 (*)
      │       ├── reed-conformance v0.5.0-rc1
      │       ├── reed-property v0.5.0-rc1
      │       │   ├── (dev) reed-conformance v0.5.0-rc1 (*)
      │       │   └── reed-ct-bench v0.5.0-rc1
      │       └── (dev) reed-relay v0.5.0-rc1 (*)
      ├── h2 v0.4.19
      │   ├── hyper v1.11.1
      │   │   ├── axum v0.8.9 (*)
      │   │   ├── hyper-rustls v0.27.9
      │   │   │   └── reqwest v0.12.28
      │   │   │       └── reed-relay v0.5.0-rc1 (*)
      │   │   ├── hyper-util v0.1.20
      │   │   │   ├── axum v0.8.9 (*)
      │   │   │   ├── hyper-rustls v0.27.9 (*)
      │   │   │   └── reqwest v0.12.28 (*)
      │   │   └── reqwest v0.12.28 (*)
      │   ├── reed-smptls v0.5.0-rc1 (*)
      │   └── reqwest v0.12.28 (*)
      ├── hyper v1.11.1 (*)
      ├── hyper-rustls v0.27.9 (*)
      ├── hyper-util v0.1.20 (*)
      ├── reed-cli v0.5.0-rc1 (*)
      ├── (dev) reed-conformance v0.5.0-rc1 (*)
      ├── reed-gmessages v0.5.0-rc1
      ├── reed-relay v0.5.0-rc1 (*)
      ├── reed-smptls v0.5.0-rc1 (*)
      ├── (dev) reed-tor v0.5.0-rc1 (*)
      ├── reqwest v0.12.28 (*)
      ├── tokio-rustls v0.26.5
      │   ├── hyper-rustls v0.27.9 (*)
      │   ├── (dev) reed-cli v0.5.0-rc1 (*)
      │   ├── reed-smptls v0.5.0-rc1 (*)
      │   ├── reqwest v0.12.28 (*)
      │   └── tokio-tungstenite v0.30.0
      │       ├── reed-cli v0.5.0-rc1 (*)
      │       ├── reed-relay v0.5.0-rc1 (*)
      │       └── reed-tor v0.5.0-rc1 (*)
      ├── tokio-serial v5.5.0
      │   └── reed-cli v0.5.0-rc1 (*)
      ├── tokio-tungstenite v0.29.0
      │   └── axum v0.8.9 (*)
      ├── tokio-tungstenite v0.30.0 (*)
      ├── tokio-util v0.7.19
      │   ├── h2 v0.4.19 (*)
      │   ├── reed-tor v0.5.0-rc1 (*)
      │   ├── tor-async-utils v0.46.0 (*)
      │   ├── tor-proto v0.46.0 (*)
      │   └── tor-rtcompat v0.46.0 (*)
      ├── tor-async-utils v0.46.0 (*)
      ├── tor-proto v0.46.0 (*)
      ├── tor-rtcompat v0.46.0 (*)
      └── tower v0.5.3
          ├── axum v0.8.9 (*)
          ├── reqwest v0.12.28 (*)
          └── tower-http v0.6.11
              └── reqwest v0.12.28 (*)

warning[advisory-not-detected]: advisory was not encountered
    ┌─ /workspace/exo/reed/deny.toml:145:11
    │
145 │   { id = "RUSTSEC-2025-0141", reason = "lockfile only: optional `bincode` dependency of typed-index-collections (via tor-netdir), never enabled; cargo-auditable lists it for reed-cli through a weak feature, no bincode code is built" },
    │           ━━━━━━━━━━━━━━━━━             ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ignore reason
    │           │                              
    │           no crate matched advisory criteria

warning[advisory-not-detected]: advisory was not encountered
    ┌─ /workspace/exo/reed/deny.toml:148:11
    │
148 │   { id = "RUSTSEC-2026-0173", reason = "lockfile only: cfg(hax) dependency of hax-lib-macros (libcrux-ml-kem's verification annotations); cargo never compiles it for a Reed target" },
    │           ━━━━━━━━━━━━━━━━━             ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ignore reason
    │           │                              
    │           no crate matched advisory criteria

warning[advisory-not-detected]: advisory was not encountered
    ┌─ /workspace/exo/reed/deny.toml:137:11
    │
137 │   { id = "RUSTSEC-2026-0330", reason = "lockfile only: libcrux-kem 0.0.9 sits behind hpke-rs's optional `libcrux` feature, which no crate enables; remove when openmls_rust_crypto allows hpke-rs 0.8 (libcrux-kem 0.0.10)" },
    │           ━━━━━━━━━━━━━━━━━             ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ignore reason
    │           │                              
    │           no crate matched advisory criteria

warning[advisory-not-detected]: advisory was not encountered
    ┌─ /workspace/exo/reed/deny.toml:138:11
    │
138 │   { id = "RUSTSEC-2026-0331", reason = "lockfile only: same path as RUSTSEC-2026-0330 (hpke-rs `libcrux` feature off); remove when openmls_rust_crypto allows hpke-rs 0.8" },
    │           ━━━━━━━━━━━━━━━━━             ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ignore reason
    │           │                              
    │           no crate matched advisory criteria

advisories FAILED
FAIL cargo deny root (exit 1)
root: 17 accepted advisories, 13 matched in the crate graph, 4 lockfile only (verified not compiled)
==== cargo deny chatmail (host/reed-chatmail/embedded/Cargo.toml, tools/release/deny-chatmail.toml): check advisories
error[vulnerability]: Multiple timing variability issues in operations intended to be constant-time
    ┌─ /workspace/exo/reed/host/reed-chatmail/embedded/Cargo.lock:121:1
    │
121 │ crypto-bigint 0.5.5 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
    │
    ├ ID: RUSTSEC-2026-0387
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0387
    ├ ## Summary
      
      Several operations intended to be constant-time could execute secret-dependent
      branches, depending on the compiler and target CPU. These include subtraction,
      zero counting, division, and Montgomery multiplication.
      
      Additionally, `UintRef` equality could terminate at the first unequal limb,
      and `BoxedMontyForm::invert` branched on whether an inverse exists.
      
      ## Impact
      
      Applications using affected operations on secret integers may leak information
      through timing or microarchitectural side channels. This includes information
      about intermediate arithmetic values, matching limbs, and invertibility.
      
      Such leakage could potentially enable recovery of cryptographic secrets.
      Practical exploitability depends on the downstream algorithm, compiler, target
      CPU, and an attacker's ability to observe the side channel.
      
      ## Resolution
      
      Upgrade to v0.7.6, which removes the identified branches, updates `ctutils` to
      include its constant-time fixes, and adds BINSEC-based regression checks using
      `cargo checkct` for arithmetic on multiple targets.
    ├ Announcement: https://github.com/RustCrypto/crypto-bigint/pull/1365
    ├ Solution: Upgrade to >=0.7.6 (try `cargo update -p crypto-bigint`)
    ├ crypto-bigint v0.5.5
      ├── cx448 v0.1.1
      │   └── pgp v0.20.0
      │       └── deltachat v2.59.0
      │           └── reed-chatmail-embedded v0.1.0
      │               └── reed-chatmail-android v0.1.0
      └── elliptic-curve v0.13.8
          ├── cx448 v0.1.1 (*)
          ├── ecdsa v0.16.9
          │   ├── k256 v0.13.4
          │   │   └── pgp v0.20.0 (*)
          │   ├── p256 v0.13.2
          │   │   └── pgp v0.20.0 (*)
          │   ├── p384 v0.13.1
          │   │   └── pgp v0.20.0 (*)
          │   ├── p521 v0.13.3
          │   │   └── pgp v0.20.0 (*)
          │   └── pgp v0.20.0 (*)
          ├── k256 v0.13.4 (*)
          ├── p256 v0.13.2 (*)
          ├── p384 v0.13.1 (*)
          ├── p521 v0.13.3 (*)
          ├── pgp v0.20.0 (*)
          └── primeorder v0.13.6
              ├── p256 v0.13.2 (*)
              ├── p384 v0.13.1 (*)
              └── p521 v0.13.3 (*)

error[vulnerability]: Non-constant-time mask generation and `u128` comparisons
    ┌─ /workspace/exo/reed/host/reed-chatmail/embedded/Cargo.lock:128:1
    │
128 │ ctutils 0.4.2 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
    │
    ├ ID: RUSTSEC-2026-0385
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0385
    ├ ## Summary
      
      The `ctutils::Choice` type has mask generation functions for each unsigned
      integer size (`u8`, `u16`, `u32`, `u64`, `u128`). These are `const fn` and
      therefore can't reuse the `asm!`-backed mask generation in the `cmov` crate
      that's otherwise used to ensure constant-time.
      
      In releases prior to v0.4.4, the generated code from these functions could
      include a branch on commonly used platforms. This has been corrected in this
      release and now verified on several platforms using BINSEC.
      
      Additionally, `u128` comparison operations provided via `ctutils::Choice` and
      intended to work in constant-time were generating branches on 32-bit targets.
      This has been resolved via a special case implementation of these functions
      for such targets.
      
      ## Impact
      
      Branch instructions on secret values can potentially leak such values via
      covert channels. This can enable attackers to potentially recover such secrets.
      
      ## Resolution
      
      This has been resolved by calling `Choice::to_u8()` when generating the mask,
      which in turn uses `black_box` as an optimization barrier. Verification that
      this resulted in the desired change in the generated assembly across a variety
      of target CPU architectures was performed by BINSEC, which now runs
      automatically in CI using `cargo checkct`.
    ├ Announcement: https://github.com/RustCrypto/utils/pull/1569
    ├ Solution: Upgrade to >=0.4.4 (try `cargo update -p ctutils`)
    ├ ctutils v0.4.2
      ├── aes-gcm v0.11.1
      │   └── shadowsocks-crypto v0.8.0
      │       └── shadowsocks v1.25.0
      │           └── deltachat v2.59.0
      │               └── reed-chatmail-embedded v0.1.0
      │                   └── reed-chatmail-android v0.1.0
      ├── digest v0.11.3
      │   ├── hmac v0.13.0
      │   │   └── hkdf v0.13.0
      │   │       └── shadowsocks-crypto v0.8.0 (*)
      │   ├── md-5 v0.11.0
      │   │   └── shadowsocks-crypto v0.8.0 (*)
      │   └── sha1 v0.11.0
      │       └── shadowsocks-crypto v0.8.0 (*)
      └── universal-hash v0.6.1
          ├── poly1305 v0.9.1
          │   └── chacha20poly1305 v0.11.0
          │       └── shadowsocks-crypto v0.8.0 (*)
          └── polyval v0.7.3
              └── ghash v0.6.0
                  └── aes-gcm v0.11.1 (*)

error[unsound]: `AsyncFd::new` and related constructors violate I/O safety
    ┌─ /workspace/exo/reed/host/reed-chatmail/embedded/Cargo.lock:538:1
    │
538 │ tokio 1.53.1 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ unsound advisory detected
    │
    ├ ID: RUSTSEC-2026-0386
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0386
    ├ `tokio::io::unix::AsyncFd` provides safe constructors (`new`, `with_interest`, `try_new`, and `try_with_interest`) that accept any `T: AsRawFd` rather than requiring proof of ownership or validity of the file descriptor. Because `RawFd` implements `AsRawFd`, safe code can construct an `AsyncFd` from an arbitrary or closed file descriptor, or close/replace the underlying file descriptor while the `AsyncFd` is still alive.
      
      This violates I/O safety in two ways:
      
      1. `AsyncFd<T>` implements `AsFd` for all `T: AsRawFd` by calling `BorrowedFd::borrow_raw(self.as_raw_fd())`, allowing safe code to obtain an arbitrary `BorrowedFd<'_>` without owning the file descriptor.
      2. Tokio's I/O driver stores a pointer to an internal allocation in the `epoll`/`kqueue` user data for registered file descriptors. If the underlying file descriptor is duplicated and then closed while an `AsyncFd` is alive, and the OS reuses that file descriptor number for a another IO resource on the same runtime, dropping the first `AsyncFd` deregisters the reused file descriptor number and frees the first while the original file description remains registered in `epoll`, leading to a use-after-free when a readiness event fires.
      
      Starting in Tokio 1.51.6, 1.53.3, and 1.54.0, `AsyncFd::new`, `AsyncFd::with_interest`, `AsyncFd::try_new`, and `AsyncFd::try_with_interest` are deprecated in favor of the `unsafe` constructors `AsyncFd::register` and `AsyncFd::register_with_interest`. Callers must ensure that the file descriptor remains valid, open, and unchanged for the lifetime of the `AsyncFd`.
    ├ Announcement: https://github.com/tokio-rs/tokio/pull/8587
    ├ Solution: Upgrade to >=1.51.6, <1.52.0 OR >=1.53.3 (try `cargo update -p tokio`)
    ├ tokio v1.53.1
      ├── astral-tokio-tar v0.6.4
      │   └── deltachat v2.59.0
      │       └── reed-chatmail-embedded v0.1.0
      │           └── reed-chatmail-android v0.1.0
      ├── async-compat v0.2.5
      │   └── pkarr v3.10.0
      │       ├── iroh v0.35.0
      │       │   ├── deltachat v2.59.0 (*)
      │       │   └── iroh-gossip v0.35.0
      │       │       └── deltachat v2.59.0 (*)
      │       └── iroh-relay v0.35.0
      │           └── iroh v0.35.0 (*)
      ├── async-compression v0.4.44
      │   ├── async-imap v0.11.3
      │   │   └── deltachat v2.59.0 (*)
      │   └── async_zip v0.0.18
      │       └── deltachat v2.59.0 (*)
      ├── async-imap v0.11.3 (*)
      ├── async-native-tls v0.6.0
      │   └── deltachat v2.59.0 (*)
      ├── async-smtp v0.10.2
      │   └── deltachat v2.59.0 (*)
      ├── async_zip v0.0.18 (*)
      ├── backon v1.6.0
      │   └── iroh v0.35.0 (*)
      ├── deltachat v2.59.0 (*)
      ├── fast-socks5 v1.0.0
      │   └── deltachat v2.59.0 (*)
      ├── h2 v0.4.19
      │   └── hyper v1.11.1
      │       ├── deltachat v2.59.0 (*)
      │       ├── hyper-rustls v0.27.9
      │       │   └── reqwest v0.12.28
      │       │       ├── iroh v0.35.0 (*)
      │       │       ├── iroh-relay v0.35.0 (*)
      │       │       └── pkarr v3.10.0 (*)
      │       ├── hyper-util v0.1.20
      │       │   ├── deltachat v2.59.0 (*)
      │       │   ├── hyper-rustls v0.27.9 (*)
      │       │   ├── igd-next v0.16.2
      │       │   │   ├── iroh v0.35.0 (*)
      │       │   │   └── portmapper v0.5.0
      │       │   │       └── iroh v0.35.0 (*)
      │       │   ├── iroh-relay v0.35.0 (*)
      │       │   ├── portmapper v0.5.0 (*)
      │       │   └── reqwest v0.12.28 (*)
      │       ├── igd-next v0.16.2 (*)
      │       ├── iroh-relay v0.35.0 (*)
      │       └── reqwest v0.12.28 (*)
      ├── hickory-proto v0.25.2
      │   └── hickory-resolver v0.25.2
      │       ├── iroh v0.35.0 (*)
      │       └── iroh-relay v0.35.0 (*)
      ├── hickory-resolver v0.25.2 (*)
      ├── hyper v1.11.1 (*)
      ├── hyper-rustls v0.27.9 (*)
      ├── hyper-util v0.1.20 (*)
      ├── igd-next v0.16.2 (*)
      ├── iroh v0.35.0 (*)
      ├── iroh-gossip v0.35.0 (*)
      ├── iroh-quinn v0.13.0
      │   ├── iroh v0.35.0 (*)
      │   └── iroh-relay v0.35.0 (*)
      ├── iroh-relay v0.35.0 (*)
      ├── n0-future v0.1.3
      │   ├── iroh v0.35.0 (*)
      │   ├── iroh-gossip v0.35.0 (*)
      │   ├── iroh-relay v0.35.0 (*)
      │   └── netwatch v0.5.0
      │       ├── iroh v0.35.0 (*)
      │       └── portmapper v0.5.0 (*)
      ├── netlink-sys v0.8.8
      │   ├── netdev v0.31.0
      │   │   ├── iroh v0.35.0 (*)
      │   │   └── netwatch v0.5.0 (*)
      │   ├── netlink-proto v0.11.5
      │   │   └── netwatch v0.5.0 (*)
      │   └── netwatch v0.5.0 (*)
      ├── netwatch v0.5.0 (*)
      ├── pkarr v3.10.0 (*)
      ├── portmapper v0.5.0 (*)
      ├── reed-chatmail-embedded v0.1.0 (*)
      ├── reqwest v0.12.28 (*)
      ├── sendfd v0.4.4
      │   └── shadowsocks v1.25.0
      │       └── deltachat v2.59.0 (*)
      ├── shadowsocks v1.25.0 (*)
      ├── surge-ping v0.8.4
      │   └── iroh v0.35.0 (*)
      ├── tokio-io-timeout v1.2.1
      │   └── deltachat v2.59.0 (*)
      ├── tokio-rustls v0.26.5
      │   ├── deltachat v2.59.0 (*)
      │   ├── hyper-rustls v0.27.9 (*)
      │   ├── iroh-relay v0.35.0 (*)
      │   ├── reqwest v0.12.28 (*)
      │   └── tokio-websockets v0.11.4
      │       └── iroh-relay v0.35.0 (*)
      ├── tokio-stream v0.1.19
      │   ├── astral-tokio-tar v0.6.4 (*)
      │   ├── deltachat v2.59.0 (*)
      │   ├── fast-socks5 v1.0.0 (*)
      │   └── iroh v0.35.0 (*)
      ├── tokio-tfo v0.4.3
      │   └── shadowsocks v1.25.0 (*)
      ├── tokio-util v0.7.19
      │   ├── deltachat v2.59.0 (*)
      │   ├── h2 v0.4.19 (*)
      │   ├── iroh v0.35.0 (*)
      │   ├── iroh-gossip v0.35.0 (*)
      │   ├── iroh-relay v0.35.0 (*)
      │   ├── n0-future v0.1.3 (*)
      │   ├── netwatch v0.5.0 (*)
      │   ├── portmapper v0.5.0 (*)
      │   ├── reqwest v0.12.28 (*)
      │   ├── tokio-stream v0.1.19 (*)
      │   └── tokio-websockets v0.11.4 (*)
      ├── tokio-websockets v0.11.4 (*)
      └── tower v0.5.3
          ├── reqwest v0.12.28 (*)
          └── tower-http v0.6.11
              └── reqwest v0.12.28 (*)

warning[advisory-not-detected]: advisory was not encountered
    ┌─ /workspace/exo/reed/tools/release/deny-chatmail.toml:173:11
    │
173 │   { id = "RUSTSEC-2024-0384", reason = "lockfile only: instant is iroh's dependency for wasm32-unknown-unknown, which this tree never builds" },
    │           ━━━━━━━━━━━━━━━━━             ──────────────────────────────────────────────────────────────────────────────────────────────────── ignore reason
    │           │                              
    │           no crate matched advisory criteria

warning[advisory-not-detected]: advisory was not encountered
    ┌─ /workspace/exo/reed/tools/release/deny-chatmail.toml:174:11
    │
174 │   { id = "RUSTSEC-2026-0173", reason = "lockfile only: cfg(hax) dependency of hax-lib-macros (libcrux-ml-kem's verification annotations); cargo never compiles it for a Reed target" },
    │           ━━━━━━━━━━━━━━━━━             ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ignore reason
    │           │                              
    │           no crate matched advisory criteria

warning[advisory-not-detected]: advisory was not encountered
    ┌─ /workspace/exo/reed/tools/release/deny-chatmail.toml:143:11
    │
143 │   { id = "RUSTSEC-2026-0381", reason = "webpki-roots 0.26.11 is the semver-trick shim that re-exports webpki-roots 1 (locked at 1.0.10, patched): the roots compiled in are 1.0.10's; the 1.x copy itself is updated" },
    │           ━━━━━━━━━━━━━━━━━             ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ignore reason
    │           │                              
    │           no crate matched advisory criteria

advisories FAILED
FAIL cargo deny chatmail (exit 1)
note chatmail: RUSTSEC-2026-0381 is accepted but no crate of the graph matches it any more (stale acceptance: remove it)
chatmail: 16 accepted advisories, 13 matched in the crate graph, 2 lockfile only (verified not compiled)
==== cargo deny desktop (apps/desktop/src-tauri/Cargo.toml, tools/release/deny-desktop.toml): check advisories
error[vulnerability]: Multiple timing variability issues in operations intended to be constant-time
    ┌─ /workspace/exo/reed/apps/desktop/src-tauri/Cargo.lock:123:1
    │
123 │ crypto-bigint 0.5.5 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
    │
    ├ ID: RUSTSEC-2026-0387
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0387
    ├ ## Summary
      
      Several operations intended to be constant-time could execute secret-dependent
      branches, depending on the compiler and target CPU. These include subtraction,
      zero counting, division, and Montgomery multiplication.
      
      Additionally, `UintRef` equality could terminate at the first unequal limb,
      and `BoxedMontyForm::invert` branched on whether an inverse exists.
      
      ## Impact
      
      Applications using affected operations on secret integers may leak information
      through timing or microarchitectural side channels. This includes information
      about intermediate arithmetic values, matching limbs, and invertibility.
      
      Such leakage could potentially enable recovery of cryptographic secrets.
      Practical exploitability depends on the downstream algorithm, compiler, target
      CPU, and an attacker's ability to observe the side channel.
      
      ## Resolution
      
      Upgrade to v0.7.6, which removes the identified branches, updates `ctutils` to
      include its constant-time fixes, and adds BINSEC-based regression checks using
      `cargo checkct` for arithmetic on multiple targets.
    ├ Announcement: https://github.com/RustCrypto/crypto-bigint/pull/1365
    ├ Solution: Upgrade to >=0.7.6 (try `cargo update -p crypto-bigint`)
    ├ crypto-bigint v0.5.5
      └── elliptic-curve v0.13.8
          ├── ecdsa v0.16.9
          │   ├── k256 v0.13.4
          │   │   └── reed-nostr v0.5.0-rc1
          │   │       └── reed-core v0.5.0-rc1
          │   │           ├── reed-cli v0.5.0-rc1
          │   │           │   └── reed-desktop v0.3.0
          │   │           └── reed-desktop v0.3.0 (*)
          │   ├── p256 v0.13.2
          │   │   └── rustls-rustcrypto v0.0.2-alpha
          │   │       ├── reed-cli v0.5.0-rc1 (*)
          │   │       ├── reed-smptls v0.5.0-rc1
          │   │       │   └── reed-cli v0.5.0-rc1 (*)
          │   │       └── reed-tor v0.5.0-rc1
          │   │           ├── reed-cli v0.5.0-rc1 (*)
          │   │           ├── reed-desktop v0.3.0 (*)
          │   │           └── reed-smptls v0.5.0-rc1 (*)
          │   ├── p384 v0.13.1
          │   │   └── rustls-rustcrypto v0.0.2-alpha (*)
          │   └── rustls-rustcrypto v0.0.2-alpha (*)
          ├── k256 v0.13.4 (*)
          ├── p256 v0.13.2 (*)
          ├── p384 v0.13.1 (*)
          ├── primeorder v0.13.6
          │   ├── p256 v0.13.2 (*)
          │   └── p384 v0.13.1 (*)
          └── voprf v0.5.0
              ├── reed-bearer v0.5.0-rc1
              │   ├── reed-bearer-lora v0.5.0-rc1
              │   │   ├── reed-cli v0.5.0-rc1 (*)
              │   │   ├── reed-core v0.5.0-rc1 (*)
              │   │   └── reed-mesh-client v0.5.0-rc1
              │   │       └── reed-core v0.5.0-rc1 (*)
              │   ├── reed-core v0.5.0-rc1 (*)
              │   └── reed-discovery v0.5.0-rc1
              │       ├── reed-cli v0.5.0-rc1 (*)
              │       └── reed-core v0.5.0-rc1 (*)
              └── reed-discovery v0.5.0-rc1 (*)

error[vulnerability]: Non-constant-time mask generation and `u128` comparisons
    ┌─ /workspace/exo/reed/apps/desktop/src-tauri/Cargo.lock:134:1
    │
134 │ ctutils 0.4.2 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
    │
    ├ ID: RUSTSEC-2026-0385
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0385
    ├ ## Summary
      
      The `ctutils::Choice` type has mask generation functions for each unsigned
      integer size (`u8`, `u16`, `u32`, `u64`, `u128`). These are `const fn` and
      therefore can't reuse the `asm!`-backed mask generation in the `cmov` crate
      that's otherwise used to ensure constant-time.
      
      In releases prior to v0.4.4, the generated code from these functions could
      include a branch on commonly used platforms. This has been corrected in this
      release and now verified on several platforms using BINSEC.
      
      Additionally, `u128` comparison operations provided via `ctutils::Choice` and
      intended to work in constant-time were generating branches on 32-bit targets.
      This has been resolved via a special case implementation of these functions
      for such targets.
      
      ## Impact
      
      Branch instructions on secret values can potentially leak such values via
      covert channels. This can enable attackers to potentially recover such secrets.
      
      ## Resolution
      
      This has been resolved by calling `Choice::to_u8()` when generating the mask,
      which in turn uses `black_box` as an optimization barrier. Verification that
      this resulted in the desired change in the generated assembly across a variety
      of target CPU architectures was performed by BINSEC, which now runs
      automatically in CI using `cargo checkct`.
    ├ Announcement: https://github.com/RustCrypto/utils/pull/1569
    ├ Solution: Upgrade to >=0.4.4 (try `cargo update -p ctutils`)
    ├ ctutils v0.4.2
      ├── digest v0.11.3
      │   ├── blake2 v0.11.0
      │   │   └── reed-bramble v0.5.0-rc1
      │   │       └── reed-core v0.5.0-rc1
      │   │           ├── reed-cli v0.5.0-rc1
      │   │           │   └── reed-desktop v0.3.0
      │   │           └── reed-desktop v0.3.0 (*)
      │   ├── hmac v0.13.0
      │   │   └── hkdf v0.13.0
      │   │       └── secret-service v5.2.0
      │   │           └── zbus-secret-service-keyring-store v1.0.1
      │   │               └── keyring v4.2.0
      │   │                   └── reed-desktop v0.3.0 (*)
      │   ├── sha1 v0.11.0
      │   │   └── tungstenite v0.30.0
      │   │       └── tokio-tungstenite v0.30.0
      │   │           ├── reed-cli v0.5.0-rc1 (*)
      │   │           └── reed-tor v0.5.0-rc1
      │   │               ├── reed-cli v0.5.0-rc1 (*)
      │   │               ├── reed-desktop v0.3.0 (*)
      │   │               └── reed-smptls v0.5.0-rc1
      │   │                   └── reed-cli v0.5.0-rc1 (*)
      │   ├── sha2 v0.11.0
      │   │   └── secret-service v5.2.0 (*)
      │   └── sha3 v0.12.0
      │       └── derive-deftly-macros v1.11.5
      │           └── derive-deftly v1.11.5
      │               ├── arti-client v0.46.0
      │               │   └── reed-tor v0.5.0-rc1 (*)
      │               ├── pwd-grp v1.0.2
      │               │   └── fs-mistrust v0.15.1
      │               │       ├── arti-client v0.46.0 (*)
      │               │       ├── reed-tor v0.5.0-rc1 (*)
      │               │       ├── tor-config v0.46.0
      │               │       │   ├── arti-client v0.46.0 (*)
      │               │       │   ├── reed-tor v0.5.0-rc1 (*)
      │               │       │   ├── tor-chanmgr v0.46.0
      │               │       │   │   ├── arti-client v0.46.0 (*)
      │               │       │   │   ├── tor-circmgr v0.46.0
      │               │       │   │   │   ├── arti-client v0.46.0 (*)
      │               │       │   │   │   ├── tor-dirclient v0.46.0
      │               │       │   │   │   │   ├── tor-dirmgr v0.46.0
      │               │       │   │   │   │   │   └── arti-client v0.46.0 (*)
      │               │       │   │   │   │   ├── tor-hsclient v0.46.0
      │               │       │   │   │   │   │   ├── arti-client v0.46.0 (*)
      │               │       │   │   │   │   │   └── reed-tor v0.5.0-rc1 (*)
      │               │       │   │   │   │   └── tor-hsservice v0.46.0
      │               │       │   │   │   │       ├── arti-client v0.46.0 (*)
      │               │       │   │   │   │       └── reed-tor v0.5.0-rc1 (*)
      │               │       │   │   │   ├── tor-dirmgr v0.46.0 (*)
      │               │       │   │   │   ├── tor-hsclient v0.46.0 (*)
      │               │       │   │   │   └── tor-hsservice v0.46.0 (*)
      │               │       │   │   └── tor-ptmgr v0.46.0
      │               │       │   │       └── arti-client v0.46.0 (*)
      │               │       │   ├── tor-circmgr v0.46.0 (*)
      │               │       │   ├── tor-dircommon v0.46.0
      │               │       │   │   ├── arti-client v0.46.0 (*)
      │               │       │   │   ├── tor-circmgr v0.46.0 (*)
      │               │       │   │   ├── tor-dirmgr v0.46.0 (*)
      │               │       │   │   └── tor-guardmgr v0.46.0
      │               │       │   │       ├── arti-client v0.46.0 (*)
      │               │       │   │       ├── tor-circmgr v0.46.0 (*)
      │               │       │   │       └── tor-dirmgr v0.46.0 (*)
      │               │       │   ├── tor-dirmgr v0.46.0 (*)
      │               │       │   ├── tor-guardmgr v0.46.0 (*)
      │               │       │   ├── tor-hsclient v0.46.0 (*)
      │               │       │   ├── tor-hsservice v0.46.0 (*)
      │               │       │   ├── tor-keymgr v0.46.0
      │               │       │   │   ├── arti-client v0.46.0 (*)
      │               │       │   │   ├── reed-tor v0.5.0-rc1 (*)
      │               │       │   │   ├── tor-chanmgr v0.46.0 (*)
      │               │       │   │   ├── tor-hsclient v0.46.0 (*)
      │               │       │   │   └── tor-hsservice v0.46.0 (*)
      │               │       │   ├── tor-linkspec v0.46.0
      │               │       │   │   ├── arti-client v0.46.0 (*)
      │               │       │   │   ├── tor-cell v0.46.0
      │               │       │   │   │   ├── reed-tor v0.5.0-rc1 (*)
      │               │       │   │   │   ├── tor-chanmgr v0.46.0 (*)
      │               │       │   │   │   ├── tor-circmgr v0.46.0 (*)
      │               │       │   │   │   ├── tor-hsclient v0.46.0 (*)
      │               │       │   │   │   ├── tor-hsservice v0.46.0 (*)
      │               │       │   │   │   ├── tor-netdoc v0.46.0
      │               │       │   │   │   │   ├── arti-client v0.46.0 (*)
      │               │       │   │   │   │   ├── tor-circmgr v0.46.0 (*)
      │               │       │   │   │   │   ├── tor-consdiff v0.46.0
      │               │       │   │   │   │   │   └── tor-dirmgr v0.46.0 (*)
      │               │       │   │   │   │   ├── tor-dirclient v0.46.0 (*)
      │               │       │   │   │   │   ├── tor-dircommon v0.46.0 (*)
      │               │       │   │   │   │   ├── tor-dirmgr v0.46.0 (*)
      │               │       │   │   │   │   ├── tor-guardmgr v0.46.0 (*)
      │               │       │   │   │   │   ├── tor-hsclient v0.46.0 (*)
      │               │       │   │   │   │   ├── tor-hsservice v0.46.0 (*)
      │               │       │   │   │   │   ├── tor-netdir v0.46.0
      │               │       │   │   │   │   │   ├── arti-client v0.46.0 (*)
      │               │       │   │   │   │   │   ├── tor-chanmgr v0.46.0 (*)
      │               │       │   │   │   │   │   ├── tor-circmgr v0.46.0 (*)
      │               │       │   │   │   │   │   ├── tor-dirmgr v0.46.0 (*)
      │               │       │   │   │   │   │   ├── tor-guardmgr v0.46.0 (*)
      │               │       │   │   │   │   │   ├── tor-hsclient v0.46.0 (*)
      │               │       │   │   │   │   │   ├── tor-hsservice v0.46.0 (*)
      │               │       │   │   │   │   │   └── tor-relay-selection v0.46.0
      │               │       │   │   │   │   │       ├── tor-circmgr v0.46.0 (*)
      │               │       │   │   │   │   │       ├── tor-guardmgr v0.46.0 (*)
      │               │       │   │   │   │   │       └── tor-hsservice v0.46.0 (*)
      │               │       │   │   │   │   └── tor-relay-selection v0.46.0 (*)
      │               │       │   │   │   └── tor-proto v0.46.0
      │               │       │   │   │       ├── arti-client v0.46.0 (*)
      │               │       │   │   │       ├── reed-tor v0.5.0-rc1 (*)
      │               │       │   │   │       ├── tor-chanmgr v0.46.0 (*)
      │               │       │   │   │       ├── tor-circmgr v0.46.0 (*)
      │               │       │   │   │       ├── tor-dirclient v0.46.0 (*)
      │               │       │   │   │       ├── tor-dirmgr v0.46.0 (*)
      │               │       │   │   │       ├── tor-guardmgr v0.46.0 (*)
      │               │       │   │   │       ├── tor-hsclient v0.46.0 (*)
      │               │       │   │   │       ├── tor-hsservice v0.46.0 (*)
      │               │       │   │   │       └── tor-ptmgr v0.46.0 (*)
      │               │       │   │   ├── tor-chanmgr v0.46.0 (*)
      │               │       │   │   ├── tor-circmgr v0.46.0 (*)
      │               │       │   │   ├── tor-dirclient v0.46.0 (*)
      │               │       │   │   ├── tor-dircommon v0.46.0 (*)
      │               │       │   │   ├── tor-guardmgr v0.46.0 (*)
      │               │       │   │   ├── tor-hsclient v0.46.0 (*)
      │               │       │   │   ├── tor-hsservice v0.46.0 (*)
      │               │       │   │   ├── tor-netdir v0.46.0 (*)
      │               │       │   │   ├── tor-netdoc v0.46.0 (*)
      │               │       │   │   ├── tor-proto v0.46.0 (*)
      │               │       │   │   ├── tor-ptmgr v0.46.0 (*)
      │               │       │   │   └── tor-relay-selection v0.46.0 (*)
      │               │       │   ├── tor-memquota v0.46.0
      │               │       │   │   ├── arti-client v0.46.0 (*)
      │               │       │   │   ├── tor-cell v0.46.0 (*)
      │               │       │   │   ├── tor-chanmgr v0.46.0 (*)
      │               │       │   │   ├── tor-circmgr v0.46.0 (*)
      │               │       │   │   ├── tor-hsclient v0.46.0 (*)
      │               │       │   │   ├── tor-hscrypto v0.46.0
      │               │       │   │   │   ├── arti-client v0.46.0 (*)
      │               │       │   │   │   ├── reed-tor v0.5.0-rc1 (*)
      │               │       │   │   │   ├── tor-cell v0.46.0 (*)
      │               │       │   │   │   ├── tor-dirclient v0.46.0 (*)
      │               │       │   │   │   ├── tor-hsclient v0.46.0 (*)
      │               │       │   │   │   ├── tor-hsservice v0.46.0 (*)
      │               │       │   │   │   ├── tor-keymgr v0.46.0 (*)
      │               │       │   │   │   ├── tor-netdir v0.46.0 (*)
      │               │       │   │   │   ├── tor-netdoc v0.46.0 (*)
      │               │       │   │   │   └── tor-proto v0.46.0 (*)
      │               │       │   │   ├── tor-linkspec v0.46.0 (*)
      │               │       │   │   ├── tor-proto v0.46.0 (*)
      │               │       │   │   └── tor-units v0.46.0
      │               │       │   │       ├── tor-cell v0.46.0 (*)
      │               │       │   │       ├── tor-chanmgr v0.46.0 (*)
      │               │       │   │       ├── tor-circmgr v0.46.0 (*)
      │               │       │   │       ├── tor-guardmgr v0.46.0 (*)
      │               │       │   │       ├── tor-hscrypto v0.46.0 (*)
      │               │       │   │       ├── tor-netdir v0.46.0 (*)
      │               │       │   │       ├── tor-netdoc v0.46.0 (*)
      │               │       │   │       └── tor-proto v0.46.0 (*)
      │               │       │   ├── tor-proto v0.46.0 (*)
      │               │       │   └── tor-ptmgr v0.46.0 (*)
      │               │       ├── tor-dirmgr v0.46.0 (*)
      │               │       ├── tor-hsservice v0.46.0 (*)
      │               │       ├── tor-keymgr v0.46.0 (*)
      │               │       ├── tor-persist v0.46.0
      │               │       │   ├── arti-client v0.46.0 (*)
      │               │       │   ├── tor-circmgr v0.46.0 (*)
      │               │       │   ├── tor-dirmgr v0.46.0 (*)
      │               │       │   ├── tor-guardmgr v0.46.0 (*)
      │               │       │   ├── tor-hsclient v0.46.0 (*)
      │               │       │   ├── tor-hsservice v0.46.0 (*)
      │               │       │   └── tor-keymgr v0.46.0 (*)
      │               │       └── tor-ptmgr v0.46.0 (*)
      │               ├── tor-async-utils v0.46.0
      │               │   ├── arti-client v0.46.0 (*)
      │               │   ├── tor-chanmgr v0.46.0 (*)
      │               │   ├── tor-circmgr v0.46.0 (*)
      │               │   ├── tor-dirmgr v0.46.0 (*)
      │               │   ├── tor-guardmgr v0.46.0 (*)
      │               │   ├── tor-hsclient v0.46.0 (*)
      │               │   ├── tor-hsservice v0.46.0 (*)
      │               │   ├── tor-memquota v0.46.0 (*)
      │               │   ├── tor-persist v0.46.0 (*)
      │               │   ├── tor-proto v0.46.0 (*)
      │               │   └── tor-ptmgr v0.46.0 (*)
      │               ├── tor-basic-utils v0.46.0
      │               │   ├── arti-client v0.46.0 (*)
      │               │   ├── tor-async-utils v0.46.0 (*)
      │               │   ├── tor-cell v0.46.0 (*)
      │               │   ├── tor-chanmgr v0.46.0 (*)
      │               │   ├── tor-circmgr v0.46.0 (*)
      │               │   ├── tor-config v0.46.0 (*)
      │               │   ├── tor-dircommon v0.46.0 (*)
      │               │   ├── tor-dirmgr v0.46.0 (*)
      │               │   ├── tor-guardmgr v0.46.0 (*)
      │               │   ├── tor-hsclient v0.46.0 (*)
      │               │   ├── tor-hscrypto v0.46.0 (*)
      │               │   ├── tor-hsservice v0.46.0 (*)
      │               │   ├── tor-keymgr v0.46.0 (*)
      │               │   ├── tor-linkspec v0.46.0 (*)
      │               │   ├── tor-memquota v0.46.0 (*)
      │               │   ├── tor-netdir v0.46.0 (*)
      │               │   ├── tor-netdoc v0.46.0 (*)
      │               │   ├── tor-persist v0.46.0 (*)
      │               │   ├── tor-proto v0.46.0 (*)
      │               │   ├── tor-protover v0.46.0
      │               │   │   ├── arti-client v0.46.0 (*)
      │               │   │   ├── tor-cell v0.46.0 (*)
      │               │   │   ├── tor-circmgr v0.46.0 (*)
      │               │   │   ├── tor-dirmgr v0.46.0 (*)
      │               │   │   ├── tor-guardmgr v0.46.0 (*)
      │               │   │   ├── tor-hsclient v0.46.0 (*)
      │               │   │   ├── tor-hsservice v0.46.0 (*)
      │               │   │   ├── tor-linkspec v0.46.0 (*)
      │               │   │   ├── tor-netdir v0.46.0 (*)
      │               │   │   ├── tor-netdoc v0.46.0 (*)
      │               │   │   └── tor-proto v0.46.0 (*)
      │               │   ├── tor-ptmgr v0.46.0 (*)
      │               │   └── tor-relay-selection v0.46.0 (*)
      │               ├── tor-bytes v0.46.0
      │               │   ├── tor-cell v0.46.0 (*)
      │               │   ├── tor-cert v0.46.0
      │               │   │   ├── tor-cell v0.46.0 (*)
      │               │   │   ├── tor-key-forge v0.46.0
      │               │   │   │   ├── tor-hscrypto v0.46.0 (*)
      │               │   │   │   └── tor-keymgr v0.46.0 (*)
      │               │   │   ├── tor-netdoc v0.46.0 (*)
      │               │   │   └── tor-proto v0.46.0 (*)
      │               │   ├── tor-hsclient v0.46.0 (*)
      │               │   ├── tor-hscrypto v0.46.0 (*)
      │               │   ├── tor-hsservice v0.46.0 (*)
      │               │   ├── tor-key-forge v0.46.0 (*)
      │               │   ├── tor-keymgr v0.46.0 (*)
      │               │   ├── tor-linkspec v0.46.0 (*)
      │               │   ├── tor-netdoc v0.46.0 (*)
      │               │   ├── tor-proto v0.46.0 (*)
      │               │   ├── tor-protover v0.46.0 (*)
      │               │   └── tor-socksproto v0.46.0
      │               │       ├── tor-chanmgr v0.46.0 (*)
      │               │       └── tor-ptmgr v0.46.0 (*)
      │               ├── tor-cell v0.46.0 (*)
      │               ├── tor-chanmgr v0.46.0 (*)
      │               ├── tor-circmgr v0.46.0 (*)
      │               ├── tor-config v0.46.0 (*)
      │               ├── tor-dircommon v0.46.0 (*)
      │               ├── tor-guardmgr v0.46.0 (*)
      │               ├── tor-hsclient v0.46.0 (*)
      │               ├── tor-hscrypto v0.46.0 (*)
      │               ├── tor-hsservice v0.46.0 (*)
      │               ├── tor-key-forge v0.46.0 (*)
      │               ├── tor-keymgr v0.46.0 (*)
      │               ├── tor-linkspec v0.46.0 (*)
      │               ├── tor-llcrypto v0.46.0
      │               │   ├── arti-client v0.46.0 (*)
      │               │   ├── reed-tor v0.5.0-rc1 (*)
      │               │   ├── tor-bytes v0.46.0 (*)
      │               │   ├── tor-cell v0.46.0 (*)
      │               │   ├── tor-cert v0.46.0 (*)
      │               │   ├── tor-chanmgr v0.46.0 (*)
      │               │   ├── tor-checkable v0.46.0
      │               │   │   ├── tor-cert v0.46.0 (*)
      │               │   │   ├── tor-dircommon v0.46.0 (*)
      │               │   │   ├── tor-dirmgr v0.46.0 (*)
      │               │   │   ├── tor-hsclient v0.46.0 (*)
      │               │   │   ├── tor-key-forge v0.46.0 (*)
      │               │   │   ├── tor-netdoc v0.46.0 (*)
      │               │   │   └── tor-proto v0.46.0 (*)
      │               │   ├── tor-consdiff v0.46.0 (*)
      │               │   ├── tor-dirclient v0.46.0 (*)
      │               │   ├── tor-dircommon v0.46.0 (*)
      │               │   ├── tor-dirmgr v0.46.0 (*)
      │               │   ├── tor-guardmgr v0.46.0 (*)
      │               │   ├── tor-hsclient v0.46.0 (*)
      │               │   ├── tor-hscrypto v0.46.0 (*)
      │               │   ├── tor-hsservice v0.46.0 (*)
      │               │   ├── tor-key-forge v0.46.0 (*)
      │               │   ├── tor-keymgr v0.46.0 (*)
      │               │   ├── tor-linkspec v0.46.0 (*)
      │               │   ├── tor-netdir v0.46.0 (*)
      │               │   ├── tor-netdoc v0.46.0 (*)
      │               │   └── tor-proto v0.46.0 (*)
      │               ├── tor-memquota v0.46.0 (*)
      │               ├── tor-memquota-cost v0.46.0
      │               │   ├── tor-llcrypto v0.46.0 (*)
      │               │   └── tor-memquota v0.46.0 (*)
      │               ├── tor-netdoc v0.46.0 (*)
      │               ├── tor-persist v0.46.0 (*)
      │               ├── tor-proto v0.46.0 (*)
      │               ├── tor-protover v0.46.0 (*)
      │               ├── tor-ptmgr v0.46.0 (*)
      │               ├── tor-rtmock v0.46.0
      │               │   └── tor-proto v0.46.0 (*)
      │               ├── tor-socksproto v0.46.0 (*)
      │               └── tor-units v0.46.0 (*)
      └── universal-hash v0.6.1
          └── polyval v0.7.3
              └── tor-proto v0.46.0 (*)

error[unsound]: `AsyncFd::new` and related constructors violate I/O safety
    ┌─ /workspace/exo/reed/apps/desktop/src-tauri/Cargo.lock:616:1
    │
616 │ tokio 1.53.1 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ unsound advisory detected
    │
    ├ ID: RUSTSEC-2026-0386
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0386
    ├ `tokio::io::unix::AsyncFd` provides safe constructors (`new`, `with_interest`, `try_new`, and `try_with_interest`) that accept any `T: AsRawFd` rather than requiring proof of ownership or validity of the file descriptor. Because `RawFd` implements `AsRawFd`, safe code can construct an `AsyncFd` from an arbitrary or closed file descriptor, or close/replace the underlying file descriptor while the `AsyncFd` is still alive.
      
      This violates I/O safety in two ways:
      
      1. `AsyncFd<T>` implements `AsFd` for all `T: AsRawFd` by calling `BorrowedFd::borrow_raw(self.as_raw_fd())`, allowing safe code to obtain an arbitrary `BorrowedFd<'_>` without owning the file descriptor.
      2. Tokio's I/O driver stores a pointer to an internal allocation in the `epoll`/`kqueue` user data for registered file descriptors. If the underlying file descriptor is duplicated and then closed while an `AsyncFd` is alive, and the OS reuses that file descriptor number for a another IO resource on the same runtime, dropping the first `AsyncFd` deregisters the reused file descriptor number and frees the first while the original file description remains registered in `epoll`, leading to a use-after-free when a readiness event fires.
      
      Starting in Tokio 1.51.6, 1.53.3, and 1.54.0, `AsyncFd::new`, `AsyncFd::with_interest`, `AsyncFd::try_new`, and `AsyncFd::try_with_interest` are deprecated in favor of the `unsafe` constructors `AsyncFd::register` and `AsyncFd::register_with_interest`. Callers must ensure that the file descriptor remains valid, open, and unchanged for the lifetime of the `AsyncFd`.
    ├ Announcement: https://github.com/tokio-rs/tokio/pull/8587
    ├ Solution: Upgrade to >=1.51.6, <1.52.0 OR >=1.53.3 (try `cargo update -p tokio`)
    ├ tokio v1.53.1
      ├── async_executors v0.7.0
      │   └── tor-rtcompat v0.46.0
      │       ├── arti-client v0.46.0
      │       │   └── reed-tor v0.5.0-rc1
      │       │       ├── reed-cli v0.5.0-rc1
      │       │       │   └── reed-desktop v0.3.0
      │       │       ├── reed-desktop v0.3.0 (*)
      │       │       └── reed-smptls v0.5.0-rc1
      │       │           └── reed-cli v0.5.0-rc1 (*)
      │       ├── reed-tor v0.5.0-rc1 (*)
      │       ├── tor-async-utils v0.46.0
      │       │   ├── arti-client v0.46.0 (*)
      │       │   ├── tor-chanmgr v0.46.0
      │       │   │   ├── arti-client v0.46.0 (*)
      │       │   │   ├── tor-circmgr v0.46.0
      │       │   │   │   ├── arti-client v0.46.0 (*)
      │       │   │   │   ├── tor-dirclient v0.46.0
      │       │   │   │   │   ├── tor-dirmgr v0.46.0
      │       │   │   │   │   │   └── arti-client v0.46.0 (*)
      │       │   │   │   │   ├── tor-hsclient v0.46.0
      │       │   │   │   │   │   ├── arti-client v0.46.0 (*)
      │       │   │   │   │   │   └── reed-tor v0.5.0-rc1 (*)
      │       │   │   │   │   └── tor-hsservice v0.46.0
      │       │   │   │   │       ├── arti-client v0.46.0 (*)
      │       │   │   │   │       └── reed-tor v0.5.0-rc1 (*)
      │       │   │   │   ├── tor-dirmgr v0.46.0 (*)
      │       │   │   │   ├── tor-hsclient v0.46.0 (*)
      │       │   │   │   └── tor-hsservice v0.46.0 (*)
      │       │   │   └── tor-ptmgr v0.46.0
      │       │   │       └── arti-client v0.46.0 (*)
      │       │   ├── tor-circmgr v0.46.0 (*)
      │       │   ├── tor-dirmgr v0.46.0 (*)
      │       │   ├── tor-guardmgr v0.46.0
      │       │   │   ├── arti-client v0.46.0 (*)
      │       │   │   ├── tor-circmgr v0.46.0 (*)
      │       │   │   └── tor-dirmgr v0.46.0 (*)
      │       │   ├── tor-hsclient v0.46.0 (*)
      │       │   ├── tor-hsservice v0.46.0 (*)
      │       │   ├── tor-memquota v0.46.0
      │       │   │   ├── arti-client v0.46.0 (*)
      │       │   │   ├── tor-cell v0.46.0
      │       │   │   │   ├── reed-tor v0.5.0-rc1 (*)
      │       │   │   │   ├── tor-chanmgr v0.46.0 (*)
      │       │   │   │   ├── tor-circmgr v0.46.0 (*)
      │       │   │   │   ├── tor-hsclient v0.46.0 (*)
      │       │   │   │   ├── tor-hsservice v0.46.0 (*)
      │       │   │   │   ├── tor-netdoc v0.46.0
      │       │   │   │   │   ├── arti-client v0.46.0 (*)
      │       │   │   │   │   ├── tor-circmgr v0.46.0 (*)
      │       │   │   │   │   ├── tor-consdiff v0.46.0
      │       │   │   │   │   │   └── tor-dirmgr v0.46.0 (*)
      │       │   │   │   │   ├── tor-dirclient v0.46.0 (*)
      │       │   │   │   │   ├── tor-dircommon v0.46.0
      │       │   │   │   │   │   ├── arti-client v0.46.0 (*)
      │       │   │   │   │   │   ├── tor-circmgr v0.46.0 (*)
      │       │   │   │   │   │   ├── tor-dirmgr v0.46.0 (*)
      │       │   │   │   │   │   └── tor-guardmgr v0.46.0 (*)
      │       │   │   │   │   ├── tor-dirmgr v0.46.0 (*)
      │       │   │   │   │   ├── tor-guardmgr v0.46.0 (*)
      │       │   │   │   │   ├── tor-hsclient v0.46.0 (*)
      │       │   │   │   │   ├── tor-hsservice v0.46.0 (*)
      │       │   │   │   │   ├── tor-netdir v0.46.0
      │       │   │   │   │   │   ├── arti-client v0.46.0 (*)
      │       │   │   │   │   │   ├── tor-chanmgr v0.46.0 (*)
      │       │   │   │   │   │   ├── tor-circmgr v0.46.0 (*)
      │       │   │   │   │   │   ├── tor-dirmgr v0.46.0 (*)
      │       │   │   │   │   │   ├── tor-guardmgr v0.46.0 (*)
      │       │   │   │   │   │   ├── tor-hsclient v0.46.0 (*)
      │       │   │   │   │   │   ├── tor-hsservice v0.46.0 (*)
      │       │   │   │   │   │   └── tor-relay-selection v0.46.0
      │       │   │   │   │   │       ├── tor-circmgr v0.46.0 (*)
      │       │   │   │   │   │       ├── tor-guardmgr v0.46.0 (*)
      │       │   │   │   │   │       └── tor-hsservice v0.46.0 (*)
      │       │   │   │   │   └── tor-relay-selection v0.46.0 (*)
      │       │   │   │   └── tor-proto v0.46.0
      │       │   │   │       ├── arti-client v0.46.0 (*)
      │       │   │   │       ├── reed-tor v0.5.0-rc1 (*)
      │       │   │   │       ├── tor-chanmgr v0.46.0 (*)
      │       │   │   │       ├── tor-circmgr v0.46.0 (*)
      │       │   │   │       ├── tor-dirclient v0.46.0 (*)
      │       │   │   │       ├── tor-dirmgr v0.46.0 (*)
      │       │   │   │       ├── tor-guardmgr v0.46.0 (*)
      │       │   │   │       ├── tor-hsclient v0.46.0 (*)
      │       │   │   │       ├── tor-hsservice v0.46.0 (*)
      │       │   │   │       └── tor-ptmgr v0.46.0 (*)
      │       │   │   ├── tor-chanmgr v0.46.0 (*)
      │       │   │   ├── tor-circmgr v0.46.0 (*)
      │       │   │   ├── tor-hsclient v0.46.0 (*)
      │       │   │   ├── tor-hscrypto v0.46.0
      │       │   │   │   ├── arti-client v0.46.0 (*)
      │       │   │   │   ├── reed-tor v0.5.0-rc1 (*)
      │       │   │   │   ├── tor-cell v0.46.0 (*)
      │       │   │   │   ├── tor-dirclient v0.46.0 (*)
      │       │   │   │   ├── tor-hsclient v0.46.0 (*)
      │       │   │   │   ├── tor-hsservice v0.46.0 (*)
      │       │   │   │   ├── tor-keymgr v0.46.0
      │       │   │   │   │   ├── arti-client v0.46.0 (*)
      │       │   │   │   │   ├── reed-tor v0.5.0-rc1 (*)
      │       │   │   │   │   ├── tor-chanmgr v0.46.0 (*)
      │       │   │   │   │   ├── tor-hsclient v0.46.0 (*)
      │       │   │   │   │   └── tor-hsservice v0.46.0 (*)
      │       │   │   │   ├── tor-netdir v0.46.0 (*)
      │       │   │   │   ├── tor-netdoc v0.46.0 (*)
      │       │   │   │   └── tor-proto v0.46.0 (*)
      │       │   │   ├── tor-linkspec v0.46.0
      │       │   │   │   ├── arti-client v0.46.0 (*)
      │       │   │   │   ├── tor-cell v0.46.0 (*)
      │       │   │   │   ├── tor-chanmgr v0.46.0 (*)
      │       │   │   │   ├── tor-circmgr v0.46.0 (*)
      │       │   │   │   ├── tor-dirclient v0.46.0 (*)
      │       │   │   │   ├── tor-dircommon v0.46.0 (*)
      │       │   │   │   ├── tor-guardmgr v0.46.0 (*)
      │       │   │   │   ├── tor-hsclient v0.46.0 (*)
      │       │   │   │   ├── tor-hsservice v0.46.0 (*)
      │       │   │   │   ├── tor-netdir v0.46.0 (*)
      │       │   │   │   ├── tor-netdoc v0.46.0 (*)
      │       │   │   │   ├── tor-proto v0.46.0 (*)
      │       │   │   │   ├── tor-ptmgr v0.46.0 (*)
      │       │   │   │   └── tor-relay-selection v0.46.0 (*)
      │       │   │   ├── tor-proto v0.46.0 (*)
      │       │   │   └── tor-units v0.46.0
      │       │   │       ├── tor-cell v0.46.0 (*)
      │       │   │       ├── tor-chanmgr v0.46.0 (*)
      │       │   │       ├── tor-circmgr v0.46.0 (*)
      │       │   │       ├── tor-guardmgr v0.46.0 (*)
      │       │   │       ├── tor-hscrypto v0.46.0 (*)
      │       │   │       ├── tor-netdir v0.46.0 (*)
      │       │   │       ├── tor-netdoc v0.46.0 (*)
      │       │   │       └── tor-proto v0.46.0 (*)
      │       │   ├── tor-persist v0.46.0
      │       │   │   ├── arti-client v0.46.0 (*)
      │       │   │   ├── tor-circmgr v0.46.0 (*)
      │       │   │   ├── tor-dirmgr v0.46.0 (*)
      │       │   │   ├── tor-guardmgr v0.46.0 (*)
      │       │   │   ├── tor-hsclient v0.46.0 (*)
      │       │   │   ├── tor-hsservice v0.46.0 (*)
      │       │   │   └── tor-keymgr v0.46.0 (*)
      │       │   ├── tor-proto v0.46.0 (*)
      │       │   └── tor-ptmgr v0.46.0 (*)
      │       ├── tor-chanmgr v0.46.0 (*)
      │       ├── tor-circmgr v0.46.0 (*)
      │       ├── tor-config v0.46.0
      │       │   ├── arti-client v0.46.0 (*)
      │       │   ├── reed-tor v0.5.0-rc1 (*)
      │       │   ├── tor-chanmgr v0.46.0 (*)
      │       │   ├── tor-circmgr v0.46.0 (*)
      │       │   ├── tor-dircommon v0.46.0 (*)
      │       │   ├── tor-dirmgr v0.46.0 (*)
      │       │   ├── tor-guardmgr v0.46.0 (*)
      │       │   ├── tor-hsclient v0.46.0 (*)
      │       │   ├── tor-hsservice v0.46.0 (*)
      │       │   ├── tor-keymgr v0.46.0 (*)
      │       │   ├── tor-linkspec v0.46.0 (*)
      │       │   ├── tor-memquota v0.46.0 (*)
      │       │   ├── tor-proto v0.46.0 (*)
      │       │   └── tor-ptmgr v0.46.0 (*)
      │       ├── tor-dirclient v0.46.0 (*)
      │       ├── tor-dirmgr v0.46.0 (*)
      │       ├── tor-guardmgr v0.46.0 (*)
      │       ├── tor-hsclient v0.46.0 (*)
      │       ├── tor-hsservice v0.46.0 (*)
      │       ├── tor-log-ratelim v0.46.0
      │       │   ├── tor-hsservice v0.46.0 (*)
      │       │   ├── tor-memquota v0.46.0 (*)
      │       │   └── tor-proto v0.46.0 (*)
      │       ├── tor-memquota v0.46.0 (*)
      │       ├── tor-proto v0.46.0 (*)
      │       ├── tor-ptmgr v0.46.0 (*)
      │       └── tor-rtmock v0.46.0
      │           └── tor-proto v0.46.0 (*)
      ├── h2 v0.4.19
      │   └── reed-smptls v0.5.0-rc1 (*)
      ├── reed-cli v0.5.0-rc1 (*)
      ├── reed-desktop v0.3.0 (*)
      ├── reed-smptls v0.5.0-rc1 (*)
      ├── reed-tor v0.5.0-rc1 (*)
      ├── tauri v2.11.5
      │   ├── reed-desktop v0.3.0 (*)
      │   ├── tauri-plugin-dialog v2.7.3
      │   │   └── reed-desktop v0.3.0 (*)
      │   ├── tauri-plugin-fs v2.5.2
      │   │   └── tauri-plugin-dialog v2.7.3 (*)
      │   └── tauri-plugin-notification v2.4.0
      │       └── reed-desktop v0.3.0 (*)
      ├── tokio-rustls v0.26.5
      │   ├── reed-smptls v0.5.0-rc1 (*)
      │   └── tokio-tungstenite v0.30.0
      │       ├── reed-cli v0.5.0-rc1 (*)
      │       └── reed-tor v0.5.0-rc1 (*)
      ├── tokio-serial v5.5.0
      │   └── reed-cli v0.5.0-rc1 (*)
      ├── tokio-tungstenite v0.30.0 (*)
      ├── tokio-util v0.7.19
      │   ├── h2 v0.4.19 (*)
      │   ├── reed-tor v0.5.0-rc1 (*)
      │   ├── tor-async-utils v0.46.0 (*)
      │   ├── tor-proto v0.46.0 (*)
      │   └── tor-rtcompat v0.46.0 (*)
      ├── tor-async-utils v0.46.0 (*)
      ├── tor-proto v0.46.0 (*)
      └── tor-rtcompat v0.46.0 (*)

warning[advisory-not-detected]: advisory was not encountered
    ┌─ /workspace/exo/reed/tools/release/deny-desktop.toml:124:11
    │
124 │   { id = "RUSTSEC-2025-0141", reason = "lockfile only: optional `bincode` dependency of typed-index-collections (via tor-netdir), never enabled (a weak `bincode?/alloc` feature puts it in the lock)" },
    │           ━━━━━━━━━━━━━━━━━             ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ignore reason
    │           │                              
    │           no crate matched advisory criteria

warning[advisory-not-detected]: advisory was not encountered
    ┌─ /workspace/exo/reed/tools/release/deny-desktop.toml:125:11
    │
125 │   { id = "RUSTSEC-2026-0173", reason = "lockfile only: cfg(hax) dependency of hax-lib-macros (libcrux-ml-kem's verification annotations); cargo never compiles it for a Reed target" },
    │           ━━━━━━━━━━━━━━━━━             ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ignore reason
    │           │                              
    │           no crate matched advisory criteria

advisories FAILED
FAIL cargo deny desktop (exit 1)
desktop: 20 accepted advisories, 18 matched in the crate graph, 2 lockfile only (verified not compiled)
advisories.sh deny: FAIL
cargo deny exit 1

cargo audit (root, chatmail, desktop lockfiles)

==== cargo audit Cargo.lock (17 accepted ids from deny.toml)
    Fetching advisory database from `https://github.com/RustSec/advisory-db.git`
      Loaded 1352 security advisories (from /tmp/rustsec-advisory-db)
    Updating crates.io index
    Scanning /workspace/exo/reed/Cargo.lock for vulnerabilities (834 crate dependencies)
Crate:     crypto-bigint
Version:   0.5.5
Title:     Multiple timing variability issues in operations intended to be constant-time
Date:      2026-10-23
ID:        RUSTSEC-2026-0387
URL:       https://github.com/RustCrypto/crypto-bigint/pull/1365
Solution:  Upgrade to >=0.7.6

Crate:     ctutils
Version:   0.4.2
Title:     Non-constant-time mask generation and `u128` comparisons
Date:      2026-10-23
ID:        RUSTSEC-2026-0385
URL:       https://github.com/RustCrypto/utils/pull/1569
Solution:  Upgrade to >=0.4.4

Crate:     tokio
Version:   1.53.1
Warning:   unsound
Title:     `AsyncFd::new` and related constructors violate I/O safety
Date:      2026-10-13
ID:        RUSTSEC-2026-0386
URL:       https://rustsec.org/advisories/RUSTSEC-2026-0386

error: 2 vulnerabilities found!
error: 1 denied warning found!
FAIL cargo audit Cargo.lock (exit 1)
==== cargo audit host/reed-chatmail/embedded/Cargo.lock (16 accepted ids from tools/release/deny-chatmail.toml)
    Fetching advisory database from `https://github.com/RustSec/advisory-db.git`
      Loaded 1352 security advisories (from /tmp/rustsec-advisory-db)
    Updating crates.io index
    Scanning /workspace/exo/reed/host/reed-chatmail/embedded/Cargo.lock for vulnerabilities (720 crate dependencies)
Crate:     crypto-bigint
Version:   0.5.5
Title:     Multiple timing variability issues in operations intended to be constant-time
Date:      2026-10-23
ID:        RUSTSEC-2026-0387
URL:       https://github.com/RustCrypto/crypto-bigint/pull/1365
Solution:  Upgrade to >=0.7.6

Crate:     ctutils
Version:   0.4.2
Title:     Non-constant-time mask generation and `u128` comparisons
Date:      2026-10-23
ID:        RUSTSEC-2026-0385
URL:       https://github.com/RustCrypto/utils/pull/1569
Solution:  Upgrade to >=0.4.4

Crate:     tokio
Version:   1.53.1
Warning:   unsound
Title:     `AsyncFd::new` and related constructors violate I/O safety
Date:      2026-10-13
ID:        RUSTSEC-2026-0386
URL:       https://rustsec.org/advisories/RUSTSEC-2026-0386

error: 2 vulnerabilities found!
error: 1 denied warning found!
FAIL cargo audit host/reed-chatmail/embedded/Cargo.lock (exit 1)
==== cargo audit apps/desktop/src-tauri/Cargo.lock (20 accepted ids from tools/release/deny-desktop.toml)
    Fetching advisory database from `https://github.com/RustSec/advisory-db.git`
      Loaded 1352 security advisories (from /tmp/rustsec-advisory-db)
    Updating crates.io index
    Scanning /workspace/exo/reed/apps/desktop/src-tauri/Cargo.lock for vulnerabilities (919 crate dependencies)
Crate:     crypto-bigint
Version:   0.5.5
Title:     Multiple timing variability issues in operations intended to be constant-time
Date:      2026-10-23
ID:        RUSTSEC-2026-0387
URL:       https://github.com/RustCrypto/crypto-bigint/pull/1365
Solution:  Upgrade to >=0.7.6

Crate:     ctutils
Version:   0.4.2
Title:     Non-constant-time mask generation and `u128` comparisons
Date:      2026-10-23
ID:        RUSTSEC-2026-0385
URL:       https://github.com/RustCrypto/utils/pull/1569
Solution:  Upgrade to >=0.4.4

Crate:     tokio
Version:   1.53.1
Warning:   unsound
Title:     `AsyncFd::new` and related constructors violate I/O safety
Date:      2026-10-13
ID:        RUSTSEC-2026-0386
URL:       https://rustsec.org/advisories/RUSTSEC-2026-0386

error: 2 vulnerabilities found!
error: 1 denied warning found!
FAIL cargo audit apps/desktop/src-tauri/Cargo.lock (exit 1)
advisories.sh audit: FAIL
cargo audit exit 1

pnpm audit --prod (apps/web)

No known vulnerabilities found

pnpm audit --prod (apps/site)

No known vulnerabilities found

cargo audit bin target/release/reed-relay target/release/reed-cli

==== cargo audit bin (17 accepted ids from deny.toml): target/release/reed-relay target/release/reed-cli
    Fetching advisory database from `https://github.com/RustSec/advisory-db.git`
      Loaded 1352 security advisories (from /tmp/rustsec-advisory-db)
    Updating crates.io index
       Found 'cargo auditable' data in target/release/reed-relay (276 dependencies)
Crate:     crypto-bigint
Version:   0.5.5
Title:     Multiple timing variability issues in operations intended to be constant-time
Date:      2026-10-23
ID:        RUSTSEC-2026-0387
URL:       https://github.com/RustCrypto/crypto-bigint/pull/1365
Solution:  Upgrade to >=0.7.6

Crate:     ctutils
Version:   0.4.2
Title:     Non-constant-time mask generation and `u128` comparisons
Date:      2026-10-23
ID:        RUSTSEC-2026-0385
URL:       https://github.com/RustCrypto/utils/pull/1569
Solution:  Upgrade to >=0.4.4

Crate:     tokio
Version:   1.53.1
Warning:   unsound
Title:     `AsyncFd::new` and related constructors violate I/O safety
Date:      2026-10-13
ID:        RUSTSEC-2026-0386
URL:       https://rustsec.org/advisories/RUSTSEC-2026-0386

error: 2 vulnerabilities found in target/release/reed-relay
error: 1 denied warning found in target/release/reed-relay
       Found 'cargo auditable' data in target/release/reed-cli (565 dependencies)
Crate:     crypto-bigint
Version:   0.5.5
Title:     Multiple timing variability issues in operations intended to be constant-time
Date:      2026-10-23
ID:        RUSTSEC-2026-0387
URL:       https://github.com/RustCrypto/crypto-bigint/pull/1365
Solution:  Upgrade to >=0.7.6

Crate:     ctutils
Version:   0.4.2
Title:     Non-constant-time mask generation and `u128` comparisons
Date:      2026-10-23
ID:        RUSTSEC-2026-0385
URL:       https://github.com/RustCrypto/utils/pull/1569
Solution:  Upgrade to >=0.4.4

Crate:     tokio
Version:   1.53.1
Warning:   unsound
Title:     `AsyncFd::new` and related constructors violate I/O safety
Date:      2026-10-13
ID:        RUSTSEC-2026-0386
URL:       https://rustsec.org/advisories/RUSTSEC-2026-0386

error: 2 vulnerabilities found in target/release/reed-cli
error: 1 denied warning found in target/release/reed-cli
advisories.sh bin: FAIL (exit 1)
cargo audit bin exit 1
Nightly advisories run 173 on 4a7c29d6c04ad92846133a1427237f2c1878e285. ## cargo deny check advisories (root, chatmail, desktop) ``` ==== cargo deny root (Cargo.toml, deny.toml): check advisories error[vulnerability]: Multiple timing variability issues in operations intended to be constant-time ┌─ /workspace/exo/reed/Cargo.lock:109:1 │ 109 │ crypto-bigint 0.5.5 registry+https://github.com/rust-lang/crates.io-index │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected │ ├ ID: RUSTSEC-2026-0387 ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0387 ├ ## Summary Several operations intended to be constant-time could execute secret-dependent branches, depending on the compiler and target CPU. These include subtraction, zero counting, division, and Montgomery multiplication. Additionally, `UintRef` equality could terminate at the first unequal limb, and `BoxedMontyForm::invert` branched on whether an inverse exists. ## Impact Applications using affected operations on secret integers may leak information through timing or microarchitectural side channels. This includes information about intermediate arithmetic values, matching limbs, and invertibility. Such leakage could potentially enable recovery of cryptographic secrets. Practical exploitability depends on the downstream algorithm, compiler, target CPU, and an attacker's ability to observe the side channel. ## Resolution Upgrade to v0.7.6, which removes the identified branches, updates `ctutils` to include its constant-time fixes, and adds BINSEC-based regression checks using `cargo checkct` for arithmetic on multiple targets. ├ Announcement: https://github.com/RustCrypto/crypto-bigint/pull/1365 ├ Solution: Upgrade to >=0.7.6 (try `cargo update -p crypto-bigint`) ├ crypto-bigint v0.5.5 └── elliptic-curve v0.13.8 ├── ecdsa v0.16.9 │ ├── k256 v0.13.4 │ │ └── reed-nostr v0.5.0-rc1 │ │ ├── reed-core v0.5.0-rc1 │ │ │ ├── (dev) reed-bearer v0.5.0-rc1 │ │ │ │ ├── reed-bearer-lora v0.5.0-rc1 │ │ │ │ │ ├── reed-cli v0.5.0-rc1 │ │ │ │ │ ├── reed-conformance v0.5.0-rc1 │ │ │ │ │ ├── reed-core v0.5.0-rc1 (*) │ │ │ │ │ ├── (dev) reed-mesh-client v0.5.0-rc1 │ │ │ │ │ │ ├── reed-core v0.5.0-rc1 (*) │ │ │ │ │ │ └── reed-property v0.5.0-rc1 │ │ │ │ │ │ ├── (dev) reed-conformance v0.5.0-rc1 (*) │ │ │ │ │ │ └── reed-ct-bench v0.5.0-rc1 │ │ │ │ │ └── reed-property v0.5.0-rc1 (*) │ │ │ │ ├── reed-conformance v0.5.0-rc1 (*) │ │ │ │ ├── (dev) reed-core v0.5.0-rc1 (*) │ │ │ │ ├── reed-discovery v0.5.0-rc1 │ │ │ │ │ ├── reed-cli v0.5.0-rc1 (*) │ │ │ │ │ ├── reed-conformance v0.5.0-rc1 (*) │ │ │ │ │ ├── reed-core v0.5.0-rc1 (*) │ │ │ │ │ ├── reed-property v0.5.0-rc1 (*) │ │ │ │ │ └── (dev) reed-relay v0.5.0-rc1 │ │ │ │ │ ├── (dev) reed-cli v0.5.0-rc1 (*) │ │ │ │ │ ├── reed-conformance v0.5.0-rc1 (*) │ │ │ │ │ ├── reed-property v0.5.0-rc1 (*) │ │ │ │ │ └── (dev) reed-relay v0.5.0-rc1 (*) │ │ │ │ ├── reed-property v0.5.0-rc1 (*) │ │ │ │ ├── (dev) reed-relay v0.5.0-rc1 (*) │ │ │ │ └── reed-sim v0.5.0-rc1 │ │ │ ├── reed-cli v0.5.0-rc1 (*) │ │ │ ├── reed-conformance v0.5.0-rc1 (*) │ │ │ ├── reed-ffi v0.5.0-rc1 │ │ │ ├── (dev) reed-gmessages v0.5.0-rc1 │ │ │ ├── reed-image v0.5.0-rc1 │ │ │ │ └── (dev) reed-conformance v0.5.0-rc1 (*) │ │ │ ├── reed-property v0.5.0-rc1 (*) │ │ │ ├── reed-sim v0.5.0-rc1 (*) │ │ │ ├── reed-voice v0.5.0-rc1 │ │ │ └── reed-wasm v0.5.0-rc1 │ │ └── reed-property v0.5.0-rc1 (*) │ ├── p256 v0.13.2 │ │ ├── reed-conformance v0.5.0-rc1 (*) │ │ ├── reed-relay v0.5.0-rc1 (*) │ │ └── rustls-rustcrypto v0.0.2-alpha │ │ ├── reed-cli v0.5.0-rc1 (*) │ │ ├── reed-relay v0.5.0-rc1 (*) │ │ ├── reed-smptls v0.5.0-rc1 │ │ │ ├── reed-cli v0.5.0-rc1 (*) │ │ │ └── reed-ffi v0.5.0-rc1 (*) │ │ └── reed-tor v0.5.0-rc1 │ │ ├── reed-cli v0.5.0-rc1 (*) │ │ ├── reed-ffi v0.5.0-rc1 (*) │ │ └── reed-smptls v0.5.0-rc1 (*) │ ├── p384 v0.13.1 │ │ └── rustls-rustcrypto v0.0.2-alpha (*) │ └── rustls-rustcrypto v0.0.2-alpha (*) ├── k256 v0.13.4 (*) ├── p256 v0.13.2 (*) ├── p384 v0.13.1 (*) ├── primeorder v0.13.6 │ ├── p256 v0.13.2 (*) │ └── p384 v0.13.1 (*) └── voprf v0.5.0 ├── reed-bearer v0.5.0-rc1 (*) ├── reed-discovery v0.5.0-rc1 (*) └── reed-relay v0.5.0-rc1 (*) error[vulnerability]: Non-constant-time mask generation and `u128` comparisons ┌─ /workspace/exo/reed/Cargo.lock:117:1 │ 117 │ ctutils 0.4.2 registry+https://github.com/rust-lang/crates.io-index │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected │ ├ ID: RUSTSEC-2026-0385 ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0385 ├ ## Summary The `ctutils::Choice` type has mask generation functions for each unsigned integer size (`u8`, `u16`, `u32`, `u64`, `u128`). These are `const fn` and therefore can't reuse the `asm!`-backed mask generation in the `cmov` crate that's otherwise used to ensure constant-time. In releases prior to v0.4.4, the generated code from these functions could include a branch on commonly used platforms. This has been corrected in this release and now verified on several platforms using BINSEC. Additionally, `u128` comparison operations provided via `ctutils::Choice` and intended to work in constant-time were generating branches on 32-bit targets. This has been resolved via a special case implementation of these functions for such targets. ## Impact Branch instructions on secret values can potentially leak such values via covert channels. This can enable attackers to potentially recover such secrets. ## Resolution This has been resolved by calling `Choice::to_u8()` when generating the mask, which in turn uses `black_box` as an optimization barrier. Verification that this resulted in the desired change in the generated assembly across a variety of target CPU architectures was performed by BINSEC, which now runs automatically in CI using `cargo checkct`. ├ Announcement: https://github.com/RustCrypto/utils/pull/1569 ├ Solution: Upgrade to >=0.4.4 (try `cargo update -p ctutils`) ├ ctutils v0.4.2 ├── digest v0.11.3 │ ├── blake2 v0.11.0 │ │ └── reed-bramble v0.5.0-rc1 │ │ ├── reed-core v0.5.0-rc1 │ │ │ ├── (dev) reed-bearer v0.5.0-rc1 │ │ │ │ ├── reed-bearer-lora v0.5.0-rc1 │ │ │ │ │ ├── reed-cli v0.5.0-rc1 │ │ │ │ │ ├── reed-conformance v0.5.0-rc1 │ │ │ │ │ ├── reed-core v0.5.0-rc1 (*) │ │ │ │ │ ├── (dev) reed-mesh-client v0.5.0-rc1 │ │ │ │ │ │ ├── reed-core v0.5.0-rc1 (*) │ │ │ │ │ │ └── reed-property v0.5.0-rc1 │ │ │ │ │ │ ├── (dev) reed-conformance v0.5.0-rc1 (*) │ │ │ │ │ │ └── reed-ct-bench v0.5.0-rc1 │ │ │ │ │ └── reed-property v0.5.0-rc1 (*) │ │ │ │ ├── reed-conformance v0.5.0-rc1 (*) │ │ │ │ ├── (dev) reed-core v0.5.0-rc1 (*) │ │ │ │ ├── reed-discovery v0.5.0-rc1 │ │ │ │ │ ├── reed-cli v0.5.0-rc1 (*) │ │ │ │ │ ├── reed-conformance v0.5.0-rc1 (*) │ │ │ │ │ ├── reed-core v0.5.0-rc1 (*) │ │ │ │ │ ├── reed-property v0.5.0-rc1 (*) │ │ │ │ │ └── (dev) reed-relay v0.5.0-rc1 │ │ │ │ │ ├── (dev) reed-cli v0.5.0-rc1 (*) │ │ │ │ │ ├── reed-conformance v0.5.0-rc1 (*) │ │ │ │ │ ├── reed-property v0.5.0-rc1 (*) │ │ │ │ │ └── (dev) reed-relay v0.5.0-rc1 (*) │ │ │ │ ├── reed-property v0.5.0-rc1 (*) │ │ │ │ ├── (dev) reed-relay v0.5.0-rc1 (*) │ │ │ │ └── reed-sim v0.5.0-rc1 │ │ │ ├── reed-cli v0.5.0-rc1 (*) │ │ │ ├── reed-conformance v0.5.0-rc1 (*) │ │ │ ├── reed-ffi v0.5.0-rc1 │ │ │ ├── (dev) reed-gmessages v0.5.0-rc1 │ │ │ ├── reed-image v0.5.0-rc1 │ │ │ │ └── (dev) reed-conformance v0.5.0-rc1 (*) │ │ │ ├── reed-property v0.5.0-rc1 (*) │ │ │ ├── reed-sim v0.5.0-rc1 (*) │ │ │ ├── reed-voice v0.5.0-rc1 │ │ │ └── reed-wasm v0.5.0-rc1 │ │ ├── reed-property v0.5.0-rc1 (*) │ │ └── (dev) reed-tor v0.5.0-rc1 │ │ ├── reed-cli v0.5.0-rc1 (*) │ │ ├── reed-ffi v0.5.0-rc1 (*) │ │ └── reed-smptls v0.5.0-rc1 │ │ ├── reed-cli v0.5.0-rc1 (*) │ │ └── reed-ffi v0.5.0-rc1 (*) │ ├── sha1 v0.11.0 │ │ └── tungstenite v0.30.0 │ │ └── tokio-tungstenite v0.30.0 │ │ ├── reed-cli v0.5.0-rc1 (*) │ │ ├── reed-relay v0.5.0-rc1 (*) │ │ └── reed-tor v0.5.0-rc1 (*) │ ├── sha3 v0.11.0 │ │ └── ml-kem v0.3.2 │ │ ├── reed-conformance v0.5.0-rc1 (*) │ │ └── (dev) reed-crypto v0.5.0-rc1 │ │ ├── reed-bearer v0.5.0-rc1 (*) │ │ ├── reed-bearer-lora v0.5.0-rc1 (*) │ │ ├── reed-bramble v0.5.0-rc1 (*) │ │ ├── reed-conformance v0.5.0-rc1 (*) │ │ ├── reed-core v0.5.0-rc1 (*) │ │ ├── reed-ct-bench v0.5.0-rc1 (*) │ │ ├── reed-discovery v0.5.0-rc1 (*) │ │ ├── reed-interop v0.5.0-rc1 │ │ │ ├── reed-bramble v0.5.0-rc1 (*) │ │ │ ├── reed-chatmail v0.5.0-rc1 │ │ │ │ └── reed-cli v0.5.0-rc1 (*) │ │ │ ├── reed-cli v0.5.0-rc1 (*) │ │ │ ├── reed-core v0.5.0-rc1 (*) │ │ │ ├── reed-gmessages v0.5.0-rc1 (*) │ │ │ ├── reed-interop-tests v0.5.0-rc1 │ │ │ ├── reed-mesh-client v0.5.0-rc1 (*) │ │ │ ├── reed-nostr v0.5.0-rc1 │ │ │ │ ├── reed-core v0.5.0-rc1 (*) │ │ │ │ └── reed-property v0.5.0-rc1 (*) │ │ │ ├── reed-property v0.5.0-rc1 (*) │ │ │ ├── reed-rcs v0.5.0-rc1 │ │ │ │ └── reed-property v0.5.0-rc1 (*) │ │ │ └── reed-simplex v0.5.0-rc1 │ │ │ ├── reed-core v0.5.0-rc1 (*) │ │ │ └── reed-property v0.5.0-rc1 (*) │ │ ├── reed-kani v0.5.0-rc1 │ │ ├── reed-mesh-client v0.5.0-rc1 (*) │ │ ├── reed-nostr v0.5.0-rc1 (*) │ │ ├── reed-property v0.5.0-rc1 (*) │ │ ├── reed-proto v0.5.0-rc1 │ │ │ ├── reed-bearer v0.5.0-rc1 (*) │ │ │ ├── reed-bearer-lora v0.5.0-rc1 (*) │ │ │ ├── reed-bramble v0.5.0-rc1 (*) │ │ │ ├── reed-cli v0.5.0-rc1 (*) │ │ │ ├── reed-conformance v0.5.0-rc1 (*) │ │ │ ├── reed-core v0.5.0-rc1 (*) │ │ │ ├── reed-ct-bench v0.5.0-rc1 (*) │ │ │ ├── reed-discovery v0.5.0-rc1 (*) │ │ │ ├── reed-ffi v0.5.0-rc1 (*) │ │ │ ├── reed-image v0.5.0-rc1 (*) │ │ │ ├── reed-interop v0.5.0-rc1 (*) │ │ │ ├── reed-kani v0.5.0-rc1 (*) │ │ │ ├── reed-mesh-client v0.5.0-rc1 (*) │ │ │ ├── reed-nostr v0.5.0-rc1 (*) │ │ │ ├── reed-property v0.5.0-rc1 (*) │ │ │ ├── reed-ratchet-ref v0.5.0-rc1 │ │ │ │ └── reed-property v0.5.0-rc1 (*) │ │ │ ├── reed-rcs v0.5.0-rc1 (*) │ │ │ ├── reed-relay v0.5.0-rc1 (*) │ │ │ ├── reed-session v0.5.0-rc1 │ │ │ │ ├── reed-conformance v0.5.0-rc1 (*) │ │ │ │ ├── reed-core v0.5.0-rc1 (*) │ │ │ │ ├── reed-ct-bench v0.5.0-rc1 (*) │ │ │ │ ├── reed-ffi v0.5.0-rc1 (*) │ │ │ │ ├── reed-kani v0.5.0-rc1 (*) │ │ │ │ ├── reed-property v0.5.0-rc1 (*) │ │ │ │ └── reed-wasm v0.5.0-rc1 (*) │ │ │ ├── reed-sim v0.5.0-rc1 (*) │ │ │ ├── reed-simplex v0.5.0-rc1 (*) │ │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ │ ├── reed-voice v0.5.0-rc1 (*) │ │ │ └── reed-wasm v0.5.0-rc1 (*) │ │ ├── reed-ratchet-ref v0.5.0-rc1 (*) │ │ ├── reed-relay v0.5.0-rc1 (*) │ │ ├── reed-session v0.5.0-rc1 (*) │ │ ├── reed-simplex v0.5.0-rc1 (*) │ │ ├── reed-store v0.5.0-rc1 │ │ │ ├── (dev) reed-bearer v0.5.0-rc1 (*) │ │ │ ├── reed-conformance v0.5.0-rc1 (*) │ │ │ ├── reed-core v0.5.0-rc1 (*) │ │ │ ├── reed-ffi v0.5.0-rc1 (*) │ │ │ ├── (dev) reed-gmessages v0.5.0-rc1 (*) │ │ │ ├── reed-property v0.5.0-rc1 (*) │ │ │ ├── reed-sim v0.5.0-rc1 (*) │ │ │ ├── (dev) reed-store-sqlite v0.5.0-rc1 │ │ │ │ ├── reed-cli v0.5.0-rc1 (*) │ │ │ │ └── reed-ffi v0.5.0-rc1 (*) │ │ │ └── reed-wasm v0.5.0-rc1 (*) │ │ └── reed-wasm v0.5.0-rc1 (*) │ └── sha3 v0.12.0 │ └── derive-deftly-macros v1.11.5 │ └── derive-deftly v1.11.5 │ ├── arti-client v0.46.0 │ │ └── reed-tor v0.5.0-rc1 (*) │ ├── pwd-grp v1.0.2 │ │ └── fs-mistrust v0.15.1 │ │ ├── arti-client v0.46.0 (*) │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ ├── tor-config v0.46.0 │ │ │ ├── arti-client v0.46.0 (*) │ │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ │ ├── tor-chanmgr v0.46.0 │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ ├── tor-circmgr v0.46.0 │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ ├── tor-dirclient v0.46.0 │ │ │ │ │ │ ├── tor-dirmgr v0.46.0 │ │ │ │ │ │ │ └── arti-client v0.46.0 (*) │ │ │ │ │ │ ├── tor-hsclient v0.46.0 │ │ │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ │ │ └── reed-tor v0.5.0-rc1 (*) │ │ │ │ │ │ └── tor-hsservice v0.46.0 │ │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ │ └── reed-tor v0.5.0-rc1 (*) │ │ │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ │ └── tor-hsservice v0.46.0 (*) │ │ │ │ └── tor-ptmgr v0.46.0 │ │ │ │ └── arti-client v0.46.0 (*) │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ ├── tor-dircommon v0.46.0 │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ │ └── tor-guardmgr v0.46.0 │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ └── tor-dirmgr v0.46.0 (*) │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ ├── tor-keymgr v0.46.0 │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ └── tor-hsservice v0.46.0 (*) │ │ │ ├── tor-linkspec v0.46.0 │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ ├── tor-cell v0.46.0 │ │ │ │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ │ ├── tor-netdoc v0.46.0 │ │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ │ │ ├── tor-consdiff v0.46.0 │ │ │ │ │ │ │ └── tor-dirmgr v0.46.0 (*) │ │ │ │ │ │ ├── tor-dirclient v0.46.0 (*) │ │ │ │ │ │ ├── tor-dircommon v0.46.0 (*) │ │ │ │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ │ │ ├── tor-netdir v0.46.0 │ │ │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ │ │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ │ │ │ └── tor-relay-selection v0.46.0 │ │ │ │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ │ │ │ │ └── tor-hsservice v0.46.0 (*) │ │ │ │ │ │ └── tor-relay-selection v0.46.0 (*) │ │ │ │ │ └── tor-proto v0.46.0 │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ │ ├── tor-dirclient v0.46.0 (*) │ │ │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ │ └── tor-ptmgr v0.46.0 (*) │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ ├── tor-dirclient v0.46.0 (*) │ │ │ │ ├── tor-dircommon v0.46.0 (*) │ │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ ├── tor-netdir v0.46.0 (*) │ │ │ │ ├── tor-netdoc v0.46.0 (*) │ │ │ │ ├── tor-proto v0.46.0 (*) │ │ │ │ ├── tor-ptmgr v0.46.0 (*) │ │ │ │ └── tor-relay-selection v0.46.0 (*) │ │ │ ├── tor-memquota v0.46.0 │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ ├── tor-cell v0.46.0 (*) │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ ├── tor-hscrypto v0.46.0 │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ │ │ │ ├── tor-cell v0.46.0 (*) │ │ │ │ │ ├── tor-dirclient v0.46.0 (*) │ │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ │ ├── tor-keymgr v0.46.0 (*) │ │ │ │ │ ├── tor-netdir v0.46.0 (*) │ │ │ │ │ ├── tor-netdoc v0.46.0 (*) │ │ │ │ │ └── tor-proto v0.46.0 (*) │ │ │ │ ├── tor-linkspec v0.46.0 (*) │ │ │ │ ├── tor-proto v0.46.0 (*) │ │ │ │ └── tor-units v0.46.0 │ │ │ │ ├── tor-cell v0.46.0 (*) │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ │ ├── tor-hscrypto v0.46.0 (*) │ │ │ │ ├── tor-netdir v0.46.0 (*) │ │ │ │ ├── tor-netdoc v0.46.0 (*) │ │ │ │ └── tor-proto v0.46.0 (*) │ │ │ ├── tor-proto v0.46.0 (*) │ │ │ └── tor-ptmgr v0.46.0 (*) │ │ ├── tor-dirmgr v0.46.0 (*) │ │ ├── tor-hsservice v0.46.0 (*) │ │ ├── tor-keymgr v0.46.0 (*) │ │ ├── tor-persist v0.46.0 │ │ │ ├── arti-client v0.46.0 (*) │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ └── tor-keymgr v0.46.0 (*) │ │ └── tor-ptmgr v0.46.0 (*) │ ├── tor-async-utils v0.46.0 │ │ ├── arti-client v0.46.0 (*) │ │ ├── tor-chanmgr v0.46.0 (*) │ │ ├── tor-circmgr v0.46.0 (*) │ │ ├── tor-dirmgr v0.46.0 (*) │ │ ├── tor-guardmgr v0.46.0 (*) │ │ ├── tor-hsclient v0.46.0 (*) │ │ ├── tor-hsservice v0.46.0 (*) │ │ ├── tor-memquota v0.46.0 (*) │ │ ├── tor-persist v0.46.0 (*) │ │ ├── tor-proto v0.46.0 (*) │ │ └── tor-ptmgr v0.46.0 (*) │ ├── tor-basic-utils v0.46.0 │ │ ├── arti-client v0.46.0 (*) │ │ ├── tor-async-utils v0.46.0 (*) │ │ ├── tor-cell v0.46.0 (*) │ │ ├── tor-chanmgr v0.46.0 (*) │ │ ├── tor-circmgr v0.46.0 (*) │ │ ├── tor-config v0.46.0 (*) │ │ ├── tor-dircommon v0.46.0 (*) │ │ ├── tor-dirmgr v0.46.0 (*) │ │ ├── tor-guardmgr v0.46.0 (*) │ │ ├── tor-hsclient v0.46.0 (*) │ │ ├── tor-hscrypto v0.46.0 (*) │ │ ├── tor-hsservice v0.46.0 (*) │ │ ├── tor-keymgr v0.46.0 (*) │ │ ├── tor-linkspec v0.46.0 (*) │ │ ├── tor-memquota v0.46.0 (*) │ │ ├── tor-netdir v0.46.0 (*) │ │ ├── tor-netdoc v0.46.0 (*) │ │ ├── tor-persist v0.46.0 (*) │ │ ├── tor-proto v0.46.0 (*) │ │ ├── tor-protover v0.46.0 │ │ │ ├── arti-client v0.46.0 (*) │ │ │ ├── tor-cell v0.46.0 (*) │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ ├── tor-linkspec v0.46.0 (*) │ │ │ ├── tor-netdir v0.46.0 (*) │ │ │ ├── tor-netdoc v0.46.0 (*) │ │ │ └── tor-proto v0.46.0 (*) │ │ ├── tor-ptmgr v0.46.0 (*) │ │ └── tor-relay-selection v0.46.0 (*) │ ├── tor-bytes v0.46.0 │ │ ├── tor-cell v0.46.0 (*) │ │ ├── tor-cert v0.46.0 │ │ │ ├── tor-cell v0.46.0 (*) │ │ │ ├── tor-key-forge v0.46.0 │ │ │ │ ├── tor-hscrypto v0.46.0 (*) │ │ │ │ └── tor-keymgr v0.46.0 (*) │ │ │ ├── tor-netdoc v0.46.0 (*) │ │ │ └── tor-proto v0.46.0 (*) │ │ ├── tor-hsclient v0.46.0 (*) │ │ ├── tor-hscrypto v0.46.0 (*) │ │ ├── tor-hsservice v0.46.0 (*) │ │ ├── tor-key-forge v0.46.0 (*) │ │ ├── tor-keymgr v0.46.0 (*) │ │ ├── tor-linkspec v0.46.0 (*) │ │ ├── tor-netdoc v0.46.0 (*) │ │ ├── tor-proto v0.46.0 (*) │ │ ├── tor-protover v0.46.0 (*) │ │ └── tor-socksproto v0.46.0 │ │ ├── tor-chanmgr v0.46.0 (*) │ │ └── tor-ptmgr v0.46.0 (*) │ ├── tor-cell v0.46.0 (*) │ ├── tor-chanmgr v0.46.0 (*) │ ├── tor-circmgr v0.46.0 (*) │ ├── tor-config v0.46.0 (*) │ ├── tor-dircommon v0.46.0 (*) │ ├── tor-guardmgr v0.46.0 (*) │ ├── tor-hsclient v0.46.0 (*) │ ├── tor-hscrypto v0.46.0 (*) │ ├── tor-hsservice v0.46.0 (*) │ ├── tor-key-forge v0.46.0 (*) │ ├── tor-keymgr v0.46.0 (*) │ ├── tor-linkspec v0.46.0 (*) │ ├── tor-llcrypto v0.46.0 │ │ ├── arti-client v0.46.0 (*) │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ ├── tor-bytes v0.46.0 (*) │ │ ├── tor-cell v0.46.0 (*) │ │ ├── tor-cert v0.46.0 (*) │ │ ├── tor-chanmgr v0.46.0 (*) │ │ ├── tor-checkable v0.46.0 │ │ │ ├── tor-cert v0.46.0 (*) │ │ │ ├── tor-dircommon v0.46.0 (*) │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ ├── tor-key-forge v0.46.0 (*) │ │ │ ├── tor-netdoc v0.46.0 (*) │ │ │ └── tor-proto v0.46.0 (*) │ │ ├── tor-consdiff v0.46.0 (*) │ │ ├── tor-dirclient v0.46.0 (*) │ │ ├── tor-dircommon v0.46.0 (*) │ │ ├── tor-dirmgr v0.46.0 (*) │ │ ├── tor-guardmgr v0.46.0 (*) │ │ ├── tor-hsclient v0.46.0 (*) │ │ ├── tor-hscrypto v0.46.0 (*) │ │ ├── tor-hsservice v0.46.0 (*) │ │ ├── tor-key-forge v0.46.0 (*) │ │ ├── tor-keymgr v0.46.0 (*) │ │ ├── tor-linkspec v0.46.0 (*) │ │ ├── tor-netdir v0.46.0 (*) │ │ ├── tor-netdoc v0.46.0 (*) │ │ └── tor-proto v0.46.0 (*) │ ├── tor-memquota v0.46.0 (*) │ ├── tor-memquota-cost v0.46.0 │ │ ├── tor-llcrypto v0.46.0 (*) │ │ └── tor-memquota v0.46.0 (*) │ ├── tor-netdoc v0.46.0 (*) │ ├── tor-persist v0.46.0 (*) │ ├── tor-proto v0.46.0 (*) │ ├── tor-protover v0.46.0 (*) │ ├── tor-ptmgr v0.46.0 (*) │ ├── tor-rtmock v0.46.0 │ │ └── tor-proto v0.46.0 (*) │ ├── tor-socksproto v0.46.0 (*) │ └── tor-units v0.46.0 (*) ├── hybrid-array v0.4.14 │ ├── block-buffer v0.12.1 │ │ ├── cipher v0.5.2 │ │ │ ├── aes v0.9.3 │ │ │ │ ├── tor-llcrypto v0.46.0 (*) │ │ │ │ └── tor-proto v0.46.0 (*) │ │ │ ├── ctr v0.10.1 │ │ │ │ ├── tor-llcrypto v0.46.0 (*) │ │ │ │ └── tor-proto v0.46.0 (*) │ │ │ ├── salsa20 v0.11.0 │ │ │ │ └── reed-bramble v0.5.0-rc1 (*) │ │ │ ├── tor-hscrypto v0.46.0 (*) │ │ │ ├── tor-netdoc v0.46.0 (*) │ │ │ └── tor-proto v0.46.0 (*) │ │ └── digest v0.11.3 (*) │ ├── crypto-common v0.2.2 │ │ ├── cipher v0.5.2 (*) │ │ ├── digest v0.11.3 (*) │ │ ├── kem v0.3.0 │ │ │ └── ml-kem v0.3.2 (*) │ │ └── universal-hash v0.6.1 │ │ └── polyval v0.7.3 │ │ └── tor-proto v0.46.0 (*) │ ├── inout v0.2.2 │ │ └── cipher v0.5.2 (*) │ ├── ml-kem v0.3.2 (*) │ └── module-lattice v0.2.3 │ └── ml-kem v0.3.2 (*) ├── module-lattice v0.2.3 (*) └── universal-hash v0.6.1 (*) error[unsound]: `AsyncFd::new` and related constructors violate I/O safety ┌─ /workspace/exo/reed/Cargo.lock:541:1 │ 541 │ tokio 1.53.1 registry+https://github.com/rust-lang/crates.io-index │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ unsound advisory detected │ ├ ID: RUSTSEC-2026-0386 ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0386 ├ `tokio::io::unix::AsyncFd` provides safe constructors (`new`, `with_interest`, `try_new`, and `try_with_interest`) that accept any `T: AsRawFd` rather than requiring proof of ownership or validity of the file descriptor. Because `RawFd` implements `AsRawFd`, safe code can construct an `AsyncFd` from an arbitrary or closed file descriptor, or close/replace the underlying file descriptor while the `AsyncFd` is still alive. This violates I/O safety in two ways: 1. `AsyncFd<T>` implements `AsFd` for all `T: AsRawFd` by calling `BorrowedFd::borrow_raw(self.as_raw_fd())`, allowing safe code to obtain an arbitrary `BorrowedFd<'_>` without owning the file descriptor. 2. Tokio's I/O driver stores a pointer to an internal allocation in the `epoll`/`kqueue` user data for registered file descriptors. If the underlying file descriptor is duplicated and then closed while an `AsyncFd` is alive, and the OS reuses that file descriptor number for a another IO resource on the same runtime, dropping the first `AsyncFd` deregisters the reused file descriptor number and frees the first while the original file description remains registered in `epoll`, leading to a use-after-free when a readiness event fires. Starting in Tokio 1.51.6, 1.53.3, and 1.54.0, `AsyncFd::new`, `AsyncFd::with_interest`, `AsyncFd::try_new`, and `AsyncFd::try_with_interest` are deprecated in favor of the `unsafe` constructors `AsyncFd::register` and `AsyncFd::register_with_interest`. Callers must ensure that the file descriptor remains valid, open, and unchanged for the lifetime of the `AsyncFd`. ├ Announcement: https://github.com/tokio-rs/tokio/pull/8587 ├ Solution: Upgrade to >=1.51.6, <1.52.0 OR >=1.53.3 (try `cargo update -p tokio`) ├ tokio v1.53.1 ├── async_executors v0.7.0 │ └── tor-rtcompat v0.46.0 │ ├── arti-client v0.46.0 │ │ └── reed-tor v0.5.0-rc1 │ │ ├── reed-cli v0.5.0-rc1 │ │ ├── reed-ffi v0.5.0-rc1 │ │ └── reed-smptls v0.5.0-rc1 │ │ ├── reed-cli v0.5.0-rc1 (*) │ │ └── reed-ffi v0.5.0-rc1 (*) │ ├── reed-tor v0.5.0-rc1 (*) │ ├── tor-async-utils v0.46.0 │ │ ├── arti-client v0.46.0 (*) │ │ ├── tor-chanmgr v0.46.0 │ │ │ ├── arti-client v0.46.0 (*) │ │ │ ├── tor-circmgr v0.46.0 │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ ├── tor-dirclient v0.46.0 │ │ │ │ │ ├── tor-dirmgr v0.46.0 │ │ │ │ │ │ └── arti-client v0.46.0 (*) │ │ │ │ │ ├── tor-hsclient v0.46.0 │ │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ │ └── reed-tor v0.5.0-rc1 (*) │ │ │ │ │ └── tor-hsservice v0.46.0 │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ └── reed-tor v0.5.0-rc1 (*) │ │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ └── tor-hsservice v0.46.0 (*) │ │ │ └── tor-ptmgr v0.46.0 │ │ │ └── arti-client v0.46.0 (*) │ │ ├── tor-circmgr v0.46.0 (*) │ │ ├── tor-dirmgr v0.46.0 (*) │ │ ├── tor-guardmgr v0.46.0 │ │ │ ├── arti-client v0.46.0 (*) │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ └── tor-dirmgr v0.46.0 (*) │ │ ├── tor-hsclient v0.46.0 (*) │ │ ├── tor-hsservice v0.46.0 (*) │ │ ├── tor-memquota v0.46.0 │ │ │ ├── arti-client v0.46.0 (*) │ │ │ ├── tor-cell v0.46.0 │ │ │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ ├── tor-netdoc v0.46.0 │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ │ ├── tor-consdiff v0.46.0 │ │ │ │ │ │ └── tor-dirmgr v0.46.0 (*) │ │ │ │ │ ├── tor-dirclient v0.46.0 (*) │ │ │ │ │ ├── tor-dircommon v0.46.0 │ │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ │ │ │ └── tor-guardmgr v0.46.0 (*) │ │ │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ │ ├── tor-netdir v0.46.0 │ │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ │ │ └── tor-relay-selection v0.46.0 │ │ │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ │ │ │ └── tor-hsservice v0.46.0 (*) │ │ │ │ │ └── tor-relay-selection v0.46.0 (*) │ │ │ │ └── tor-proto v0.46.0 │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ ├── tor-dirclient v0.46.0 (*) │ │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ └── tor-ptmgr v0.46.0 (*) │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ ├── tor-hscrypto v0.46.0 │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ │ │ ├── tor-cell v0.46.0 (*) │ │ │ │ ├── tor-dirclient v0.46.0 (*) │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ ├── tor-keymgr v0.46.0 │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ │ └── tor-hsservice v0.46.0 (*) │ │ │ │ ├── tor-netdir v0.46.0 (*) │ │ │ │ ├── tor-netdoc v0.46.0 (*) │ │ │ │ └── tor-proto v0.46.0 (*) │ │ │ ├── tor-linkspec v0.46.0 │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ ├── tor-cell v0.46.0 (*) │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ ├── tor-dirclient v0.46.0 (*) │ │ │ │ ├── tor-dircommon v0.46.0 (*) │ │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ ├── tor-netdir v0.46.0 (*) │ │ │ │ ├── tor-netdoc v0.46.0 (*) │ │ │ │ ├── tor-proto v0.46.0 (*) │ │ │ │ ├── tor-ptmgr v0.46.0 (*) │ │ │ │ └── tor-relay-selection v0.46.0 (*) │ │ │ ├── tor-proto v0.46.0 (*) │ │ │ └── tor-units v0.46.0 │ │ │ ├── tor-cell v0.46.0 (*) │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ ├── tor-hscrypto v0.46.0 (*) │ │ │ ├── tor-netdir v0.46.0 (*) │ │ │ ├── tor-netdoc v0.46.0 (*) │ │ │ └── tor-proto v0.46.0 (*) │ │ ├── tor-persist v0.46.0 │ │ │ ├── arti-client v0.46.0 (*) │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ └── tor-keymgr v0.46.0 (*) │ │ ├── tor-proto v0.46.0 (*) │ │ └── tor-ptmgr v0.46.0 (*) │ ├── tor-chanmgr v0.46.0 (*) │ ├── tor-circmgr v0.46.0 (*) │ ├── tor-config v0.46.0 │ │ ├── arti-client v0.46.0 (*) │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ ├── tor-chanmgr v0.46.0 (*) │ │ ├── tor-circmgr v0.46.0 (*) │ │ ├── tor-dircommon v0.46.0 (*) │ │ ├── tor-dirmgr v0.46.0 (*) │ │ ├── tor-guardmgr v0.46.0 (*) │ │ ├── tor-hsclient v0.46.0 (*) │ │ ├── tor-hsservice v0.46.0 (*) │ │ ├── tor-keymgr v0.46.0 (*) │ │ ├── tor-linkspec v0.46.0 (*) │ │ ├── tor-memquota v0.46.0 (*) │ │ ├── tor-proto v0.46.0 (*) │ │ └── tor-ptmgr v0.46.0 (*) │ ├── tor-dirclient v0.46.0 (*) │ ├── tor-dirmgr v0.46.0 (*) │ ├── tor-guardmgr v0.46.0 (*) │ ├── tor-hsclient v0.46.0 (*) │ ├── tor-hsservice v0.46.0 (*) │ ├── tor-log-ratelim v0.46.0 │ │ ├── tor-hsservice v0.46.0 (*) │ │ ├── tor-memquota v0.46.0 (*) │ │ └── tor-proto v0.46.0 (*) │ ├── tor-memquota v0.46.0 (*) │ ├── tor-proto v0.46.0 (*) │ ├── tor-ptmgr v0.46.0 (*) │ └── tor-rtmock v0.46.0 │ └── tor-proto v0.46.0 (*) ├── axum v0.8.9 │ └── reed-relay v0.5.0-rc1 │ ├── (dev) reed-cli v0.5.0-rc1 (*) │ ├── reed-conformance v0.5.0-rc1 │ ├── reed-property v0.5.0-rc1 │ │ ├── (dev) reed-conformance v0.5.0-rc1 (*) │ │ └── reed-ct-bench v0.5.0-rc1 │ └── (dev) reed-relay v0.5.0-rc1 (*) ├── h2 v0.4.19 │ ├── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ ├── hyper-rustls v0.27.9 │ │ │ └── reqwest v0.12.28 │ │ │ └── reed-relay v0.5.0-rc1 (*) │ │ ├── hyper-util v0.1.20 │ │ │ ├── axum v0.8.9 (*) │ │ │ ├── hyper-rustls v0.27.9 (*) │ │ │ └── reqwest v0.12.28 (*) │ │ └── reqwest v0.12.28 (*) │ ├── reed-smptls v0.5.0-rc1 (*) │ └── reqwest v0.12.28 (*) ├── hyper v1.11.1 (*) ├── hyper-rustls v0.27.9 (*) ├── hyper-util v0.1.20 (*) ├── reed-cli v0.5.0-rc1 (*) ├── (dev) reed-conformance v0.5.0-rc1 (*) ├── reed-gmessages v0.5.0-rc1 ├── reed-relay v0.5.0-rc1 (*) ├── reed-smptls v0.5.0-rc1 (*) ├── (dev) reed-tor v0.5.0-rc1 (*) ├── reqwest v0.12.28 (*) ├── tokio-rustls v0.26.5 │ ├── hyper-rustls v0.27.9 (*) │ ├── (dev) reed-cli v0.5.0-rc1 (*) │ ├── reed-smptls v0.5.0-rc1 (*) │ ├── reqwest v0.12.28 (*) │ └── tokio-tungstenite v0.30.0 │ ├── reed-cli v0.5.0-rc1 (*) │ ├── reed-relay v0.5.0-rc1 (*) │ └── reed-tor v0.5.0-rc1 (*) ├── tokio-serial v5.5.0 │ └── reed-cli v0.5.0-rc1 (*) ├── tokio-tungstenite v0.29.0 │ └── axum v0.8.9 (*) ├── tokio-tungstenite v0.30.0 (*) ├── tokio-util v0.7.19 │ ├── h2 v0.4.19 (*) │ ├── reed-tor v0.5.0-rc1 (*) │ ├── tor-async-utils v0.46.0 (*) │ ├── tor-proto v0.46.0 (*) │ └── tor-rtcompat v0.46.0 (*) ├── tor-async-utils v0.46.0 (*) ├── tor-proto v0.46.0 (*) ├── tor-rtcompat v0.46.0 (*) └── tower v0.5.3 ├── axum v0.8.9 (*) ├── reqwest v0.12.28 (*) └── tower-http v0.6.11 └── reqwest v0.12.28 (*) warning[advisory-not-detected]: advisory was not encountered ┌─ /workspace/exo/reed/deny.toml:145:11 │ 145 │ { id = "RUSTSEC-2025-0141", reason = "lockfile only: optional `bincode` dependency of typed-index-collections (via tor-netdir), never enabled; cargo-auditable lists it for reed-cli through a weak feature, no bincode code is built" }, │ ━━━━━━━━━━━━━━━━━ ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ignore reason │ │ │ no crate matched advisory criteria warning[advisory-not-detected]: advisory was not encountered ┌─ /workspace/exo/reed/deny.toml:148:11 │ 148 │ { id = "RUSTSEC-2026-0173", reason = "lockfile only: cfg(hax) dependency of hax-lib-macros (libcrux-ml-kem's verification annotations); cargo never compiles it for a Reed target" }, │ ━━━━━━━━━━━━━━━━━ ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ignore reason │ │ │ no crate matched advisory criteria warning[advisory-not-detected]: advisory was not encountered ┌─ /workspace/exo/reed/deny.toml:137:11 │ 137 │ { id = "RUSTSEC-2026-0330", reason = "lockfile only: libcrux-kem 0.0.9 sits behind hpke-rs's optional `libcrux` feature, which no crate enables; remove when openmls_rust_crypto allows hpke-rs 0.8 (libcrux-kem 0.0.10)" }, │ ━━━━━━━━━━━━━━━━━ ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ignore reason │ │ │ no crate matched advisory criteria warning[advisory-not-detected]: advisory was not encountered ┌─ /workspace/exo/reed/deny.toml:138:11 │ 138 │ { id = "RUSTSEC-2026-0331", reason = "lockfile only: same path as RUSTSEC-2026-0330 (hpke-rs `libcrux` feature off); remove when openmls_rust_crypto allows hpke-rs 0.8" }, │ ━━━━━━━━━━━━━━━━━ ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ignore reason │ │ │ no crate matched advisory criteria advisories FAILED FAIL cargo deny root (exit 1) root: 17 accepted advisories, 13 matched in the crate graph, 4 lockfile only (verified not compiled) ==== cargo deny chatmail (host/reed-chatmail/embedded/Cargo.toml, tools/release/deny-chatmail.toml): check advisories error[vulnerability]: Multiple timing variability issues in operations intended to be constant-time ┌─ /workspace/exo/reed/host/reed-chatmail/embedded/Cargo.lock:121:1 │ 121 │ crypto-bigint 0.5.5 registry+https://github.com/rust-lang/crates.io-index │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected │ ├ ID: RUSTSEC-2026-0387 ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0387 ├ ## Summary Several operations intended to be constant-time could execute secret-dependent branches, depending on the compiler and target CPU. These include subtraction, zero counting, division, and Montgomery multiplication. Additionally, `UintRef` equality could terminate at the first unequal limb, and `BoxedMontyForm::invert` branched on whether an inverse exists. ## Impact Applications using affected operations on secret integers may leak information through timing or microarchitectural side channels. This includes information about intermediate arithmetic values, matching limbs, and invertibility. Such leakage could potentially enable recovery of cryptographic secrets. Practical exploitability depends on the downstream algorithm, compiler, target CPU, and an attacker's ability to observe the side channel. ## Resolution Upgrade to v0.7.6, which removes the identified branches, updates `ctutils` to include its constant-time fixes, and adds BINSEC-based regression checks using `cargo checkct` for arithmetic on multiple targets. ├ Announcement: https://github.com/RustCrypto/crypto-bigint/pull/1365 ├ Solution: Upgrade to >=0.7.6 (try `cargo update -p crypto-bigint`) ├ crypto-bigint v0.5.5 ├── cx448 v0.1.1 │ └── pgp v0.20.0 │ └── deltachat v2.59.0 │ └── reed-chatmail-embedded v0.1.0 │ └── reed-chatmail-android v0.1.0 └── elliptic-curve v0.13.8 ├── cx448 v0.1.1 (*) ├── ecdsa v0.16.9 │ ├── k256 v0.13.4 │ │ └── pgp v0.20.0 (*) │ ├── p256 v0.13.2 │ │ └── pgp v0.20.0 (*) │ ├── p384 v0.13.1 │ │ └── pgp v0.20.0 (*) │ ├── p521 v0.13.3 │ │ └── pgp v0.20.0 (*) │ └── pgp v0.20.0 (*) ├── k256 v0.13.4 (*) ├── p256 v0.13.2 (*) ├── p384 v0.13.1 (*) ├── p521 v0.13.3 (*) ├── pgp v0.20.0 (*) └── primeorder v0.13.6 ├── p256 v0.13.2 (*) ├── p384 v0.13.1 (*) └── p521 v0.13.3 (*) error[vulnerability]: Non-constant-time mask generation and `u128` comparisons ┌─ /workspace/exo/reed/host/reed-chatmail/embedded/Cargo.lock:128:1 │ 128 │ ctutils 0.4.2 registry+https://github.com/rust-lang/crates.io-index │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected │ ├ ID: RUSTSEC-2026-0385 ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0385 ├ ## Summary The `ctutils::Choice` type has mask generation functions for each unsigned integer size (`u8`, `u16`, `u32`, `u64`, `u128`). These are `const fn` and therefore can't reuse the `asm!`-backed mask generation in the `cmov` crate that's otherwise used to ensure constant-time. In releases prior to v0.4.4, the generated code from these functions could include a branch on commonly used platforms. This has been corrected in this release and now verified on several platforms using BINSEC. Additionally, `u128` comparison operations provided via `ctutils::Choice` and intended to work in constant-time were generating branches on 32-bit targets. This has been resolved via a special case implementation of these functions for such targets. ## Impact Branch instructions on secret values can potentially leak such values via covert channels. This can enable attackers to potentially recover such secrets. ## Resolution This has been resolved by calling `Choice::to_u8()` when generating the mask, which in turn uses `black_box` as an optimization barrier. Verification that this resulted in the desired change in the generated assembly across a variety of target CPU architectures was performed by BINSEC, which now runs automatically in CI using `cargo checkct`. ├ Announcement: https://github.com/RustCrypto/utils/pull/1569 ├ Solution: Upgrade to >=0.4.4 (try `cargo update -p ctutils`) ├ ctutils v0.4.2 ├── aes-gcm v0.11.1 │ └── shadowsocks-crypto v0.8.0 │ └── shadowsocks v1.25.0 │ └── deltachat v2.59.0 │ └── reed-chatmail-embedded v0.1.0 │ └── reed-chatmail-android v0.1.0 ├── digest v0.11.3 │ ├── hmac v0.13.0 │ │ └── hkdf v0.13.0 │ │ └── shadowsocks-crypto v0.8.0 (*) │ ├── md-5 v0.11.0 │ │ └── shadowsocks-crypto v0.8.0 (*) │ └── sha1 v0.11.0 │ └── shadowsocks-crypto v0.8.0 (*) └── universal-hash v0.6.1 ├── poly1305 v0.9.1 │ └── chacha20poly1305 v0.11.0 │ └── shadowsocks-crypto v0.8.0 (*) └── polyval v0.7.3 └── ghash v0.6.0 └── aes-gcm v0.11.1 (*) error[unsound]: `AsyncFd::new` and related constructors violate I/O safety ┌─ /workspace/exo/reed/host/reed-chatmail/embedded/Cargo.lock:538:1 │ 538 │ tokio 1.53.1 registry+https://github.com/rust-lang/crates.io-index │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ unsound advisory detected │ ├ ID: RUSTSEC-2026-0386 ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0386 ├ `tokio::io::unix::AsyncFd` provides safe constructors (`new`, `with_interest`, `try_new`, and `try_with_interest`) that accept any `T: AsRawFd` rather than requiring proof of ownership or validity of the file descriptor. Because `RawFd` implements `AsRawFd`, safe code can construct an `AsyncFd` from an arbitrary or closed file descriptor, or close/replace the underlying file descriptor while the `AsyncFd` is still alive. This violates I/O safety in two ways: 1. `AsyncFd<T>` implements `AsFd` for all `T: AsRawFd` by calling `BorrowedFd::borrow_raw(self.as_raw_fd())`, allowing safe code to obtain an arbitrary `BorrowedFd<'_>` without owning the file descriptor. 2. Tokio's I/O driver stores a pointer to an internal allocation in the `epoll`/`kqueue` user data for registered file descriptors. If the underlying file descriptor is duplicated and then closed while an `AsyncFd` is alive, and the OS reuses that file descriptor number for a another IO resource on the same runtime, dropping the first `AsyncFd` deregisters the reused file descriptor number and frees the first while the original file description remains registered in `epoll`, leading to a use-after-free when a readiness event fires. Starting in Tokio 1.51.6, 1.53.3, and 1.54.0, `AsyncFd::new`, `AsyncFd::with_interest`, `AsyncFd::try_new`, and `AsyncFd::try_with_interest` are deprecated in favor of the `unsafe` constructors `AsyncFd::register` and `AsyncFd::register_with_interest`. Callers must ensure that the file descriptor remains valid, open, and unchanged for the lifetime of the `AsyncFd`. ├ Announcement: https://github.com/tokio-rs/tokio/pull/8587 ├ Solution: Upgrade to >=1.51.6, <1.52.0 OR >=1.53.3 (try `cargo update -p tokio`) ├ tokio v1.53.1 ├── astral-tokio-tar v0.6.4 │ └── deltachat v2.59.0 │ └── reed-chatmail-embedded v0.1.0 │ └── reed-chatmail-android v0.1.0 ├── async-compat v0.2.5 │ └── pkarr v3.10.0 │ ├── iroh v0.35.0 │ │ ├── deltachat v2.59.0 (*) │ │ └── iroh-gossip v0.35.0 │ │ └── deltachat v2.59.0 (*) │ └── iroh-relay v0.35.0 │ └── iroh v0.35.0 (*) ├── async-compression v0.4.44 │ ├── async-imap v0.11.3 │ │ └── deltachat v2.59.0 (*) │ └── async_zip v0.0.18 │ └── deltachat v2.59.0 (*) ├── async-imap v0.11.3 (*) ├── async-native-tls v0.6.0 │ └── deltachat v2.59.0 (*) ├── async-smtp v0.10.2 │ └── deltachat v2.59.0 (*) ├── async_zip v0.0.18 (*) ├── backon v1.6.0 │ └── iroh v0.35.0 (*) ├── deltachat v2.59.0 (*) ├── fast-socks5 v1.0.0 │ └── deltachat v2.59.0 (*) ├── h2 v0.4.19 │ └── hyper v1.11.1 │ ├── deltachat v2.59.0 (*) │ ├── hyper-rustls v0.27.9 │ │ └── reqwest v0.12.28 │ │ ├── iroh v0.35.0 (*) │ │ ├── iroh-relay v0.35.0 (*) │ │ └── pkarr v3.10.0 (*) │ ├── hyper-util v0.1.20 │ │ ├── deltachat v2.59.0 (*) │ │ ├── hyper-rustls v0.27.9 (*) │ │ ├── igd-next v0.16.2 │ │ │ ├── iroh v0.35.0 (*) │ │ │ └── portmapper v0.5.0 │ │ │ └── iroh v0.35.0 (*) │ │ ├── iroh-relay v0.35.0 (*) │ │ ├── portmapper v0.5.0 (*) │ │ └── reqwest v0.12.28 (*) │ ├── igd-next v0.16.2 (*) │ ├── iroh-relay v0.35.0 (*) │ └── reqwest v0.12.28 (*) ├── hickory-proto v0.25.2 │ └── hickory-resolver v0.25.2 │ ├── iroh v0.35.0 (*) │ └── iroh-relay v0.35.0 (*) ├── hickory-resolver v0.25.2 (*) ├── hyper v1.11.1 (*) ├── hyper-rustls v0.27.9 (*) ├── hyper-util v0.1.20 (*) ├── igd-next v0.16.2 (*) ├── iroh v0.35.0 (*) ├── iroh-gossip v0.35.0 (*) ├── iroh-quinn v0.13.0 │ ├── iroh v0.35.0 (*) │ └── iroh-relay v0.35.0 (*) ├── iroh-relay v0.35.0 (*) ├── n0-future v0.1.3 │ ├── iroh v0.35.0 (*) │ ├── iroh-gossip v0.35.0 (*) │ ├── iroh-relay v0.35.0 (*) │ └── netwatch v0.5.0 │ ├── iroh v0.35.0 (*) │ └── portmapper v0.5.0 (*) ├── netlink-sys v0.8.8 │ ├── netdev v0.31.0 │ │ ├── iroh v0.35.0 (*) │ │ └── netwatch v0.5.0 (*) │ ├── netlink-proto v0.11.5 │ │ └── netwatch v0.5.0 (*) │ └── netwatch v0.5.0 (*) ├── netwatch v0.5.0 (*) ├── pkarr v3.10.0 (*) ├── portmapper v0.5.0 (*) ├── reed-chatmail-embedded v0.1.0 (*) ├── reqwest v0.12.28 (*) ├── sendfd v0.4.4 │ └── shadowsocks v1.25.0 │ └── deltachat v2.59.0 (*) ├── shadowsocks v1.25.0 (*) ├── surge-ping v0.8.4 │ └── iroh v0.35.0 (*) ├── tokio-io-timeout v1.2.1 │ └── deltachat v2.59.0 (*) ├── tokio-rustls v0.26.5 │ ├── deltachat v2.59.0 (*) │ ├── hyper-rustls v0.27.9 (*) │ ├── iroh-relay v0.35.0 (*) │ ├── reqwest v0.12.28 (*) │ └── tokio-websockets v0.11.4 │ └── iroh-relay v0.35.0 (*) ├── tokio-stream v0.1.19 │ ├── astral-tokio-tar v0.6.4 (*) │ ├── deltachat v2.59.0 (*) │ ├── fast-socks5 v1.0.0 (*) │ └── iroh v0.35.0 (*) ├── tokio-tfo v0.4.3 │ └── shadowsocks v1.25.0 (*) ├── tokio-util v0.7.19 │ ├── deltachat v2.59.0 (*) │ ├── h2 v0.4.19 (*) │ ├── iroh v0.35.0 (*) │ ├── iroh-gossip v0.35.0 (*) │ ├── iroh-relay v0.35.0 (*) │ ├── n0-future v0.1.3 (*) │ ├── netwatch v0.5.0 (*) │ ├── portmapper v0.5.0 (*) │ ├── reqwest v0.12.28 (*) │ ├── tokio-stream v0.1.19 (*) │ └── tokio-websockets v0.11.4 (*) ├── tokio-websockets v0.11.4 (*) └── tower v0.5.3 ├── reqwest v0.12.28 (*) └── tower-http v0.6.11 └── reqwest v0.12.28 (*) warning[advisory-not-detected]: advisory was not encountered ┌─ /workspace/exo/reed/tools/release/deny-chatmail.toml:173:11 │ 173 │ { id = "RUSTSEC-2024-0384", reason = "lockfile only: instant is iroh's dependency for wasm32-unknown-unknown, which this tree never builds" }, │ ━━━━━━━━━━━━━━━━━ ──────────────────────────────────────────────────────────────────────────────────────────────────── ignore reason │ │ │ no crate matched advisory criteria warning[advisory-not-detected]: advisory was not encountered ┌─ /workspace/exo/reed/tools/release/deny-chatmail.toml:174:11 │ 174 │ { id = "RUSTSEC-2026-0173", reason = "lockfile only: cfg(hax) dependency of hax-lib-macros (libcrux-ml-kem's verification annotations); cargo never compiles it for a Reed target" }, │ ━━━━━━━━━━━━━━━━━ ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ignore reason │ │ │ no crate matched advisory criteria warning[advisory-not-detected]: advisory was not encountered ┌─ /workspace/exo/reed/tools/release/deny-chatmail.toml:143:11 │ 143 │ { id = "RUSTSEC-2026-0381", reason = "webpki-roots 0.26.11 is the semver-trick shim that re-exports webpki-roots 1 (locked at 1.0.10, patched): the roots compiled in are 1.0.10's; the 1.x copy itself is updated" }, │ ━━━━━━━━━━━━━━━━━ ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ignore reason │ │ │ no crate matched advisory criteria advisories FAILED FAIL cargo deny chatmail (exit 1) note chatmail: RUSTSEC-2026-0381 is accepted but no crate of the graph matches it any more (stale acceptance: remove it) chatmail: 16 accepted advisories, 13 matched in the crate graph, 2 lockfile only (verified not compiled) ==== cargo deny desktop (apps/desktop/src-tauri/Cargo.toml, tools/release/deny-desktop.toml): check advisories error[vulnerability]: Multiple timing variability issues in operations intended to be constant-time ┌─ /workspace/exo/reed/apps/desktop/src-tauri/Cargo.lock:123:1 │ 123 │ crypto-bigint 0.5.5 registry+https://github.com/rust-lang/crates.io-index │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected │ ├ ID: RUSTSEC-2026-0387 ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0387 ├ ## Summary Several operations intended to be constant-time could execute secret-dependent branches, depending on the compiler and target CPU. These include subtraction, zero counting, division, and Montgomery multiplication. Additionally, `UintRef` equality could terminate at the first unequal limb, and `BoxedMontyForm::invert` branched on whether an inverse exists. ## Impact Applications using affected operations on secret integers may leak information through timing or microarchitectural side channels. This includes information about intermediate arithmetic values, matching limbs, and invertibility. Such leakage could potentially enable recovery of cryptographic secrets. Practical exploitability depends on the downstream algorithm, compiler, target CPU, and an attacker's ability to observe the side channel. ## Resolution Upgrade to v0.7.6, which removes the identified branches, updates `ctutils` to include its constant-time fixes, and adds BINSEC-based regression checks using `cargo checkct` for arithmetic on multiple targets. ├ Announcement: https://github.com/RustCrypto/crypto-bigint/pull/1365 ├ Solution: Upgrade to >=0.7.6 (try `cargo update -p crypto-bigint`) ├ crypto-bigint v0.5.5 └── elliptic-curve v0.13.8 ├── ecdsa v0.16.9 │ ├── k256 v0.13.4 │ │ └── reed-nostr v0.5.0-rc1 │ │ └── reed-core v0.5.0-rc1 │ │ ├── reed-cli v0.5.0-rc1 │ │ │ └── reed-desktop v0.3.0 │ │ └── reed-desktop v0.3.0 (*) │ ├── p256 v0.13.2 │ │ └── rustls-rustcrypto v0.0.2-alpha │ │ ├── reed-cli v0.5.0-rc1 (*) │ │ ├── reed-smptls v0.5.0-rc1 │ │ │ └── reed-cli v0.5.0-rc1 (*) │ │ └── reed-tor v0.5.0-rc1 │ │ ├── reed-cli v0.5.0-rc1 (*) │ │ ├── reed-desktop v0.3.0 (*) │ │ └── reed-smptls v0.5.0-rc1 (*) │ ├── p384 v0.13.1 │ │ └── rustls-rustcrypto v0.0.2-alpha (*) │ └── rustls-rustcrypto v0.0.2-alpha (*) ├── k256 v0.13.4 (*) ├── p256 v0.13.2 (*) ├── p384 v0.13.1 (*) ├── primeorder v0.13.6 │ ├── p256 v0.13.2 (*) │ └── p384 v0.13.1 (*) └── voprf v0.5.0 ├── reed-bearer v0.5.0-rc1 │ ├── reed-bearer-lora v0.5.0-rc1 │ │ ├── reed-cli v0.5.0-rc1 (*) │ │ ├── reed-core v0.5.0-rc1 (*) │ │ └── reed-mesh-client v0.5.0-rc1 │ │ └── reed-core v0.5.0-rc1 (*) │ ├── reed-core v0.5.0-rc1 (*) │ └── reed-discovery v0.5.0-rc1 │ ├── reed-cli v0.5.0-rc1 (*) │ └── reed-core v0.5.0-rc1 (*) └── reed-discovery v0.5.0-rc1 (*) error[vulnerability]: Non-constant-time mask generation and `u128` comparisons ┌─ /workspace/exo/reed/apps/desktop/src-tauri/Cargo.lock:134:1 │ 134 │ ctutils 0.4.2 registry+https://github.com/rust-lang/crates.io-index │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected │ ├ ID: RUSTSEC-2026-0385 ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0385 ├ ## Summary The `ctutils::Choice` type has mask generation functions for each unsigned integer size (`u8`, `u16`, `u32`, `u64`, `u128`). These are `const fn` and therefore can't reuse the `asm!`-backed mask generation in the `cmov` crate that's otherwise used to ensure constant-time. In releases prior to v0.4.4, the generated code from these functions could include a branch on commonly used platforms. This has been corrected in this release and now verified on several platforms using BINSEC. Additionally, `u128` comparison operations provided via `ctutils::Choice` and intended to work in constant-time were generating branches on 32-bit targets. This has been resolved via a special case implementation of these functions for such targets. ## Impact Branch instructions on secret values can potentially leak such values via covert channels. This can enable attackers to potentially recover such secrets. ## Resolution This has been resolved by calling `Choice::to_u8()` when generating the mask, which in turn uses `black_box` as an optimization barrier. Verification that this resulted in the desired change in the generated assembly across a variety of target CPU architectures was performed by BINSEC, which now runs automatically in CI using `cargo checkct`. ├ Announcement: https://github.com/RustCrypto/utils/pull/1569 ├ Solution: Upgrade to >=0.4.4 (try `cargo update -p ctutils`) ├ ctutils v0.4.2 ├── digest v0.11.3 │ ├── blake2 v0.11.0 │ │ └── reed-bramble v0.5.0-rc1 │ │ └── reed-core v0.5.0-rc1 │ │ ├── reed-cli v0.5.0-rc1 │ │ │ └── reed-desktop v0.3.0 │ │ └── reed-desktop v0.3.0 (*) │ ├── hmac v0.13.0 │ │ └── hkdf v0.13.0 │ │ └── secret-service v5.2.0 │ │ └── zbus-secret-service-keyring-store v1.0.1 │ │ └── keyring v4.2.0 │ │ └── reed-desktop v0.3.0 (*) │ ├── sha1 v0.11.0 │ │ └── tungstenite v0.30.0 │ │ └── tokio-tungstenite v0.30.0 │ │ ├── reed-cli v0.5.0-rc1 (*) │ │ └── reed-tor v0.5.0-rc1 │ │ ├── reed-cli v0.5.0-rc1 (*) │ │ ├── reed-desktop v0.3.0 (*) │ │ └── reed-smptls v0.5.0-rc1 │ │ └── reed-cli v0.5.0-rc1 (*) │ ├── sha2 v0.11.0 │ │ └── secret-service v5.2.0 (*) │ └── sha3 v0.12.0 │ └── derive-deftly-macros v1.11.5 │ └── derive-deftly v1.11.5 │ ├── arti-client v0.46.0 │ │ └── reed-tor v0.5.0-rc1 (*) │ ├── pwd-grp v1.0.2 │ │ └── fs-mistrust v0.15.1 │ │ ├── arti-client v0.46.0 (*) │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ ├── tor-config v0.46.0 │ │ │ ├── arti-client v0.46.0 (*) │ │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ │ ├── tor-chanmgr v0.46.0 │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ ├── tor-circmgr v0.46.0 │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ ├── tor-dirclient v0.46.0 │ │ │ │ │ │ ├── tor-dirmgr v0.46.0 │ │ │ │ │ │ │ └── arti-client v0.46.0 (*) │ │ │ │ │ │ ├── tor-hsclient v0.46.0 │ │ │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ │ │ └── reed-tor v0.5.0-rc1 (*) │ │ │ │ │ │ └── tor-hsservice v0.46.0 │ │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ │ └── reed-tor v0.5.0-rc1 (*) │ │ │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ │ └── tor-hsservice v0.46.0 (*) │ │ │ │ └── tor-ptmgr v0.46.0 │ │ │ │ └── arti-client v0.46.0 (*) │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ ├── tor-dircommon v0.46.0 │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ │ └── tor-guardmgr v0.46.0 │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ └── tor-dirmgr v0.46.0 (*) │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ ├── tor-keymgr v0.46.0 │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ └── tor-hsservice v0.46.0 (*) │ │ │ ├── tor-linkspec v0.46.0 │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ ├── tor-cell v0.46.0 │ │ │ │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ │ ├── tor-netdoc v0.46.0 │ │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ │ │ ├── tor-consdiff v0.46.0 │ │ │ │ │ │ │ └── tor-dirmgr v0.46.0 (*) │ │ │ │ │ │ ├── tor-dirclient v0.46.0 (*) │ │ │ │ │ │ ├── tor-dircommon v0.46.0 (*) │ │ │ │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ │ │ ├── tor-netdir v0.46.0 │ │ │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ │ │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ │ │ │ └── tor-relay-selection v0.46.0 │ │ │ │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ │ │ │ │ └── tor-hsservice v0.46.0 (*) │ │ │ │ │ │ └── tor-relay-selection v0.46.0 (*) │ │ │ │ │ └── tor-proto v0.46.0 │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ │ ├── tor-dirclient v0.46.0 (*) │ │ │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ │ └── tor-ptmgr v0.46.0 (*) │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ ├── tor-dirclient v0.46.0 (*) │ │ │ │ ├── tor-dircommon v0.46.0 (*) │ │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ ├── tor-netdir v0.46.0 (*) │ │ │ │ ├── tor-netdoc v0.46.0 (*) │ │ │ │ ├── tor-proto v0.46.0 (*) │ │ │ │ ├── tor-ptmgr v0.46.0 (*) │ │ │ │ └── tor-relay-selection v0.46.0 (*) │ │ │ ├── tor-memquota v0.46.0 │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ ├── tor-cell v0.46.0 (*) │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ ├── tor-hscrypto v0.46.0 │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ │ │ │ ├── tor-cell v0.46.0 (*) │ │ │ │ │ ├── tor-dirclient v0.46.0 (*) │ │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ │ ├── tor-keymgr v0.46.0 (*) │ │ │ │ │ ├── tor-netdir v0.46.0 (*) │ │ │ │ │ ├── tor-netdoc v0.46.0 (*) │ │ │ │ │ └── tor-proto v0.46.0 (*) │ │ │ │ ├── tor-linkspec v0.46.0 (*) │ │ │ │ ├── tor-proto v0.46.0 (*) │ │ │ │ └── tor-units v0.46.0 │ │ │ │ ├── tor-cell v0.46.0 (*) │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ │ ├── tor-hscrypto v0.46.0 (*) │ │ │ │ ├── tor-netdir v0.46.0 (*) │ │ │ │ ├── tor-netdoc v0.46.0 (*) │ │ │ │ └── tor-proto v0.46.0 (*) │ │ │ ├── tor-proto v0.46.0 (*) │ │ │ └── tor-ptmgr v0.46.0 (*) │ │ ├── tor-dirmgr v0.46.0 (*) │ │ ├── tor-hsservice v0.46.0 (*) │ │ ├── tor-keymgr v0.46.0 (*) │ │ ├── tor-persist v0.46.0 │ │ │ ├── arti-client v0.46.0 (*) │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ └── tor-keymgr v0.46.0 (*) │ │ └── tor-ptmgr v0.46.0 (*) │ ├── tor-async-utils v0.46.0 │ │ ├── arti-client v0.46.0 (*) │ │ ├── tor-chanmgr v0.46.0 (*) │ │ ├── tor-circmgr v0.46.0 (*) │ │ ├── tor-dirmgr v0.46.0 (*) │ │ ├── tor-guardmgr v0.46.0 (*) │ │ ├── tor-hsclient v0.46.0 (*) │ │ ├── tor-hsservice v0.46.0 (*) │ │ ├── tor-memquota v0.46.0 (*) │ │ ├── tor-persist v0.46.0 (*) │ │ ├── tor-proto v0.46.0 (*) │ │ └── tor-ptmgr v0.46.0 (*) │ ├── tor-basic-utils v0.46.0 │ │ ├── arti-client v0.46.0 (*) │ │ ├── tor-async-utils v0.46.0 (*) │ │ ├── tor-cell v0.46.0 (*) │ │ ├── tor-chanmgr v0.46.0 (*) │ │ ├── tor-circmgr v0.46.0 (*) │ │ ├── tor-config v0.46.0 (*) │ │ ├── tor-dircommon v0.46.0 (*) │ │ ├── tor-dirmgr v0.46.0 (*) │ │ ├── tor-guardmgr v0.46.0 (*) │ │ ├── tor-hsclient v0.46.0 (*) │ │ ├── tor-hscrypto v0.46.0 (*) │ │ ├── tor-hsservice v0.46.0 (*) │ │ ├── tor-keymgr v0.46.0 (*) │ │ ├── tor-linkspec v0.46.0 (*) │ │ ├── tor-memquota v0.46.0 (*) │ │ ├── tor-netdir v0.46.0 (*) │ │ ├── tor-netdoc v0.46.0 (*) │ │ ├── tor-persist v0.46.0 (*) │ │ ├── tor-proto v0.46.0 (*) │ │ ├── tor-protover v0.46.0 │ │ │ ├── arti-client v0.46.0 (*) │ │ │ ├── tor-cell v0.46.0 (*) │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ ├── tor-linkspec v0.46.0 (*) │ │ │ ├── tor-netdir v0.46.0 (*) │ │ │ ├── tor-netdoc v0.46.0 (*) │ │ │ └── tor-proto v0.46.0 (*) │ │ ├── tor-ptmgr v0.46.0 (*) │ │ └── tor-relay-selection v0.46.0 (*) │ ├── tor-bytes v0.46.0 │ │ ├── tor-cell v0.46.0 (*) │ │ ├── tor-cert v0.46.0 │ │ │ ├── tor-cell v0.46.0 (*) │ │ │ ├── tor-key-forge v0.46.0 │ │ │ │ ├── tor-hscrypto v0.46.0 (*) │ │ │ │ └── tor-keymgr v0.46.0 (*) │ │ │ ├── tor-netdoc v0.46.0 (*) │ │ │ └── tor-proto v0.46.0 (*) │ │ ├── tor-hsclient v0.46.0 (*) │ │ ├── tor-hscrypto v0.46.0 (*) │ │ ├── tor-hsservice v0.46.0 (*) │ │ ├── tor-key-forge v0.46.0 (*) │ │ ├── tor-keymgr v0.46.0 (*) │ │ ├── tor-linkspec v0.46.0 (*) │ │ ├── tor-netdoc v0.46.0 (*) │ │ ├── tor-proto v0.46.0 (*) │ │ ├── tor-protover v0.46.0 (*) │ │ └── tor-socksproto v0.46.0 │ │ ├── tor-chanmgr v0.46.0 (*) │ │ └── tor-ptmgr v0.46.0 (*) │ ├── tor-cell v0.46.0 (*) │ ├── tor-chanmgr v0.46.0 (*) │ ├── tor-circmgr v0.46.0 (*) │ ├── tor-config v0.46.0 (*) │ ├── tor-dircommon v0.46.0 (*) │ ├── tor-guardmgr v0.46.0 (*) │ ├── tor-hsclient v0.46.0 (*) │ ├── tor-hscrypto v0.46.0 (*) │ ├── tor-hsservice v0.46.0 (*) │ ├── tor-key-forge v0.46.0 (*) │ ├── tor-keymgr v0.46.0 (*) │ ├── tor-linkspec v0.46.0 (*) │ ├── tor-llcrypto v0.46.0 │ │ ├── arti-client v0.46.0 (*) │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ ├── tor-bytes v0.46.0 (*) │ │ ├── tor-cell v0.46.0 (*) │ │ ├── tor-cert v0.46.0 (*) │ │ ├── tor-chanmgr v0.46.0 (*) │ │ ├── tor-checkable v0.46.0 │ │ │ ├── tor-cert v0.46.0 (*) │ │ │ ├── tor-dircommon v0.46.0 (*) │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ ├── tor-key-forge v0.46.0 (*) │ │ │ ├── tor-netdoc v0.46.0 (*) │ │ │ └── tor-proto v0.46.0 (*) │ │ ├── tor-consdiff v0.46.0 (*) │ │ ├── tor-dirclient v0.46.0 (*) │ │ ├── tor-dircommon v0.46.0 (*) │ │ ├── tor-dirmgr v0.46.0 (*) │ │ ├── tor-guardmgr v0.46.0 (*) │ │ ├── tor-hsclient v0.46.0 (*) │ │ ├── tor-hscrypto v0.46.0 (*) │ │ ├── tor-hsservice v0.46.0 (*) │ │ ├── tor-key-forge v0.46.0 (*) │ │ ├── tor-keymgr v0.46.0 (*) │ │ ├── tor-linkspec v0.46.0 (*) │ │ ├── tor-netdir v0.46.0 (*) │ │ ├── tor-netdoc v0.46.0 (*) │ │ └── tor-proto v0.46.0 (*) │ ├── tor-memquota v0.46.0 (*) │ ├── tor-memquota-cost v0.46.0 │ │ ├── tor-llcrypto v0.46.0 (*) │ │ └── tor-memquota v0.46.0 (*) │ ├── tor-netdoc v0.46.0 (*) │ ├── tor-persist v0.46.0 (*) │ ├── tor-proto v0.46.0 (*) │ ├── tor-protover v0.46.0 (*) │ ├── tor-ptmgr v0.46.0 (*) │ ├── tor-rtmock v0.46.0 │ │ └── tor-proto v0.46.0 (*) │ ├── tor-socksproto v0.46.0 (*) │ └── tor-units v0.46.0 (*) └── universal-hash v0.6.1 └── polyval v0.7.3 └── tor-proto v0.46.0 (*) error[unsound]: `AsyncFd::new` and related constructors violate I/O safety ┌─ /workspace/exo/reed/apps/desktop/src-tauri/Cargo.lock:616:1 │ 616 │ tokio 1.53.1 registry+https://github.com/rust-lang/crates.io-index │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ unsound advisory detected │ ├ ID: RUSTSEC-2026-0386 ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0386 ├ `tokio::io::unix::AsyncFd` provides safe constructors (`new`, `with_interest`, `try_new`, and `try_with_interest`) that accept any `T: AsRawFd` rather than requiring proof of ownership or validity of the file descriptor. Because `RawFd` implements `AsRawFd`, safe code can construct an `AsyncFd` from an arbitrary or closed file descriptor, or close/replace the underlying file descriptor while the `AsyncFd` is still alive. This violates I/O safety in two ways: 1. `AsyncFd<T>` implements `AsFd` for all `T: AsRawFd` by calling `BorrowedFd::borrow_raw(self.as_raw_fd())`, allowing safe code to obtain an arbitrary `BorrowedFd<'_>` without owning the file descriptor. 2. Tokio's I/O driver stores a pointer to an internal allocation in the `epoll`/`kqueue` user data for registered file descriptors. If the underlying file descriptor is duplicated and then closed while an `AsyncFd` is alive, and the OS reuses that file descriptor number for a another IO resource on the same runtime, dropping the first `AsyncFd` deregisters the reused file descriptor number and frees the first while the original file description remains registered in `epoll`, leading to a use-after-free when a readiness event fires. Starting in Tokio 1.51.6, 1.53.3, and 1.54.0, `AsyncFd::new`, `AsyncFd::with_interest`, `AsyncFd::try_new`, and `AsyncFd::try_with_interest` are deprecated in favor of the `unsafe` constructors `AsyncFd::register` and `AsyncFd::register_with_interest`. Callers must ensure that the file descriptor remains valid, open, and unchanged for the lifetime of the `AsyncFd`. ├ Announcement: https://github.com/tokio-rs/tokio/pull/8587 ├ Solution: Upgrade to >=1.51.6, <1.52.0 OR >=1.53.3 (try `cargo update -p tokio`) ├ tokio v1.53.1 ├── async_executors v0.7.0 │ └── tor-rtcompat v0.46.0 │ ├── arti-client v0.46.0 │ │ └── reed-tor v0.5.0-rc1 │ │ ├── reed-cli v0.5.0-rc1 │ │ │ └── reed-desktop v0.3.0 │ │ ├── reed-desktop v0.3.0 (*) │ │ └── reed-smptls v0.5.0-rc1 │ │ └── reed-cli v0.5.0-rc1 (*) │ ├── reed-tor v0.5.0-rc1 (*) │ ├── tor-async-utils v0.46.0 │ │ ├── arti-client v0.46.0 (*) │ │ ├── tor-chanmgr v0.46.0 │ │ │ ├── arti-client v0.46.0 (*) │ │ │ ├── tor-circmgr v0.46.0 │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ ├── tor-dirclient v0.46.0 │ │ │ │ │ ├── tor-dirmgr v0.46.0 │ │ │ │ │ │ └── arti-client v0.46.0 (*) │ │ │ │ │ ├── tor-hsclient v0.46.0 │ │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ │ └── reed-tor v0.5.0-rc1 (*) │ │ │ │ │ └── tor-hsservice v0.46.0 │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ └── reed-tor v0.5.0-rc1 (*) │ │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ └── tor-hsservice v0.46.0 (*) │ │ │ └── tor-ptmgr v0.46.0 │ │ │ └── arti-client v0.46.0 (*) │ │ ├── tor-circmgr v0.46.0 (*) │ │ ├── tor-dirmgr v0.46.0 (*) │ │ ├── tor-guardmgr v0.46.0 │ │ │ ├── arti-client v0.46.0 (*) │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ └── tor-dirmgr v0.46.0 (*) │ │ ├── tor-hsclient v0.46.0 (*) │ │ ├── tor-hsservice v0.46.0 (*) │ │ ├── tor-memquota v0.46.0 │ │ │ ├── arti-client v0.46.0 (*) │ │ │ ├── tor-cell v0.46.0 │ │ │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ ├── tor-netdoc v0.46.0 │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ │ ├── tor-consdiff v0.46.0 │ │ │ │ │ │ └── tor-dirmgr v0.46.0 (*) │ │ │ │ │ ├── tor-dirclient v0.46.0 (*) │ │ │ │ │ ├── tor-dircommon v0.46.0 │ │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ │ │ │ └── tor-guardmgr v0.46.0 (*) │ │ │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ │ ├── tor-netdir v0.46.0 │ │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ │ │ └── tor-relay-selection v0.46.0 │ │ │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ │ │ │ └── tor-hsservice v0.46.0 (*) │ │ │ │ │ └── tor-relay-selection v0.46.0 (*) │ │ │ │ └── tor-proto v0.46.0 │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ ├── tor-dirclient v0.46.0 (*) │ │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ └── tor-ptmgr v0.46.0 (*) │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ ├── tor-hscrypto v0.46.0 │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ │ │ ├── tor-cell v0.46.0 (*) │ │ │ │ ├── tor-dirclient v0.46.0 (*) │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ ├── tor-keymgr v0.46.0 │ │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ │ └── tor-hsservice v0.46.0 (*) │ │ │ │ ├── tor-netdir v0.46.0 (*) │ │ │ │ ├── tor-netdoc v0.46.0 (*) │ │ │ │ └── tor-proto v0.46.0 (*) │ │ │ ├── tor-linkspec v0.46.0 │ │ │ │ ├── arti-client v0.46.0 (*) │ │ │ │ ├── tor-cell v0.46.0 (*) │ │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ │ ├── tor-dirclient v0.46.0 (*) │ │ │ │ ├── tor-dircommon v0.46.0 (*) │ │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ │ ├── tor-netdir v0.46.0 (*) │ │ │ │ ├── tor-netdoc v0.46.0 (*) │ │ │ │ ├── tor-proto v0.46.0 (*) │ │ │ │ ├── tor-ptmgr v0.46.0 (*) │ │ │ │ └── tor-relay-selection v0.46.0 (*) │ │ │ ├── tor-proto v0.46.0 (*) │ │ │ └── tor-units v0.46.0 │ │ │ ├── tor-cell v0.46.0 (*) │ │ │ ├── tor-chanmgr v0.46.0 (*) │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ ├── tor-hscrypto v0.46.0 (*) │ │ │ ├── tor-netdir v0.46.0 (*) │ │ │ ├── tor-netdoc v0.46.0 (*) │ │ │ └── tor-proto v0.46.0 (*) │ │ ├── tor-persist v0.46.0 │ │ │ ├── arti-client v0.46.0 (*) │ │ │ ├── tor-circmgr v0.46.0 (*) │ │ │ ├── tor-dirmgr v0.46.0 (*) │ │ │ ├── tor-guardmgr v0.46.0 (*) │ │ │ ├── tor-hsclient v0.46.0 (*) │ │ │ ├── tor-hsservice v0.46.0 (*) │ │ │ └── tor-keymgr v0.46.0 (*) │ │ ├── tor-proto v0.46.0 (*) │ │ └── tor-ptmgr v0.46.0 (*) │ ├── tor-chanmgr v0.46.0 (*) │ ├── tor-circmgr v0.46.0 (*) │ ├── tor-config v0.46.0 │ │ ├── arti-client v0.46.0 (*) │ │ ├── reed-tor v0.5.0-rc1 (*) │ │ ├── tor-chanmgr v0.46.0 (*) │ │ ├── tor-circmgr v0.46.0 (*) │ │ ├── tor-dircommon v0.46.0 (*) │ │ ├── tor-dirmgr v0.46.0 (*) │ │ ├── tor-guardmgr v0.46.0 (*) │ │ ├── tor-hsclient v0.46.0 (*) │ │ ├── tor-hsservice v0.46.0 (*) │ │ ├── tor-keymgr v0.46.0 (*) │ │ ├── tor-linkspec v0.46.0 (*) │ │ ├── tor-memquota v0.46.0 (*) │ │ ├── tor-proto v0.46.0 (*) │ │ └── tor-ptmgr v0.46.0 (*) │ ├── tor-dirclient v0.46.0 (*) │ ├── tor-dirmgr v0.46.0 (*) │ ├── tor-guardmgr v0.46.0 (*) │ ├── tor-hsclient v0.46.0 (*) │ ├── tor-hsservice v0.46.0 (*) │ ├── tor-log-ratelim v0.46.0 │ │ ├── tor-hsservice v0.46.0 (*) │ │ ├── tor-memquota v0.46.0 (*) │ │ └── tor-proto v0.46.0 (*) │ ├── tor-memquota v0.46.0 (*) │ ├── tor-proto v0.46.0 (*) │ ├── tor-ptmgr v0.46.0 (*) │ └── tor-rtmock v0.46.0 │ └── tor-proto v0.46.0 (*) ├── h2 v0.4.19 │ └── reed-smptls v0.5.0-rc1 (*) ├── reed-cli v0.5.0-rc1 (*) ├── reed-desktop v0.3.0 (*) ├── reed-smptls v0.5.0-rc1 (*) ├── reed-tor v0.5.0-rc1 (*) ├── tauri v2.11.5 │ ├── reed-desktop v0.3.0 (*) │ ├── tauri-plugin-dialog v2.7.3 │ │ └── reed-desktop v0.3.0 (*) │ ├── tauri-plugin-fs v2.5.2 │ │ └── tauri-plugin-dialog v2.7.3 (*) │ └── tauri-plugin-notification v2.4.0 │ └── reed-desktop v0.3.0 (*) ├── tokio-rustls v0.26.5 │ ├── reed-smptls v0.5.0-rc1 (*) │ └── tokio-tungstenite v0.30.0 │ ├── reed-cli v0.5.0-rc1 (*) │ └── reed-tor v0.5.0-rc1 (*) ├── tokio-serial v5.5.0 │ └── reed-cli v0.5.0-rc1 (*) ├── tokio-tungstenite v0.30.0 (*) ├── tokio-util v0.7.19 │ ├── h2 v0.4.19 (*) │ ├── reed-tor v0.5.0-rc1 (*) │ ├── tor-async-utils v0.46.0 (*) │ ├── tor-proto v0.46.0 (*) │ └── tor-rtcompat v0.46.0 (*) ├── tor-async-utils v0.46.0 (*) ├── tor-proto v0.46.0 (*) └── tor-rtcompat v0.46.0 (*) warning[advisory-not-detected]: advisory was not encountered ┌─ /workspace/exo/reed/tools/release/deny-desktop.toml:124:11 │ 124 │ { id = "RUSTSEC-2025-0141", reason = "lockfile only: optional `bincode` dependency of typed-index-collections (via tor-netdir), never enabled (a weak `bincode?/alloc` feature puts it in the lock)" }, │ ━━━━━━━━━━━━━━━━━ ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ignore reason │ │ │ no crate matched advisory criteria warning[advisory-not-detected]: advisory was not encountered ┌─ /workspace/exo/reed/tools/release/deny-desktop.toml:125:11 │ 125 │ { id = "RUSTSEC-2026-0173", reason = "lockfile only: cfg(hax) dependency of hax-lib-macros (libcrux-ml-kem's verification annotations); cargo never compiles it for a Reed target" }, │ ━━━━━━━━━━━━━━━━━ ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ignore reason │ │ │ no crate matched advisory criteria advisories FAILED FAIL cargo deny desktop (exit 1) desktop: 20 accepted advisories, 18 matched in the crate graph, 2 lockfile only (verified not compiled) advisories.sh deny: FAIL cargo deny exit 1 ``` ## cargo audit (root, chatmail, desktop lockfiles) ``` ==== cargo audit Cargo.lock (17 accepted ids from deny.toml) Fetching advisory database from `https://github.com/RustSec/advisory-db.git` Loaded 1352 security advisories (from /tmp/rustsec-advisory-db) Updating crates.io index Scanning /workspace/exo/reed/Cargo.lock for vulnerabilities (834 crate dependencies) Crate: crypto-bigint Version: 0.5.5 Title: Multiple timing variability issues in operations intended to be constant-time Date: 2026-10-23 ID: RUSTSEC-2026-0387 URL: https://github.com/RustCrypto/crypto-bigint/pull/1365 Solution: Upgrade to >=0.7.6 Crate: ctutils Version: 0.4.2 Title: Non-constant-time mask generation and `u128` comparisons Date: 2026-10-23 ID: RUSTSEC-2026-0385 URL: https://github.com/RustCrypto/utils/pull/1569 Solution: Upgrade to >=0.4.4 Crate: tokio Version: 1.53.1 Warning: unsound Title: `AsyncFd::new` and related constructors violate I/O safety Date: 2026-10-13 ID: RUSTSEC-2026-0386 URL: https://rustsec.org/advisories/RUSTSEC-2026-0386 error: 2 vulnerabilities found! error: 1 denied warning found! FAIL cargo audit Cargo.lock (exit 1) ==== cargo audit host/reed-chatmail/embedded/Cargo.lock (16 accepted ids from tools/release/deny-chatmail.toml) Fetching advisory database from `https://github.com/RustSec/advisory-db.git` Loaded 1352 security advisories (from /tmp/rustsec-advisory-db) Updating crates.io index Scanning /workspace/exo/reed/host/reed-chatmail/embedded/Cargo.lock for vulnerabilities (720 crate dependencies) Crate: crypto-bigint Version: 0.5.5 Title: Multiple timing variability issues in operations intended to be constant-time Date: 2026-10-23 ID: RUSTSEC-2026-0387 URL: https://github.com/RustCrypto/crypto-bigint/pull/1365 Solution: Upgrade to >=0.7.6 Crate: ctutils Version: 0.4.2 Title: Non-constant-time mask generation and `u128` comparisons Date: 2026-10-23 ID: RUSTSEC-2026-0385 URL: https://github.com/RustCrypto/utils/pull/1569 Solution: Upgrade to >=0.4.4 Crate: tokio Version: 1.53.1 Warning: unsound Title: `AsyncFd::new` and related constructors violate I/O safety Date: 2026-10-13 ID: RUSTSEC-2026-0386 URL: https://rustsec.org/advisories/RUSTSEC-2026-0386 error: 2 vulnerabilities found! error: 1 denied warning found! FAIL cargo audit host/reed-chatmail/embedded/Cargo.lock (exit 1) ==== cargo audit apps/desktop/src-tauri/Cargo.lock (20 accepted ids from tools/release/deny-desktop.toml) Fetching advisory database from `https://github.com/RustSec/advisory-db.git` Loaded 1352 security advisories (from /tmp/rustsec-advisory-db) Updating crates.io index Scanning /workspace/exo/reed/apps/desktop/src-tauri/Cargo.lock for vulnerabilities (919 crate dependencies) Crate: crypto-bigint Version: 0.5.5 Title: Multiple timing variability issues in operations intended to be constant-time Date: 2026-10-23 ID: RUSTSEC-2026-0387 URL: https://github.com/RustCrypto/crypto-bigint/pull/1365 Solution: Upgrade to >=0.7.6 Crate: ctutils Version: 0.4.2 Title: Non-constant-time mask generation and `u128` comparisons Date: 2026-10-23 ID: RUSTSEC-2026-0385 URL: https://github.com/RustCrypto/utils/pull/1569 Solution: Upgrade to >=0.4.4 Crate: tokio Version: 1.53.1 Warning: unsound Title: `AsyncFd::new` and related constructors violate I/O safety Date: 2026-10-13 ID: RUSTSEC-2026-0386 URL: https://rustsec.org/advisories/RUSTSEC-2026-0386 error: 2 vulnerabilities found! error: 1 denied warning found! FAIL cargo audit apps/desktop/src-tauri/Cargo.lock (exit 1) advisories.sh audit: FAIL cargo audit exit 1 ``` ## pnpm audit --prod (apps/web) ``` No known vulnerabilities found ``` ## pnpm audit --prod (apps/site) ``` No known vulnerabilities found ``` ## cargo audit bin target/release/reed-relay target/release/reed-cli ``` ==== cargo audit bin (17 accepted ids from deny.toml): target/release/reed-relay target/release/reed-cli Fetching advisory database from `https://github.com/RustSec/advisory-db.git` Loaded 1352 security advisories (from /tmp/rustsec-advisory-db) Updating crates.io index Found 'cargo auditable' data in target/release/reed-relay (276 dependencies) Crate: crypto-bigint Version: 0.5.5 Title: Multiple timing variability issues in operations intended to be constant-time Date: 2026-10-23 ID: RUSTSEC-2026-0387 URL: https://github.com/RustCrypto/crypto-bigint/pull/1365 Solution: Upgrade to >=0.7.6 Crate: ctutils Version: 0.4.2 Title: Non-constant-time mask generation and `u128` comparisons Date: 2026-10-23 ID: RUSTSEC-2026-0385 URL: https://github.com/RustCrypto/utils/pull/1569 Solution: Upgrade to >=0.4.4 Crate: tokio Version: 1.53.1 Warning: unsound Title: `AsyncFd::new` and related constructors violate I/O safety Date: 2026-10-13 ID: RUSTSEC-2026-0386 URL: https://rustsec.org/advisories/RUSTSEC-2026-0386 error: 2 vulnerabilities found in target/release/reed-relay error: 1 denied warning found in target/release/reed-relay Found 'cargo auditable' data in target/release/reed-cli (565 dependencies) Crate: crypto-bigint Version: 0.5.5 Title: Multiple timing variability issues in operations intended to be constant-time Date: 2026-10-23 ID: RUSTSEC-2026-0387 URL: https://github.com/RustCrypto/crypto-bigint/pull/1365 Solution: Upgrade to >=0.7.6 Crate: ctutils Version: 0.4.2 Title: Non-constant-time mask generation and `u128` comparisons Date: 2026-10-23 ID: RUSTSEC-2026-0385 URL: https://github.com/RustCrypto/utils/pull/1569 Solution: Upgrade to >=0.4.4 Crate: tokio Version: 1.53.1 Warning: unsound Title: `AsyncFd::new` and related constructors violate I/O safety Date: 2026-10-13 ID: RUSTSEC-2026-0386 URL: https://rustsec.org/advisories/RUSTSEC-2026-0386 error: 2 vulnerabilities found in target/release/reed-cli error: 1 denied warning found in target/release/reed-cli advisories.sh bin: FAIL (exit 1) cargo audit bin exit 1 ```
forgejo-actions changed title from Advisories: nightly check failed (2026-10-19) to Advisories: nightly check failed (2026-10-20) 2026-10-20 04:44:27 +00:00
forgejo-actions changed title from Advisories: nightly check failed (2026-10-20) to Advisories: nightly check failed (2026-10-24) 2026-10-24 05:51:28 +00:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
exo/reed#1
No description provided.