Dependency checker: git submodules as three claims

Nunchuk desktop 2.9.1, checked 2026-10-27 · code: MR !1845, commits a02ec5742c and 2e35524bd0 · by Carol for Leo's review

What changed

Nunchuk 2.9.1: what we can tell users

ClaimResult
RBReproducible (verified 2026-10-21, linux). Covers everything compiled in.
Unmodified upstream, advisories applyopenssl-3.0.13: 37. zlib v1.3.1 (via bbqr-cpp): 4. trezor-firmware, 92 commits after core/v2.4.2: 1 (CVE-2023-25758, see below).
Modified copies, status unknownlibQuotient (a personal fork): 3 commits, 3 files on top of 0.9.6. bc-ur (a fork of BlockchainCommons): 14 commits, 10 files on 0.3.0. Mustache (a fork of kainjow): 26 commits, 17 files on v4.1. OSV lists no advisories for any of these bases, so the panel says "changes on top unreviewed", not clean.
Wallet's own codelibnunchuk, bc-ur-cpp, tap-protocol, bbqr-cpp.
Not in the app (15)10 of trezor-firmware's nested submodules: libnunchuk compiles only 9 files from crypto/. This includes micropython (15 unknown-status advisories) and nanopb (1). Also openssl's 5 test-suite submodules, including krb5 (9 advisories). All listed, none counted.

Findings worth your judgment

  1. Correction to my earlier thread summary. I had reported the micropython "likely missing" fixes and the nanopb CVE against Nunchuk. Neither is compiled into the app, so the build-scope check was the missing piece. Without it we would have overclaimed against the provider.
  2. CVE-2023-25758 is very likely a false match. It describes OneKey hardware wallets: a seed leak after physically disassembling the device. OSV attributes it to trezor-firmware commits because OneKey forks trezor. Nunchuk desktop uses 9 C files of trezor's crypto library. It's a real OSV hit by commit, so it stays listed, but it is a natural first triage statement.
  3. Fixed while building this page. For a C/C++ release with no lockfile, the panel used to show green "0 advisory matches" and "0 known malware" tiles above 42 submodule advisories. It now hides those tiles and says that only the submodules were checked.

Limits (stated so we don't overclaim the other way)

The panel, as a wallet page would show it

The real panel module from the commit, with the real export from this run. Click the submodules line to open the table.

Loading the panel…