Continuous public-repository analysis

Open source.
Not open secrets.

We watch what security-critical projects change—then translate the code into clear, independent intelligence anyone can understand.

24Projects watched
17559Commits captured
17149AI analyses
88High-risk findings · 30d
The watch feed

Changes worth understanding

AI analysis is published as generated. Community notes appear after human validation.

17149 analyses
Highest risk·RSS
Moderate 53 AI analysisMessage 73 · Adequate
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

descriptor: reject nested expressions with unconsumed trailing input

This commit fixes a parsing bug in libwally-core's Bitcoin descriptor handling. Previously, if extra characters appeared after a valid nested expression inside parentheses, the parser silently ignored them. For example, 'wsh(pk(KEY)xyz)' w…

Input validation bypass: parser accepted malformed descriptors with trailing garbageSilent truncation/misinterpretation of user-supplied descriptor stringsPotential for consensus or policy mismatch between systems parsing the same descriptor
f23a1c97by odudex+17−02 files
No security note in commit
Moderate 59 AI analysisMessage 50 · Thin
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

descriptor: require type B for the top level miniscript in sh()/wsh()

This commit tightens validation for Bitcoin descriptors that wrap a miniscript inside sh() (pay-to-script-hash) or wsh() (pay-to-witness-script-hash). Previously, the library accepted any miniscript fragment as the top-level child, even fr…

Input-validation hardening for descriptor parsingRejection of non-top-level miniscript fragments in script wrappersNew negative test vectors for malformed descriptors
6f656241by odudex+33−22 files
No security note in commit
Informational 15 AI analysisMessage 80 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

test: Remove `mock_process.cpp`

This is a test-only cleanup change. It removes a dedicated helper file used to simulate external programs during testing and instead makes the main test program act as that helper when a special environment variable is set. There is no cha…

63c5f9d2by rustaceanrob+48−604 files
No security note in commit
Informational 12 AI analysisMessage 57 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

docs(zcash): clarify FFI memory ownership

This commit only changes a code comment in a Zcash-related Rust file. It does not modify any actual program logic, function behavior, or memory-management code. The new comment explains more clearly that certain memory must be freed throug…

Comment-only changeNo functional code modificationMemory-ownership documentation clarified
94e77e73by Adam Tucker+3−21 file
No security note in commit
Low 42 AI analysisMessage 62 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix(zcash): make migration review order independent

This commit rewrites how a Zcash wallet's firmware summarizes batches of migration transactions on its screen. Previously, the code assumed the first message in a batch was an ordinary transaction and all later messages were migration-styl…

UI misrepresentation risk: prior code could summarize non-migration messages as migrations or fail to summarize migration messages placed firstRemoval of position-dependent classification reduces attack surface for batch ordering manipulationShape-based classifier still relies on display metadata (is_mine, is_change) rather than cryptographic authorization, as noted in code comments
44d6d428by Adam Tucker+346−4523 files
No security note in commit
Low 33 AI analysisMessage 57 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

feat(zcash): aggregate migration review

This commit adds a new compact review screen for batches of Zcash 'migration' transactions (moving funds from the Orchard pool to the newer Ironwood pool). It also fixes a small user-experience issue: the device will no longer auto-lock wh…

New transaction-parsing path for batch Zcash PCZTs with shape validation and checked arithmeticFallback to full per-message review when compact summary cannot safely represent a childWallet-ownership check on migration Ironwood outputs
7770a70aby Adam Tucker+986−118 files
No security note in commit
Moderate 60 AI analysisMessage 57 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix(zcash): scrub cached spend authorizing keys

This commit fixes a security hygiene issue in the Keystone hardware wallet's Zcash signing code. Previously, secret 'spend authorizing keys' were cached in ordinary memory and could remain there after use. The patch adds explicit memory sc…

Sensitive key material cached in memory without zeroizationUse of zeroize crate to scrub secret scalars on replacement and dropMaybeUninit used to avoid implicit Drop of wrapped secret types
e05af65aby Adam Tucker+251−583 files
No security note in commit
Moderate 66 AI analysisMessage 62 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix(zcash): validate shielded outputs, memos, and ownership

This commit fixes validation of Zcash shielded transaction data on a Keystone hardware wallet. Previously, the device could accept transactions where it could not verify where shielded funds were going, could not read certain encrypted out…

Added ownership check for funded shielded outputs paired with zero-value spendsAdded requirement that all real shielded outputs be decryptable/recoverable before signingFixed Ironwood vs Orchard note-encryption domain selection during output recovery
7459ef9dby Adam Tucker+275−1184 files
Vendor flagged security relevance
Low 29 AI analysisMessage 62 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

refactor(zcash): check and parse batch PCZTs in a single pass

This commit refactors how Keystone's Zcash firmware checks and parses batches of partially-created shielded transactions (PCZTs). It merges what used to be separate validation and display steps into a single pass, adds a new public functio…

New validation+parse single-pass path for batch PCZTsRecomputes shielded bundle value balance and compares against declared value_sumAdds account-index boundary test (account 1 returns PcztNoMyInputs)
c55a8572by Adam Tucker+324−23 files
No security note in commit
Informational 15 AI analysisMessage 72 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

ci(zcash): run rust_c Zcash tests for relevant changes

This commit only adds a new GitHub Actions CI workflow that runs automated tests for Zcash-related Rust code when relevant files change. It does not modify any firmware code, cryptographic logic, or user-facing behavior. There is no securi…

25c20357by Adam Tucker+26−01 file
No security note in commit
Informational 18 AI analysisMessage 62 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

perf(zcash): hoist the shielded sighash out of the per-action loop

This commit is a small performance and code-clarity improvement for Zcash shielded transaction signing in a Keystone hardware wallet firmware component. It moves a repeated transaction-hash calculation out of a per-action loop so it is com…

Eliminates repeated recomputation of shielded transaction sighash inside per-action signing loopReplaces magic byte-slice boundaries for encrypted ciphertexts with named, documented constantsNo change to cryptographic algorithms, data included in hashes, or signature verification logic
1596d47dby Adam Tucker+33−141 file
No security note in commit
01
Why commit watching?

Security should leave a paper trail.

A quiet fix may be responsible caution—or it may leave users unaware that their assets were ever at risk. CommitWatch preserves the evidence, adds context, and tracks whether vendors disclose, acknowledge, and learn.

Why we built this