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 40 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.

Lower-prioritysimulator-graphical-bb03: make communication_timeout_reset a no-opby Marko Bencun · 209e9bc1 · Apr 1, 2026 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · Marko Bencun

simulator-graphical-bb03: make communication_timeout_reset a no-op

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit changes a single placeholder function in the graphical simulator for the BitBox03 hardware wallet. The function, which previously would crash the simulator if called, now does nothing. The change only affects test/simulation code, not real device firmware, and there is no indication it fixes a security issue.

Lower-prioritybitbox02_rust: enable app/firmware features in simulatorby Marko Bencun · b2bee384 · Apr 1, 2026 · 2 filesMessage 73 · AdequateInformational 15Details
Commit message · Marko Bencun

bitbox02_rust: enable app/firmware features in simulator

In bitbox02 graphical simulator, the `simulator-grahical` feature
bitbox02_rust_c enables `firmware` and all the `app-` features.

In bitbox02 graphical simulator, bitbox02_rust_c is not a dep, so
these were all disabled.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This commit is a build/test configuration fix for the BitBox02 graphical simulator. It enables the same cryptocurrency app features (Bitcoin, Litecoin, Ethereum, Cardano) and firmware feature in the simulator that were already available in the real device build. The change only affects the simulator's compiled feature flags and dependency lock file; it does not change any user-facing behavior or fix a security vulnerability.

Security candidatesimulator-graphical-bb03: implement Randomby Marko Bencun · f5fae7e6 · Apr 1, 2026 · 3 filesMessage 50 · ThinInformational 15Details
Commit message · Marko Bencun

simulator-graphical-bb03: implement Random

50/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Names security-relevant behavior explicitly! No meaningful explanatory body
Why it was queued
seed or entropy path
AI analysis · Informational 15/100

This commit implements a placeholder random-number generator inside a graphical simulator for the BitBox03 hardware wallet. It replaces 'todo!' stubs with code that fills 32-byte buffers using the standard Rust 'rand' crate. The change only affects test/simulator code, not the real firmware or any production device, so it does not create a security vulnerability in shipped products. The only concern is that simulator developers must remember this is a non-cryptographic/test RNG and must not copy it into real hardware code.

Lower-prioritysimulator-graphical-bb03: remove test screen popby Marko Bencun · 58d55079 · Apr 1, 2026 · 1 fileMessage 55 · ThinInformational 15Details
Commit message · Marko Bencun

simulator-graphical-bb03: remove test screen pop

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 15/100

This commit removes a leftover test/debug feature from the graphical simulator for the BitBox03 hardware wallet. The simulator used to automatically switch to the logo screen after 5,000 internal 'wake-up' events. That behavior was only for local testing and never affected real devices or user funds.

Lower-prioritybitbox03/ui: split UI from async machineby Marko Bencun · 894dc727 · Apr 1, 2026 · 8 filesMessage 45 · ThinInformational 15Details
Commit message · Marko Bencun

bitbox03/ui: split UI from async machine

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit is a routine internal code cleanup for the BitBox02/BitBox03 firmware's user interface. It moves the confirmation dialog code into its own file and introduces a small reusable helper for handling button-press results in async Rust code. There is no indication this fixes a security bug or changes user-visible security behavior.

Lower-priorityAGENTS: do not use bitbox_lvgl::ffi directlyby Marko Bencun · 9a12e594 · Apr 1, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Marko Bencun

AGENTS: do not use bitbox_lvgl::ffi directly

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only updates the project's AGENTS.md file, which is a set of instructions for AI coding assistants. It adds a guideline telling agents not to directly use low-level FFI bindings to the LVGL UI library from feature code, and instead to use safe wrappers. No source code, firmware behavior, or security controls were changed.

Lower-prioritybitbox03/ui: add confirm screen demo implby Marko Bencun · 40a0fb53 · Apr 1, 2026 · 5 filesMessage 80 · StrongInformational 15Details
Commit message · Marko Bencun

bitbox03/ui: add confirm screen demo impl

- ScreenGuard is so that the screen is popped when the future is
dropped, e.g. when the client disconnects
- Rc is used for safety just in case the parent object is deleted from
within the callback. We don't expect this to ever be a pattern, but it
would avoid deleting the shared state during callback execution.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Informational 15/100

This commit adds a new on-screen confirmation dialog for the BitBox03 hardware wallet and the low-level Rust-to-LVGL event-callback plumbing needed to make it work. It is a feature implementation, not a security patch. The code introduces memory-management patterns (reference-counted callbacks and a screen guard that pops the UI when a future is dropped) that are intended to make the code safer, but the commit itself does not fix any disclosed vulnerability.

AI review queuedbitbox03/ui: implement reset()by Marko Bencun · 38e728ad · Mar 31, 2026 · 1 fileMessage 35 · OpaqueInformational 19Details
Commit message · Marko Bencun

bitbox03/ui: implement reset()

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

This commit replaces an unimplemented placeholder ('todo!()') for a screen reset function with actual code that clears the user-interface stack. It is a normal completion of missing functionality. There is no direct evidence in the commit that this fixes an exploitable security bug, but leaving a reset operation unimplemented could previously have left stale UI state in place during sensitive workflows.

AI review queuedpy/bitbox02: add BitBox03 to platform enum and info parsingby Marko Bencun · bcd3c558 · Mar 31, 2026 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · Marko Bencun

py/bitbox02: add BitBox03 to platform enum and info parsing

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit simply teaches the BitBox Python library to recognize a new hardware device model, the BitBox03. It adds the model name to an internal list and tells the library how to interpret the device-info bytes sent by a BitBox03. There is no security fix or vulnerability here—just routine support for a new product variant.

Security candidatebitbox03: add local simulator HALby Marko Bencun · f0845590 · Mar 31, 2026 · 7 filesMessage 60 · AdequateInformational 15Details
Commit message · Marko Bencun

bitbox03: add local simulator HAL

- Reuse bitbox-platform-host
- Reuse bitbox03 UI
- For now, keep other subsytems with todo!() stubs

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
seed or entropy path
AI analysis · Informational 15/100

This commit adds a new local simulator for the BitBox03 hardware wallet. It is purely test/development tooling: it wires up fake hardware components (fake memory, fake secure chip, fake SD card, etc.) and leaves many simulator functions as unimplemented 'todo!()' stubs. There is no indication this change affects real device firmware or introduces a security vulnerability.

Lower-priorityhal: move Testing subsystems to new bitbox-platform-host crateby Marko Bencun · c0445ce5 · Mar 31, 2026 · 10 filesMessage 60 · AdequateInformational 15Details
Commit message · Marko Bencun

hal: move Testing subsystems to new bitbox-platform-host crate

To be reused by simulators.

60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 15/100

This commit is a straightforward code reorganization: it moves fake/test-only implementations of hardware subsystems (EEPROM, memory, SD card, secure chip) from one internal Rust crate into a new reusable crate named bitbox-platform-host. The code itself is almost identical to what was removed, just relocated and renamed. There is no change to the real device firmware or to any security-sensitive behavior visible to users.

Lower-prioritysimulator-graphical-bb03: remove bitbox02_rust_c depby Marko Bencun · 7d1ae7d8 · Mar 31, 2026 · 3 filesMessage 50 · ThinInformational 15Details
Commit message · Marko Bencun

simulator-graphical-bb03: remove bitbox02_rust_c dep

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit removes an unused Rust library dependency from a graphical simulator test program. It is a routine cleanup change with no security relevance.

AI review queuedAdd Rust U2FHID HWW transportby Niklas Dusenlund · 635c9609 · Mar 31, 2026 · 24 filesMessage 68 · AdequateLow 37Details
Commit message · Niklas Dusenlund

Add Rust U2FHID HWW transport

Introduce a new `bitbox-u2fhid` crate that reassembles U2FHID
reports and routes vendor commands to the HWW async USB flow.

Update the async USB executor to hand out owned responses, reset
stale state on cancel, and size the report queue for a full worst-
case U2FHID message.

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 · Low 37/100

This commit adds a new Rust-based USB transport layer for BitBox hardware wallets. It reassembles U2F HID messages and routes vendor commands to the existing async USB task system. The change also hardens the async executor by handing out owned responses instead of copying into caller buffers, and by resetting stale state when a task is cancelled or times out. There is no vendor statement that this fixes a security bug; it reads as a feature/refactoring commit with defensive hardening.

AI review queuedethereum: support payment requests for eip1559by Cedric Wiese · 38d26b42 · Mar 30, 2026 · 5 filesMessage 45 · ThinLow 28Details
Commit message · Cedric Wiese

ethereum: support payment requests for eip1559

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

This commit adds support for EIP-1559 Ethereum transactions in the BitBox02's payment-request (swap) feature. It lets users verify and sign Ethereum and ERC-20 token swaps that include a merchant payment request, similar to what already existed for Bitcoin. The change is a feature addition, not a fix for a known vulnerability.

AI review queuedethereum: extract total fee verification helpersby Cedric Wiese · f3aeae28 · Mar 29, 2026 · 1 fileMessage 55 · ThinInformational 15Details
Commit message · Cedric Wiese

ethereum: extract total fee verification helpers

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
defensive validationsigning or wallet pathsecond-pass: near security thresholdsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a simple code cleanup: it moves two existing blocks of Ethereum fee-verification logic into new helper functions without changing what the code actually does. There is no visible security fix or behavior change.

Security candidatemessages: add eth payment request fieldsby Cedric Wiese · 21a01dca · Mar 29, 2026 · 5 filesMessage 45 · ThinInformational 17Details
Commit message · Cedric Wiese

messages: add eth payment request fields

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 17/100

This commit adds a new optional 'payment request' field to Ethereum EIP-1559 signing requests in the BitBox02 firmware's protocol definitions and generated code. It does not contain any actual implementation of how that field is processed, validated, or shown to the user. Based only on the code changed here, there is no identifiable security vulnerability.

AI review queuedApi: Make payment_request generic instead of bitcoin specificby Cedric Wiese · b7e8f580 · Mar 26, 2026 · 2 filesMessage 50 · ThinInformational 19Details
Commit message · Cedric Wiese

Api: Make payment_request generic instead of bitcoin specific

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 19/100

This commit is a code cleanup that makes the payment-request code less Bitcoin-specific so it can be reused for other coins in the future. It does not add new user-facing features or fix a known bug. The changes move amount formatting and coin-type handling from the shared payment-request module into the Bitcoin signing code, and adjust internal test helpers. There is no indication in the commit that this fixes a security vulnerability.

Security candidatePort USB report queue to Rustby Niklas Dusenlund · 214254aa · Mar 26, 2026 · 42 filesMessage 78 · AdequateLow 34Details
Commit message · Niklas Dusenlund

Port USB report queue to Rust

Introduce a dedicated bitbox-usb-report-queue crate and expose
an opaque C FFI for allocating, clearing, pushing, peeking and
pulling 64-byte USB reports.

Wire usb_processing, usb_frame, usb_packet and u2f_packet to
use RustUsbReportQueue handles instead of the legacy C queue,
and initialize separate HWW and U2F queues from Rust, the
bootloader, simulators and HID test fakes.

Remove src/queue.c/h and the old bitbox02 queue wrapper, and
update the simulator and test code to drain and free the new
queues.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
update trustboot or update path
AI analysis · Low 34/100

This commit rewrites the firmware's USB report queue from C to Rust. It is a large refactoring that replaces a hand-written C ring buffer with a Rust VecDeque wrapped in a C-compatible FFI. The change touches the core USB communication path used by both the main hardware wallet (HWW) and U2F interfaces. There is no explicit security bug fixed or introduced in the diff, but any mistake in the boundary between C and Rust could affect how the device receives and sends USB messages.

Security candidateeth: implement streaming for typed data messagesby Tomas Vrba · fd2653cf · Mar 25, 2026 · 12 filesMessage 78 · AdequateLow 37Details
Commit message · Tomas Vrba

eth: implement streaming for typed data messages

eth: add typed data streaming to python API

show size of truncated string, show ellipsis

add a multiline string test case

- adds a test case to make use of multiline string handling code from in
the .js test generator
- adjust rust test loader to handle strings, not just bytes

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Low 37/100

This commit extends an existing Ethereum data-streaming feature so it also works for EIP-712 typed messages with large data fields (e.g., a 50 KB 'bytes' field). Previously, only large Ethereum transaction data could be streamed in chunks; now the same chunking is applied to typed-message values. The change also improves on-screen display of long values by warning the user when a value is too large to show in full and by showing an ellipsis. It is a feature addition with defensive input checks, not a fix for a known vulnerability.

AI review queuedMove SmartEEPROM into HAL EEPROMby Niklas Dusenlund · 29e9781d · Mar 25, 2026 · 25 filesMessage 78 · AdequateInformational 17Details
Commit message · Niklas Dusenlund

Move SmartEEPROM into HAL EEPROM

Add a dedicated Eeprom trait to bitbox-hal and implement it for both the device HAL and the Rust test HAL.

Use the new trait for setup, init, disable, and unlock-attempt persistence so those responsibilities no longer sit in Memory or System.

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

This commit is a code reorganization: it moves SmartEEPROM handling (a flash-backed memory feature) out of the general Memory and System modules into a new dedicated Eeprom trait in the hardware abstraction layer. The same underlying functions are still called, and the unlock-attempt counter behavior is preserved. There is no obvious security bug introduced, but the change touches code that protects device reset and unlock-attempt limits, so it deserves careful review to confirm no behavior was accidentally dropped.

Security candidatebb03: Initial HALby Niklas Dusenlund · 4d8eccde · Mar 24, 2026 · 38 filesMessage 43 · ThinLow 27Details
Commit message · Niklas Dusenlund

bb03: Initial HAL

And some safety improvements to the lvgl bindings

43/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides an explanatory body
Why it was queued
seed or entropy path
AI analysis · Low 27/100

This commit introduces the initial hardware abstraction layer (HAL) for the BitBox03 and makes several safety improvements to the Rust bindings for the LVGL graphics library. Most changes are architectural or defensive: adding new safe wrappers, replacing borrowed C string pointers with owned copies, adding explicit unsafe markers, and removing some risky image-source APIs. There are also large additions of generated font data and placeholder TODO implementations for hardware interfaces. No obvious exploitable vulnerability is visible in the diff, but the commit is large and partially implemented, so the safety claims cannot be fully verified from this patch alone.

AI review queuedApi: Move payment_request from bitcoin to api moduleby Cedric Wiese · b627ca50 · Mar 24, 2026 · 4 filesMessage 50 · ThinInformational 15Details
Commit message · Cedric Wiese

Api: Move payment_request from bitcoin to api module

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a pure code refactor: it moves the payment_request module from the bitcoin-specific directory up to the general API directory. The actual logic, security checks, and behavior of the payment request code are unchanged. No new vulnerabilities are introduced by this move.

Security candidatesimulator: LVGL initby Niklas Dusenlund · c36384ef · Mar 23, 2026 · 380 filesMessage 28 · OpaqueInformational 15Details
Commit message · Niklas Dusenlund

simulator: LVGL init

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
authentication pathparser or protocol path
AI analysis · Informational 15/100

This commit adds a new graphical simulator for the BitBox02 hardware wallet using the LVGL UI library. It is a large development-only change that introduces simulator code, vendored Rust dependencies, and build configuration updates. There is no indication it fixes a security bug or introduces a security vulnerability in the firmware itself.

Security candidateRevert "simulator: LVGL init"by Niklas · 8f6e8a8a · Mar 23, 2026 · 391 filesMessage 35 · OpaqueInformational 11Details
Commit message · Niklas

Revert "simulator: LVGL init"

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
seed or entropy pathauthentication pathparser or protocol path
AI analysis · Informational 11/100

This commit is a large revert that removes a previously added graphical simulator feature (LVGL init) from the BitBox02 firmware repository. It deletes the LVGL submodule, vendored Rust dependencies, simulator code, and related build files. There is no indication in the commit message or diff that this change fixes a security vulnerability; it appears to be a routine rollback of an unfinished or unwanted feature.

Security candidateoptiga: decouple memory from pal_os_datastoreby Marko Bencun · 356454d9 · Mar 23, 2026 · 6 filesMessage 60 · AdequateInformational 17Details
Commit message · Marko Bencun

optiga: decouple memory from pal_os_datastore

So these C modules can be used in BB03 without relying on BB02 memory
functions.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
boot or update path
AI analysis · Informational 17/100

This commit is a code cleanup that moves where the device fetches a 32-byte secret key used to talk to the secure chip (Optiga). Previously, a low-level C module directly called a BB02-specific memory function. Now it goes through a Rust abstraction layer so the same module can be reused in a future BB03 device. The change does not alter how the key is stored, generated, or protected; it only reroutes the function call. There is no indication this fixes a security bug.