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
698commits · 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 53 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.

Security candidatereleases: add v9.26.2, v9.26.3 and v9.26.4by Marko Bencun · eed2e68e · Jul 10, 2026 · 16 filesMessage 45 · ThinInformational 12Details
Commit message · Marko Bencun

releases: add v9.26.2, v9.26.3 and v9.26.4

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
boot or update path
AI analysis · Informational 12/100

This commit is a routine release-management update. It adds signed build assertions for three new BitBox02 firmware versions (9.26.2, 9.26.3, 9.26.4) and updates the release documentation and build helper script. The build script now deletes the v9.26.3 git tag after fetching because the released binaries accidentally included pre-release metadata, so the exact released binary can only be reproduced from the unsigned commit hash, not from the final tag. There is no code change to the firmware itself in this commit, and nothing in the materials suggests a security vulnerability.

AI review queuedeth: loosen EIP-712 identifier validationby Marko Bencun · 9703d8d9 · Jul 9, 2026 · 3 filesMessage 68 · AdequateInformational 21Details
Commit message · Marko Bencun

eth: loosen EIP-712 identifier validation

Allow ':' in EIP-712 type names used by some dapps as a namespace
separator

Co-Authored-By: Tomas Vrba <vrba.tomas@pm.me>

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

This firmware update relaxes the rules for valid Ethereum typed-data (EIP-712) names so they can contain a colon (:), which some decentralized apps use as a namespace separator. Member names still cannot contain colons. The change is presented as safe because a colon cannot be confused with the punctuation that separates type names, fields, and arrays in EIP-712 encoding.

Security candidateLimit SD erase file sizeby Marko Bencun · 2453f528 · Jul 7, 2026 · 1 fileMessage 69 · AdequateModerate 59Details
Commit message · Marko Bencun

Limit SD erase file size

Reject files larger than SD_MAX_FILE_SIZE before the erase path overwrites them.
The read path already enforced this limit; applying it to erase prevents a
malformed FAT directory entry from causing an excessive overwrite loop.

This mitigates the BitBox impact of CVE-2026-6682 in the stale-backup cleanup
path without changing vendored FatFs code.

69/100 · AdequateMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
explicit security language
AI analysis · Moderate 59/100

This commit fixes a bug in how the BitBox02 hardware wallet wipes files from its SD card. Before erasing a file, the device now checks the file's reported size against a safe maximum. Without this check, a tampered SD card could claim a file is gigantic, causing the device to get stuck in a long overwrite loop. The fix prevents a denial-of-service style attack where a malicious or corrupted SD card could make the device hang or behave unexpectedly during cleanup of old backups. The commit says it mitigates the impact of CVE-2026-6682 without changing the third-party FAT filesystem code.

Security candidateValidate mounted FAT geometryby Marko Bencun · 01c017d6 · Jul 7, 2026 · 1 fileMessage 66 · AdequateHigh 70Details
Commit message · Marko Bencun

Validate mounted FAT geometry

Reject mounted FAT volumes whose FAT area extends past the computed data area.
This catches crafted FAT32 BPB values where the FatFs mount calculation can wrap
`BPB_FATSz32 * NumFATs` and place the data area inside attacker-controlled FAT
sectors.

Addresses CVE-2026-6682 at the BitBox SD integration boundary without changing
vendored FatFs code.

66/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
explicit security languagedefensive validation
AI analysis · High 70/100

This update adds a safety check when the BitBox02 hardware wallet mounts a microSD card. A malicious or deliberately malformed FAT filesystem could trick the device's file-system library into placing user data inside attacker-controlled bookkeeping sectors, potentially leading to code execution or data corruption when the device later reads or writes files. The fix validates that the filesystem's internal layout is sane before using it, and leaves the third-party library code unchanged.

Security candidateUpdate FatFs to R0.16by Marko Bencun · 9f2b493d · Jul 7, 2026 · 79 filesMessage 69 · AdequateLow 27Details
Commit message · Marko Bencun

Update FatFs to R0.16

Update the vendored FatFs copy from R0.14b to R0.16 plus upstream
patch 1.

- Base archive: https://elm-chan.org/fsw/ff/arc/ff16.zip
- https://elm-chan.org/fsw/ff/patch/ff16p1.diff

Keep the existing BitBox configuration choices for LFN, tiny mode, mkfs support,
code page 850, fixed timestamps, and disabled exFAT, labels, and LBA64.

69/100 · AdequateMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
boot or update path
AI analysis · Low 27/100

This commit updates the third-party FatFs file-system library inside the BitBox02 firmware from version R0.14b to R0.16 plus an upstream patch. The change is a routine dependency refresh: it replaces the vendored source files with the newer upstream release while keeping BitBox's existing configuration (long-file-name support, tiny mode, code page 850, fixed timestamps, no exFAT, no labels, no 64-bit LBA). Most of the visible diff is documentation and metadata; the actual C source files (ff.c, ff.h, ffconf.h, diskio.c, etc.) are updated wholesale. The commit message does not claim to fix any security issue, and no independent security advisory or CVE is supplied.

Lower-priorityFix some memory handling issuesby Niklas Dusenlund · 3a7143f4 · Jul 6, 2026 · 3 filesMessage 45 · ThinModerate 59Details
Commit message · Niklas Dusenlund

Fix some memory handling issues

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

This commit fixes two memory-handling bugs in the BitBox02 hardware wallet's Rust LVGL UI bindings. First, line widgets were storing point data in dynamically allocated memory attached to the LVGL object and freeing it when the object was deleted; if the same points were shared or the attachment logic failed, this could lead to crashes or memory corruption. The fix requires callers to pass only statically allocated, never-freed point slices. Second, style-transition property lists were accepted without checking for a required terminator marker; an unterminated list could cause LVGL to read past the end of the array, leading to crashes or undefined behavior. The commit adds validation that panics at construction time if the terminator is missing.

Lower-prioritybb03 ui: navigation icon buttons (Back/Next/Confirm/Cancel)by Jad · facb1e73 · Jul 1, 2026 · 19 filesMessage 73 · AdequateInformational 19Details
Commit message · Jad

bb03 ui: navigation icon buttons (Back/Next/Confirm/Cancel)

- adds navigation buttons for back, next, confirm, and cancel, replacing existing text buttons.
The icons are PNG bitmaps whereas the button borders are vector drawn.

- on press, the frame fills white and the icon color inverts.

- Adds bitbox-lvgl support (LvStyleTransition, ObjExt add_state/add_flag/
child, LvObjFlag),

- icon assets are located in bitbox03/icons/

- adds a demo screen (ui/demo.rs, reachable in the simulator via the set_device_name "__demo_nav__" sentinel)

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

This commit is a user-interface redesign for the BitBox03 hardware wallet: text buttons like 'Yes/No' and 'Back/Next' are replaced with icon buttons. It also adds a hidden demo screen that can only be opened in the simulator by setting the device name to a special test value. There is no direct security vulnerability visible in the code change, but it touches code that handles user confirmation and cancellation, so any bug here could affect whether a user correctly approves or rejects a sensitive action.

AI review queuedpy: add BitBoxSyncby Marko Bencun · 851ed04b · Jul 1, 2026 · 12 filesMessage 28 · OpaqueInformational 15Details
Commit message · Marko Bencun

py: add BitBoxSync

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 Python client feature called BitBoxSync to the BitBox02 Python library. It introduces generated protobuf code, new API methods to request identity keys, sign various sync-related intents, and unwrap an encrypted namespace key, plus a demo menu in the developer test tool send_message.py. There is no indication in the commit that this fixes a security bug; it appears to be a normal feature addition.

Security candidateapi: add BitBoxSyncby Marko Bencun · 54cdb54d · Jul 1, 2026 · 30 filesMessage 59 · ThinLow 34Details
Commit message · Marko Bencun

api: add BitBoxSync

Implements the BitBoxSync firmware API expected by the bitboxsync-client-go raw.Identity interface:

https://github.com/BitBoxSwiss/bitboxsync-client-go/blob/3c0f1462ac0d647285a75c48227eb8d9f567fc67/raw/identity.go#L27-L69

59/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
cryptography-sensitive path
AI analysis · Low 34/100

This commit adds a brand-new firmware feature called BitBoxSync, which lets the BitBox02 hardware wallet participate in a sync service by proving its identity, signing login/admin intents, and decrypting namespace encryption keys. The code introduces new cryptographic operations (Ed25519 signatures, X25519 key exchange, HKDF, ChaCha20-Poly1305) and new user-confirmation prompts. It is a large feature addition, not a documented security fix. There is no direct evidence of a vulnerability in the diff, but any new crypto API surface carries implementation risk and should be reviewed carefully.

Security candidateblupgrade: update stage1 binaries to v1.2.2by Marko Bencun · 5940a800 · Jun 29, 2026 · 6 filesMessage 45 · ThinInformational 0Details
Commit message · Marko Bencun

blupgrade: update stage1 binaries to v1.2.2

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathboot or update path
AI analysis · Informational 0/100

This commit simply swaps in newer pre-built bootloader stage1 binary files (version 1.2.2 replacing 1.2.1) for four BitBox02 hardware variants and updates the corresponding checksum list. The actual code inside the new binary files is not shown in the diff, and no description of why the update was made is provided. There is no visible evidence in the commit that this fixes or introduces a security problem.

Security candidatebootloader/stage1: fix erase handling for partially erased blocksby Marko Bencun · b31206a8 · Jun 28, 2026 · 3 filesMessage 50 · ThinModerate 59Details
Commit message · Marko Bencun

bootloader/stage1: fix erase handling for partially erased blocks

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
update trustboot or update path
AI analysis · Moderate 59/100

This update fixes the BitBox02 bootloader's firmware-erase routine. Previously, when erasing leftover padding after a firmware update, the bootloader started erasing at the exact page where the firmware ended. Because flash memory can only be erased in larger fixed-size blocks, this could leave the final firmware chunk sharing an erase block with padding. That shared block might be erased unintentionally, potentially corrupting the newly written firmware. The fix aligns the erase start to a full erase-block boundary and re-checks whether pages are already erased before acting. The changelog explicitly calls this a fix for 'partially erased flash blocks.'

Security candidateblupgrade: add stage0/stage1 production binariesby Marko Bencun · 8db4b0dc · Jun 25, 2026 · 20 filesMessage 45 · ThinInformational 15Details
Commit message · Marko Bencun

blupgrade: add stage0/stage1 production binaries

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 pathboot or update path
AI analysis · Informational 15/100

This commit adds production bootloader upgrade files for the BitBox02 hardware wallet and updates build scripts to use them. It is a routine asset-management change: replacing placeholder development hashes with real signed production binaries and enabling previously disabled build targets. There is no code change to how the device operates, no reported vulnerability, and no indication of a security incident.

Security candidateblupgrade: keep dev stage1 unsignedby Marko Bencun · 476b90e3 · Jun 25, 2026 · 9 filesMessage 83 · StrongInformational 20Details
Commit message · Marko Bencun

blupgrade: keep dev stage1 unsigned

Regenerate the development stage1 payloads from the unsigned build
outputs so their signature slots stay zeroed.

Keep production payload validation on signature verification while
development payload validation uses the existing unsigned-image path.

This is to make `make bootloader-upgrade-assets-development` work
again after removing the dummy pubkeys from the bootloader_update.py
verification.

83/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Names security-relevant behavior explicitly
Why it was queued
signing boundaryupdate trustdefensive validationcryptography-sensitive pathsigning or wallet pathboot or update path
AI analysis · Informational 20/100

This commit fixes a build script used only for development/testing versions of the BitBox02 bootloader upgrade. It makes the development-stage1 bootloader images unsigned again, while keeping production images fully signature-verified. The change is a build/development tooling fix, not a security patch for shipped devices.

Security candidatesecurity improvementsby Marko Bencun · cbb40634 · Jun 25, 2026 · 21 filesMessage 23 · OpaqueHigh 76Details
Commit message · Marko Bencun

security improvements

23/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Names security-relevant behavior explicitly! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
signing or wallet pathboot or update path
AI analysis · High 76/100

This BitBox02 firmware update is a broad security patch that fixes several independent bugs: it prevents a maliciously oversized USB report from overflowing memory, stops a corrupted Bluetooth pairing database from being read or written with invalid lengths, allows full-size firmware images in the bootloader, hardens how Bitcoin, Cardano, Ethereum, and typed-data (EIP-712) transactions are parsed and shown to the user, and adds a user confirmation before creating backups. The changes are defensive and reduce the chance that an attacker could trick the device into signing something the user did not intend.

Security candidatebootloader: allow full sized imagesby Marko Bencun · f60b93cc · Jun 25, 2026 · 3 filesMessage 60 · AdequateLow 46Details
Commit message · Marko Bencun

bootloader: allow full sized images

The erase call disallowed full sized firmware images.

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

This commit fixes a bootloader bug where the device rejected firmware updates that used the maximum allowed size. The off-by-one check meant legitimate full-sized firmware images could not be installed, potentially blocking updates. The fix changes the limit from 'one less than maximum' to 'maximum'. There is no direct evidence this was exploitable as an attack, but any bug in firmware-update verification deserves attention.

Security candidateAdd bootloader updateby Marko Bencun · 3f1f3172 · Jun 24, 2026 · 79 filesMessage 28 · OpaqueModerate 59Details
Commit message · Marko Bencun

Add bootloader update

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
update trustcryptography-sensitive pathsigning or wallet pathboot or update path
AI analysis · Moderate 59/100

This is a large firmware commit that adds a new two-stage bootloader update mechanism for the BitBox02 hardware wallet. It replaces the old single bootloader with a small, fixed 'stage0' plus a separately signed 'stage1', and ships a special firmware image that can install both stages onto existing devices. The change also updates how firmware signatures are computed so that the product type is included in the hash, which is a security improvement. Because the commit is a major architectural rewrite and includes prebuilt binary blobs whose source is not shown, it carries normal supply-chain and implementation risks, but no specific vulnerability is visible in the diff.

Security candidateAdd flash data backup scriptsby Niklas Dusenlund · 285fa768 · Jun 23, 2026 · 3 filesMessage 73 · AdequateInformational 15Details
Commit message · Niklas Dusenlund

Add flash data backup scripts

Add J-Link helper scripts to back up and restore the BitBox02 flash data
areas: shared data, appdata, and bootdata. The backup records the MCU
serial number but does not include bootloader factory randomness.

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
update trust
AI analysis · Informational 15/100

This commit adds two helper scripts for developers to back up and restore BitBox02 flash memory areas using a Segger J-Link debugger. The scripts require physical hardware access and a debugging probe, and they are not part of the firmware that runs on the device. They do not change any device code or introduce a remote attack path.

Lower-priorityRead chunks via typed pointersby Niklas Dusenlund · e21bd6fe · Jun 22, 2026 · 2 filesMessage 78 · AdequateLow 25Details
Commit message · Niklas Dusenlund

Read chunks via typed pointers

Use typed pointers for read-only memory accessors so firmware builds can read fields directly from flash instead of copying whole chunks first. Keep test builds on the existing fake read hooks.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Low 25/100

This commit changes how the BitBox02 firmware reads sensitive stored data (device name, seed birthdate, encryption keys, BLE identity, etc.). Previously, the firmware copied whole chunks from flash into RAM and then cleared them afterward. Now, for real firmware builds, it reads those fields directly from flash using typed pointers, so the data stays in flash and is not copied into RAM. This is mostly a performance and memory-usage improvement, but it removes the explicit RAM-clearing (util_zero) that used to happen after reading. That means sensitive bytes may remain longer in RAM if they are ever copied out, and any code that later reads from those RAM copies could be a concern. There is no direct vulnerability shown in the diff, but the change weakens one defensive layer (clearing sensitive RAM) and introduces more places where secrets are accessed through raw flash pointers.

Lower-priorityDisable ASLR for unit testsby Niklas Dusenlund · a8b013cc · Jun 22, 2026 · 1 fileMessage 78 · AdequateInformational 15Details
Commit message · Niklas Dusenlund

Disable ASLR for unit tests

Run the build-tree CTest invocation through setarch -R when it is
available. This keeps the existing behavior as a fallback on systems
without setarch.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit changes how the project's automated unit tests are run. It disables Address Space Layout Randomization (ASLR) only during testing, when available, by wrapping the test command with setarch -R. ASLR randomizes where programs are loaded in memory; turning it off for tests is often done to make memory-related test failures reproducible or to support debugging tools. This change affects only the developer/test build process, not the firmware that ships to users.

Security candidatebb03 UI: placeholder BTC signing workflowsby Jad · f7b0b082 · Jun 15, 2026 · 1 fileMessage 40 · ThinInformational 15Details
Commit message · Jad

bb03 UI: placeholder BTC signing workflows

Implement placeholder UI for BTC signing demos
in send_message.py.

40/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body! Contains work-in-progress language
Why it was queued
signing boundary
AI analysis · Informational 15/100

This commit replaces unfinished placeholder code (which would crash with 'todo!()') with simple working user-interface placeholders for Bitcoin signing demonstrations. It adds basic on-screen prompts to confirm a recipient/amount and a total/fee, and makes progress/empty UI elements return real objects instead of crashing. There is no security issue visible in the diff; it is routine UI scaffolding.

Lower-priorityDisable "readability-implicit-bool-conversion"by Niklas Dusenlund · 788d5894 · Jun 8, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Niklas Dusenlund

Disable "readability-implicit-bool-conversion"

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

This commit changes a code-style configuration file to silence one more clang-tidy warning about implicit conversions to booleans. It does not modify any firmware source code, behavior, or security logic. By itself it is not a vulnerability or a security fix.

AI review queuedAdd stm32u5a9j-dk-buildby Niklas Dusenlund · bb998c2d · Jun 8, 2026 · 4 filesMessage 28 · OpaqueInformational 15Details
Commit message · Niklas Dusenlund

Add stm32u5a9j-dk-build

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 Rust build helper crate for the STM32U5A9J-DK development board. It compiles a single C file from STMicroelectronics' HAL library into an object file and links it into firmware builds so a custom board initialization function overrides the weak default. There is no indication of a security vulnerability or fix.

AI review queuedAdd bitbox-boot-utilsby Niklas Dusenlund · 8579b06e · Jun 8, 2026 · 6 filesMessage 28 · OpaqueInformational 15Details
Commit message · Niklas Dusenlund

Add bitbox-boot-utils

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 Rust helper library and a Python script for creating and validating firmware image headers for the BitBox02/BitBox03 bootloader. It is purely an infrastructure/feature addition: it defines data structures, parsing routines, boot argument handling, and image-header tooling. There is no bug fix, no patch of an existing vulnerability, and no indication this change itself introduces a security flaw.

AI review queuedAdd bitbox-debugby Niklas Dusenlund · d92238f8 · Jun 8, 2026 · 106 filesMessage 28 · OpaqueInformational 15Details
Commit message · Niklas Dusenlund

Add bitbox-debug

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! 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 internal debugging library called bitbox-debug and vendors several Rust dependencies (once_cell, portable-atomic, rtt-target). There is no indication in the commit message or diff that this fixes a security vulnerability. It appears to be a feature/infrastructure addition for firmware debugging.

Lower-priorityBootstrap local Cargo configby Niklas Dusenlund · 0e058d7d · Jun 8, 2026 · 12 filesMessage 58 · ThinInformational 14Details
Commit message · Niklas Dusenlund

Bootstrap local Cargo config

Generate .cargo/config.local.toml with bindgen clang args and cc crate CFLAGS for the firmware Rust targets. Include that file from the repository and Rust workspace Cargo configs so normal cargo invocations pick it up, and wire the bootstrap into Makefile setup.

Use exact target-specific env names such as CFLAGS_thumbv7em-none-eabi and BINDGEN_EXTRA_CLANG_ARGS_thumbv7em-none-eabi. CMake passes its full cross-build cc flags through the same target-specific CFLAGS variable, including the ARM sysroot.

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
AI analysis · Informational 14/100

This commit is a build-system improvement for the BitBox02 hardware wallet firmware. It creates a script that automatically generates local Cargo (Rust build tool) configuration files so that Rust code compiles correctly for the ARM microcontroller inside the device. It does not change any wallet logic, cryptography, or user-facing behavior. There is no indication this is a security fix or vulnerability patch.