BB
← All projectsBitBox

BitBox02 firmware

Firmware and bootloader for BitBox02 signing devices.

BitcoinHardware walletsNormal
Repository coverage

787 commits in the local evidence base

Every captured commit receives deterministic security triage and a separate communication-quality score. Security candidates and broader second-pass signals receive full-patch Ollama analysis.

239security candidates161second-pass queue727AI analyses
72commits · 30 days
144commits · 60 days
316commits · 180 days
697commits · 365 days
Backfill bands
Aug 5 → Feb 6335 seen28 candidatesComplete
Feb 6 → Jun 6265 seen19 candidatesComplete
Jun 6 → Jul 619 seen5 candidatesComplete
Jul 6 → Aug 526 seen3 candidatesComplete
Commit communication

Does the history explain itself?

Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.

58/100 average clarity
69Strong · 80–100
325Adequate · 60–79
305Thin · 40–59
88Opaque · 0–39
26security candidates with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Marko Bencun452133424357
benma's agent11240106164
Niklas Dusenlund15543134057
cedwies12512063
Tomas Vrba10410071
Cedric Wiese12312049
Yasser Aziza333070
Jad14210060
Sebastian Sutter222050
thisconnect212072
benma212074
Niklas111035
Analysis record

Published AI watches

Last scanned 33 minutes ago

Informational 15 AI analysisMessage 58 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge commit 'refs/pull/2123/head' of https://github.com/BitBoxSwiss/bitbox02-firmware

This commit only adds two digital signature files for an already-released firmware version (v9.25.0). These are third-party reproducible-build assertions by a user named 'yaziza', not changes to the firmware source code. There is no code c…

b8bbbb64by Marko Bencun+0−02 files
No security note in commit
Informational 0 AI analysisMessage 58 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge commit 'refs/pull/2124/head' of https://github.com/BitBoxSwiss/bitbox02-firmware

This commit only adds two digital signature files for an already-released firmware version (v9.27.1). These are release attestation signatures from a contributor named 'yaziza'. There is no code change, no firmware change, and nothing in t…

392ac2ffby Marko Bencun+0−02 files
No security note in commit
Informational 12 AI analysisMessage 45 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge branch 'nickez/bb02-finalize-elf'

This commit is a build-system refactor that unifies how firmware image headers are generated for the BitBox02 and BitBox03. It replaces a device-specific Python script and a C header placeholder with a shared Python tool and JSON manifests…

New input validation in image_header.py for magic, flags, product_id, monotonic_version, marketing_version, image length, and zeroed signature slotsRust parsing now validates slot length, header length alignment, and image length bounds before deriving code lengthRemoval of prepare-stage1-unsigned path reduces attack surface in build tooling
810d3e87by Niklas Dusenlund+573−14413 files
No security note in commit
Informational 12 AI analysisMessage 78 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

bootloader: use shared stage1 header tool

This commit is a build-system refactoring for the BitBox02 bootloader. It replaces a C-language placeholder for the bootloader's stage1 header with a Python tool that generates the same header from JSON manifests during the build. The old …

5b14742fby Niklas Dusenlund+52−1105 files
No security note in commit
Low 27 AI analysisMessage 83 · Strong
BB BitBoxBitBox02 firmware BitcoinHardware wallets

scripts: unify the BitBox image format

This commit refactors the firmware image header format used by BitBox hardware wallets so that BitBox02 and BitBox03 share a single 1024-byte layout. It adds new metadata fields (product ID, version numbers, signature slots) and switches t…

Changed binary image header format and parserAdded checked integer conversions for 64-bit image lengthAdded bounds checks on slot length, header length, and image length in Rust loader
9403e6feby Niklas Dusenlund+524−376 files
No security note in commit
Informational 15 AI analysisMessage 68 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

scripts: rename image header tool

This commit simply renames a build script from bitbox03_image_header.py to image_header.py and updates all references in the Makefile and Rust build files. The script's contents and behavior are unchanged. There is no security issue here.

29d6720aby Niklas Dusenlund+7−75 files
No security note in commit
Informational 15 AI analysisMessage 70 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Firmware v9.27.1 verification (yaziza)

This commit adds two digital signature files for BitBox02 firmware version 9.27.1. These signatures are a third-party reproducible-build verification (called an 'assertion') created by an independent contributor named yaziza. The commit do…

6d2e6955by Yasser Aziza+0−02 files
No security note in commit
Informational 15 AI analysisMessage 70 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Firmware v9.25.0 verification

This commit adds two digital signature files to the repository. They are third-party reproducible-build attestations (assertions) for the already-released BitBox02 firmware version 9.25.0. The commit does not change any firmware source cod…

b454a627by Yasser Aziza+0−02 files
No security note in commit
Low 34 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge remote-tracking branch 'agent/benma-agent/hww-start-session'

This commit adds a new 'session reset' command to the BitBox02 hardware wallet's USB protocol. It lets the host computer cleanly reset the device connection if a previous operation was interrupted, instead of leaving the device stuck mid-t…

New USB control command added to host-wallet protocolReset path cancels async task, resets Noise state, unlocks USB processing, and clears output queueU2F UI ownership check prevents reset from interrupting an active U2F workflow
04302490by Marko Bencun+485−1713 files
No security note in commit
Informational 15 AI analysisMessage 78 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

py: make session reset an API setup helper

This is a routine Python code refactor. It moves an existing 'reset session' command from one internal class to another and adds a version check so older firmware simply skips it. There is no security bug being fixed here; it is purely org…

50a9e76aby benma's agent+28−163 files
No security note in commit
Moderate 62 AI analysisMessage 78 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

hww: reset sessions on host reconnect

This commit fixes a bug in the BitBox02 hardware wallet where unplugging the USB cable at the wrong moment could leave a half-finished operation running. If the device stayed powered and a new host reconnected, the new host's first message…

Fixes cross-session state confusion on USB reconnectAdds explicit session reset command to cancel stale async workflowsResets Noise cryptographic session to prevent old-key encrypted responses
6679936fby benma's agent+473−1712 files
Vendor flagged security relevance
Informational 17 AI analysisMessage 58 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge commit 'refs/pull/2073/head' of https://github.com/BitBoxSwiss/bitbox02-firmware

This commit adds a new recovery-word entry screen for the upcoming BitBox03 hardware wallet. It is a large feature patch: it introduces a dedicated BIP39 wordlist keyboard, a new recovery-words review screen, and changes how the device han…

New UI workflow distinguishes 'back' from 'cancel' during seed restoration, reducing accidental aborts.Cancel actions still require an explicit confirmation prompt before the restore is abandoned.Wordlist keyboard disables keys that cannot lead to a valid BIP39 word, preventing invalid-word compositions at the widget level.
6b04e006by Marko Bencun+7010−24621 files
No security note in commit
Low 47 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge remote-tracking branch 'agent/benma-agent/show-erc20-contract'

This commit improves the BitBox02 hardware wallet's Ethereum token-approval screen. When a user signs an ERC20 token transfer, the device now also shows the token's smart-contract address if the token symbol is ambiguous (the same ticker, …

UI hardening: adds contract-address confirmation for ERC20 tokens with ambiguous or unknown symbolsRegistry validation: rejects payment requests for tokens not present in the firmware's ERC20 registryBuild-time ambiguity detection: generates a sorted list of units shared by multiple contracts
410df562by Marko Bencun+203−123 files
No security note in commit
Low 26 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge remote-tracking branch 'agent/benma-agent/bootloader-descriptor-compat'

This commit relaxes a version check in the BitBox02 bootloader upgrade code. Previously, the firmware installer required that a stage0 bootloader descriptor's version exactly matched the currently expected image version. Now it accepts des…

Strict version equality check removed from bootloader descriptor parsingChange located in bootloader upgrade / firmware installer verification pathNo bounds, length, or pointer validation changes observed
6dccfd24by Marko Bencun+19−72 files
No security note in commit
Moderate 53 AI analysisMessage 45 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge branch 'nickez/bb02-utf8-safe'

This commit hardens the BitBox02 firmware so it stops trusting that incoming text strings are valid UTF-8 or plain ASCII. It replaces risky C string copies with length-checked, UTF-8-aware helpers, rejects non-ASCII characters at UI bounda…

Replaced snprintf-based string copies with length-bounded UTF-8-aware copiesAdded explicit length parameter to memory_set_device_name and reject embedded/invalid nullsAdded printable-ASCII enforcement at Rust UI boundary before C rendering
0bbdf6f0by Niklas Dusenlund+338−9625 files
No security note in commit
Low 41 AI analysisMessage 28 · Opaque
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge branch 'benma/ub'

This commit fixes a coding guideline violation in the BitBox02 factory setup code. A 32-byte buffer that receives output from a Rust function was not initialized to zeroes before use. The accompanying documentation now explicitly requires …

Uninitialized stack buffer used as output buffer for Rust/C FFI callDefensive zero-initialization added to prevent use of stale stack data on error or partial write pathsProject coding guidelines updated to mandate zero-initialization for rust_util_bytes_mut buffers
8a6fd97bby Marko Bencun+3−12 files
No security note in commit
Low 35 AI analysisMessage 68 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

oled: hold display in reset during startup

This commit fixes a display behavior issue during startup of the BitBox02 hardware wallet. Previously, when the device turned on, the screen's reset pin was left in a state that could allow leftover images or text from an earlier session t…

Information disclosure via residual display content during bootOLED reset pin sequencing hardeningDefense against stale/misleading UI state before verified firmware initializes display
cdb27835by Niklas Dusenlund+2−11 file
Vendor flagged security relevance
Informational 18 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge remote-tracking branch 'agent/benma-agent/factorysetup-trim-unused'

This commit trims the BitBox02 factory-setup firmware image by switching stored root attestation public keys from 65-byte uncompressed to 33-byte compressed secp256k1 keys, and by using a smaller static secp256k1 verification context inste…

Change in trusted public-key table format and derivation logicSwitch to static/no-precomp secp256k1 verification contextAddition of secp256k1 self-test at boot
554a0558by Marko Bencun+457−5647 files
No security note in commit
Low 37 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge remote-tracking branch 'agent/benma-agent/validate-py-antiklepto-signatures'

This commit adds extra safety checks in the BitBox02 Python library for ECDSA signatures used in Bitcoin and Ethereum signing. It now validates that signatures have the correct length, use valid numbers, and use the safer low-S form. It al…

Defensive validation added for ECDSA signature format and low-S encodingRecovery ID range validation added for recoverable signaturesAnti-Klepto verification now rejects malformed/malleable signatures before nonce verification
0d1a7997by Marko Bencun+152−65 files
Vendor flagged security relevance
Informational 19 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge remote-tracking branch 'agent/benma-agent/scroll-payment-request-memo-name'

This commit tweaks how the BitBox02 hardware wallet displays a payment-request memo on screen. It changes the label from 'Memo from\n\nMerchant' to 'Memo from: Merchant' and makes the screen scrollable so long merchant names don't get cut …

No security-relevant signal in commit message or diffUI/UX change only: text formatting and scrollabilityNo memory-safety, cryptographic, or authorization changes observed
be375664by Marko Bencun+115−66 files
No security note in commit
Repository ledger

Explore captured commits

Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.

AI review queuedui: port tx address confirm to asyncby Niklas Dusenlund · a33e1d5d · Feb 12, 2026 · 5 filesMessage 60 · AdequateInformational 12Details
Commit message · Niklas Dusenlund

ui: port tx address confirm to async

Co-Authored-By: Marko Bencun <marko@shiftcrypto.ch>

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 12/100

This commit is a routine internal refactor of the BitBox02 firmware's user-interface code. It converts the transaction-address confirmation screen from a callback-based (synchronous-style) API to an async/await API. There is no indication in the commit that it fixes a security bug or changes security behavior; it appears to be a code-quality improvement.

AI review queueddocstring typoby Marko Bencun · 2590e08c · Feb 12, 2026 · 1 fileMessage 18 · OpaqueInformational 15Details
Commit message · Marko Bencun

docstring typo

18/100 · OpaqueMessage clarity
✓ Subject identifies a change! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit fixes a single-word typo in a code comment ('man' to 'how'). It does not change any executable code, behavior, or security properties of the firmware.

AI review queuedfix: validate max_fee_per_gas zero prefix in EIP-1559by cedwies · ee6e1cee · Feb 11, 2026 · 1 fileMessage 62 · AdequateLow 49Details
Commit message · cedwies

fix: validate max_fee_per_gas zero prefix in EIP-1559

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
defensive validationsigning or wallet pathsecond-pass: near security thresholdsecond-pass: security-sensitive path
AI analysis · Low 49/100

This commit fixes a typo-like bug in the BitBox02 hardware wallet's Ethereum transaction signing code. The firmware was supposed to reject a 'max_fee_per_gas' value that has an unnecessary leading zero byte, but it was accidentally checking 'gas_limit' instead. Leading-zero values can cause the device and a connected computer to compute different transaction hashes, which could let an attacker trick the user into signing one transaction while the computer broadcasts a different one. The fix corrects the field check and adds tests for both fee fields.

AI review queuedinital async-engineby Niklas Dusenlund · a4a2fc1d · Feb 9, 2026 · 95 filesMessage 43 · ThinInformational 15Details
Commit message · Niklas Dusenlund

inital async-engine

ports orientation screen and delay to show that waking works

Co-Authored-By: Marko Bencun <marko@shiftcrypto.ch>

43/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides an explanatory body
Why it was queued
second-pass: unusually broad change
AI analysis · Informational 15/100

This commit introduces a new asynchronous task engine into the BitBox02 firmware. It vendors third-party Rust libraries (async-task, concurrent-queue, crossbeam-utils) and adds a custom executor plus a small demo that shows an orientation screen and a delay. There is no indication in the commit message, diff, or supplied references that this change fixes or introduces a security vulnerability; it appears to be a routine architectural/feature addition.

AI review queuedda14531: avoid unaligned u16 loadsby benma's agent · 043ad352 · Feb 3, 2026 · 1 fileMessage 68 · AdequateLow 35Details
Commit message · benma's agent

da14531: avoid unaligned u16 loads

The serial-link frame buffer is byte-addressed. Casting &frame[1] /
&frame[3+len] to a uint16_t* can be unaligned, which is undefined
behavior in C.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Low 35/100

This commit fixes a low-level coding issue in the firmware that talks to a Bluetooth chip (DA14531). The code was reading 2-byte numbers from positions in a byte buffer that might not be properly aligned in memory, which is undefined behavior in C. The fix uses memcpy instead of direct pointer casts, which is safe regardless of alignment. On its own this is a robustness/correctness fix; there is no direct evidence in the commit that it is exploitable as a security vulnerability.

AI review queuedda14531: drop too-short UART framesby benma's agent · 9d57db92 · Feb 3, 2026 · 1 fileMessage 68 · AdequateModerate 68Details
Commit message · benma's agent

da14531: drop too-short UART frames

The serial-link parser subtracts 5 bytes (type+len+crc) when
validating a frame. If a truncated frame reaches
SERIAL_LINK_STATE_CHECK with frame_len < 5, the subtraction
underflows, allowing out-of-bounds reads during CRC/length handling.

Reject frames shorter than the minimum header+CRC size before parsing
the length.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Moderate 68/100

This commit fixes a bug in the firmware that talks to a Bluetooth chip over a serial (UART) link. If a malformed or truncated message shorter than 5 bytes reached the validation step, the code would subtract 5 from the message length. Because the length was stored as an unsigned number, the result wrapped around to a very large value instead of becoming negative. That large value could then be used to read memory outside the intended buffer, potentially leaking data or causing the device to behave unpredictably. The fix rejects any frame shorter than 5 bytes before doing the subtraction.

AI review queuedpy: formatby Niklas Dusenlund · aae1c599 · Feb 3, 2026 · 1 fileMessage 0 · OpaqueInformational 15Details
Commit message · Niklas Dusenlund

py: format

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit is a purely cosmetic code-formatting change. It shortens a single Python print statement from multiple lines to one line, with no change to what the program does or how it behaves.

AI review queuedbitbox02: port C datetime formatting to Rustby benma's agent · 1a04855e · Feb 2, 2026 · 148 filesMessage 68 · AdequateInformational 18Details
Commit message · benma's agent

bitbox02: port C datetime formatting to Rust

Using the `time` dep. Binary size becomes slightly smaller.

Squashed: move bitbox02 datetime funcs to util::datetime

It is not Rust-based and not related to BitBox02 hardware
functionality, so we move it to the util crate.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
second-pass: unusually broad change
AI analysis · Informational 18/100

This commit rewrites the BitBox02 firmware's date/time formatting from C to Rust and vendors several new Rust crates (time, deranged, powerfmt, num-conv) to do it. The change is described by the vendor as a code-quality and binary-size improvement, not a security fix. There is no direct evidence in the commit of a vulnerability being patched, but any rewrite of formatting code can in principle introduce subtle bugs such as buffer handling or timezone mistakes. The large amount of newly vendored code increases the supply-chain/bug surface that future audits should watch.

AI review queuedInitial bb03 simulatorby Niklas Dusenlund · 7be0d9e7 · Jan 30, 2026 · 11 filesMessage 28 · OpaqueInformational 15Details
Commit message · Niklas Dusenlund

Initial bb03 simulator

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit adds a new graphical simulator for the BitBox03 hardware wallet. It is purely a development and testing tool: it creates a window that mimics the device screen, accepts simulated USB/TCP traffic, and can optionally pre-seed a test mnemonic. There is no change to the actual firmware that runs on real devices, and nothing in the commit fixes or introduces a security vulnerability in shipped products.

AI review queuedda14531: port da14531_protocol_format to Rustby benma's agent · 09ee1ba7 · Jan 26, 2026 · 14 filesMessage 78 · AdequateInformational 16Details
Commit message · benma's agent

da14531: port da14531_protocol_format to Rust

Using the CRC dep we already have in Rust. We expose a helper
rust_da14531_crc function too for an unrelated call to CRC so we can
get rid of crc.c/crc.h.

C unit tests added for da14531_protocol_format still pass, showing the
Rust port is correct for the cases tested.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Informational 16/100

This commit rewrites a low-level serial-link framing and CRC routine from C into Rust for the BitBox02 hardware wallet's Bluetooth companion-chip (DA14531) communication. It removes a hand-generated C CRC implementation and uses a standard Rust `crc` crate instead. The change is a refactor/port, not a fix for a known vulnerability. There is no direct evidence in the commit or supplied references that this change addresses a security bug.

AI review queuedda14531: add unit tests for da14531_protocol_formatby benma's agent · ad4102d7 · Jan 26, 2026 · 3 filesMessage 75 · AdequateInformational 18Details
Commit message · benma's agent

da14531: add unit tests for da14531_protocol_format

The asserts are changed as they were off by one (in the safe
conversative direction).

75/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Informational 18/100

This commit adds unit tests for a Bluetooth/serial framing function and slightly relaxes four buffer-size checks from '<' to '<='. The change is described as 'off by one in the safe conservative direction', meaning the old checks rejected a perfectly-sized buffer as too small. The patch does not fix a memory corruption bug; it removes a false-positive assertion that could have caused a harmless device reset when a caller supplied an exactly-sized buffer. No security vulnerability is disclosed or demonstrated.

AI review queuedRefactor multisig_get/set_by_hash into HALby cedwies · 508cf98f · Jan 19, 2026 · 6 filesMessage 70 · AdequateInformational 18Details
Commit message · cedwies

Refactor multisig_get/set_by_hash into HAL

Also adds logic to TestingHal to make
bitbox02-rust tests use TestingHal instead of
mock_memory.

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 18/100

This commit is a code cleanup that moves multisig account storage operations behind a hardware-abstraction layer so tests can use a fake memory instead of real device memory. It does not appear to fix or introduce a security vulnerability. A few test files were updated to use the new fake memory, and one small bug was fixed where a test created a fresh fake device after registering an account, which would have made the test fail to find the registered account.

AI review queuedCHANGELOG: mark v9.25.0by Marko Bencun · 58997be1 · Jan 12, 2026 · 1 fileMessage 38 · OpaqueInformational 15Details
Commit message · Marko Bencun

CHANGELOG: mark v9.25.0

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
AI analysis · Informational 15/100

This commit only updates the CHANGELOG.md file to mark the release of firmware version 9.25.0. It does not change any source code, cryptographic routines, Bluetooth behavior, or password handling. The changelog mentions a password-stretching improvement and a Bluetooth bug fix, but those changes were made in earlier commits; this commit merely documents them.

AI review queuedbuild(deps): bump lru from 0.16.1 to 0.16.3 in /test/simulator-graphical (#1741)by dependabot[bot] · fa6b383a · Jan 8, 2026 · 1 fileMessage 100 · StrongInformational 10Details
Commit message · dependabot[bot]

build(deps): bump lru from 0.16.1 to 0.16.3 in /test/simulator-graphical (#1741)

Bumps [lru](https://github.com/jeromefroe/lru-rs) from 0.16.1 to 0.16.3.
- [Changelog](https://github.com/jeromefroe/lru-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jeromefroe/lru-rs/compare/0.16.1...0.16.3)

---
updated-dependencies:
- dependency-name: lru
dependency-version: 0.16.3
dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
automated dependency-update discountsecond-pass: broader security terminology
AI analysis · Informational 10/100

This is an automated dependency update by Dependabot that bumps the Rust 'lru' crate from version 0.16.1 to 0.16.3 inside a graphical simulator test component. The change only modifies a test-only lockfile and does not touch the actual BitBox02 firmware code. There is no indication in the commit that this fixes a security issue, and the supplied references do not mention any security relevance.

AI review queuedoptiga: add cleanupsby Marko Bencun · f1e90dde · Jan 6, 2026 · 1 fileMessage 28 · OpaqueLow 32Details
Commit message · Marko Bencun

optiga: add cleanups

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Low 32/100

This commit adds automatic cleanup calls for several 32-byte temporary buffers that hold sensitive values like password hashes, HMAC keys, and password secrets in the Optiga secure-element integration code. Previously these buffers were zero-initialized at declaration but not always explicitly erased before the function returned or after an early error path. The change reduces the chance that leftover cryptographic material remains in stack memory, which could lower the risk of information leakage if an attacker later reads process memory or a core dump. It is a defensive hardening patch rather than a fix for an actively exploitable bug.

AI review queuedkeystore: upgrade password algo upon unlockby Marko Bencun · 17c454de · Jan 6, 2026 · 2 filesMessage 60 · AdequateLow 28Details
Commit message · Marko Bencun

keystore: upgrade password algo upon unlock

In this moment we have all info needed at hand to upgrade the
encryption method.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
second-pass: broader security terminology
AI analysis · Low 28/100

This commit changes how the BitBox02 hardware wallet handles the password-stretching algorithm used to protect the wallet seed. When a user unlocks the device, if the seed was encrypted with an older, weaker stretching method, it is now automatically re-encrypted with the newer, stronger method. The change is a defensive upgrade, not a fix for an active attack, and it only affects the unlock flow after the correct password is entered.

AI review queuedoptiga: reduce number of events on initby Marko Bencun · 0e1673d4 · Jan 6, 2026 · 13 filesMessage 73 · AdequateInformational 18Details
Commit message · Marko Bencun

optiga: reduce number of events on init

keystore.rs inits a new password and stretches using the new password
right after, needlessly increasing the number of Optiga security
events. Since initializing a new password already involves stretching
it, we can reuse that.

73/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
second-pass: broader security terminology
AI analysis · Informational 18/100

This commit is a small internal optimization in the BitBox02 hardware wallet firmware. When a user creates or restores a password, the device previously performed two separate operations on the secure chip (Optiga/ATECC): one to initialize the new password and another to stretch it. The commit combines these into a single step, reducing the number of secure chip 'events' (internal counter operations). There is no direct security vulnerability being fixed; it is a performance and resource-usage improvement.

AI review queuedoptiga: add v1 algoby Marko Bencun · 05a813bb · Jan 6, 2026 · 11 filesMessage 73 · AdequateLow 26Details
Commit message · Marko Bencun

optiga: add v1 algo

- TestingHal defaults to Optiga, so the password algo defaults to
V1 (for ATECC it is V0). We do this because many tests check the
events counter, which only makes sense for Optiga.
- We won't adapt all tests to count the events for both V0 and V1,
that is overkill. We only count them for V1. Maybe we will add some select tests to count V0
events in the keystore only.
- init_new_password() only supports V1. V0 is only supported in
stretch_password() to allow unlocking seeds encrypted using V0.

73/100 · AdequateMessage clarity
✓ Subject identifies a change✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
Why it was queued
second-pass: broader security terminology
AI analysis · Low 26/100

This commit adds a new password-stretching algorithm (V1) for BitBox02 devices that use the Optiga secure chip. It changes how the device turns a user's password into an encryption key, adding extra secure-chip-backed hashing steps and enforcing that newly created passwords use the new algorithm. Old V0 passwords can still be unlocked for backward compatibility. There is no direct evidence in the commit of a security vulnerability being fixed; it reads as a planned feature/upgrade.

AI review queuedoptiga: rename KDF_NUM_ITERATIONSby Marko Bencun · be26b5ae · Jan 6, 2026 · 1 fileMessage 35 · OpaqueInformational 15Details
Commit message · Marko Bencun

optiga: rename KDF_NUM_ITERATIONS

To make it clear it's only used in V0.

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit is a simple code cleanup: it renames a constant from KDF_NUM_ITERATIONS to KDF_NUM_ITERATIONS_V0 and updates the comment to clarify that the low number of iterations (2) applies only to an older password-stretching algorithm (V0). No behavior changes, no security fix, no vulnerability patch.

AI review queuedmemory: add password stretch algo memory flagby Marko Bencun · 16e7633d · Jan 6, 2026 · 15 filesMessage 45 · ThinLow 28Details
Commit message · Marko Bencun

memory: add password stretch algo memory flag

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
second-pass: broader security terminology
AI analysis · Low 28/100

This commit adds a new memory flag that records which password-stretching algorithm was used to protect the wallet seed. It does not change the actual stretching math yet; it only stores the choice so future firmware can support a newer algorithm while still recognizing older backups. There is no immediate security fix, but it is infrastructure for a future security improvement.

AI review queuedupdate LICENSE yearby benma's agent · 21434125 · Dec 22, 2025 · 2 filesMessage 28 · OpaqueInformational 15Details
Commit message · benma's agent

update LICENSE year

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit only updates copyright years in two LICENSE files. It makes no changes to software code, functionality, or security controls. There is no security relevance.

AI review queuedremove keystore.hby Marko Bencun · 41ee7867 · Dec 22, 2025 · 7 filesMessage 28 · OpaqueInformational 15Details
Commit message · Marko Bencun

remove keystore.h

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit removes an unused header file called keystore.h and updates the code that previously included it. The two constants that were defined in that header (KEYSTORE_U2F_SEED_LENGTH and XPUB_ENCODED_LEN) are no longer referenced through the header. In the U2F code, the seed length is now taken directly from the size of the local seed variable using sizeof(seed), which is functionally equivalent because the seed is a fixed-size array of the same length. There is no security-relevant change here—this is a cleanup refactor.

AI review queuedoptiga: remove redefinitionby Marko Bencun · 9e729ac2 · Dec 18, 2025 · 1 fileMessage 35 · OpaqueInformational 15Details
Commit message · Marko Bencun

optiga: remove redefinition

It's already in optiga.h

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit simply removes a duplicate definition of a constant in one file because the same definition already exists in a header file. It is a routine cleanup with no security impact.

AI review queuedport reset_reset to Rustby benma's agent · ea8c87d0 · Dec 4, 2025 · 15 filesMessage 28 · OpaqueInformational 12Details
Commit message · benma's agent

port reset_reset to Rust

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 12/100

This commit rewrites the device factory-reset routine from C to Rust. It is a straightforward language port: the same steps (lock keystore, reset secure-chip keys, reset U2F counter, wipe memory, disable SmartEEPROM, show a status screen, reboot) are preserved. The change also adds unit tests and makes the unlock function asynchronous so it can call the new async reset. Nothing in the diff introduces a new vulnerability or changes security-critical behavior in a suspicious way.

AI review queuedsimulator-graphical: Initial commitby Niklas Dusenlund · 16e58296 · Nov 13, 2025 · 40 filesMessage 35 · OpaqueInformational 15Details
Commit message · Niklas Dusenlund

simulator-graphical: Initial commit

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit messagesecond-pass: unusually broad change
AI analysis · Informational 15/100

This commit adds a new graphical simulator for the BitBox02 hardware wallet. It is a development and testing tool, not a change to the firmware that runs on real devices. There is no indication this commit fixes or introduces a security vulnerability.