BB
← All projectsBitBox

BitBox02 firmware

Firmware and bootloader for BitBox02 signing devices.

BitcoinHardware walletsNormal
Repository coverage

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

231security candidates161second-pass queue719AI analyses
66commits · 30 days
136commits · 60 days
308commits · 180 days
692commits · 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
68Strong · 80–100
321Adequate · 60–79
302Thin · 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 Bencun450131422357
benma's agent11240106164
Niklas Dusenlund15139130057
cedwies12512063
Tomas Vrba10410071
Cedric Wiese12312049
Jad14210060
Sebastian Sutter222050
thisconnect212072
benma212074
Yasser Aziza111070
Niklas111035
Analysis record

Published AI watches

Last scanned 0 minutes ago

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
Informational 19 AI analysisMessage 91 · Strong
BB BitBoxBitBox02 firmware BitcoinHardware wallets

factorysetup: compress constant root keys

This commit is a hardening and size-optimization change for the BitBox02 factory-setup firmware. It stores the 110 built-in root attestation public keys in compressed (33-byte) form instead of uncompressed (65-byte) form, and marks the tab…

Data table moved from writable RAM to read-only flash (const)Public-key table size reduced from 65 to 33 bytes per keyNew Rust helper normalizes compressed/uncompressed keys before hashing
e2273c1fby benma's agent+407−5552 files
No security note in commit
Informational 18 AI analysisMessage 78 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

factorysetup: reuse SHA-256 for HMAC

This commit swaps one internal cryptography library for another when computing HMAC-SHA256 in the factory-setup code. The goal is to reduce firmware size by reusing an existing SHA-256 implementation, not to fix a security bug. New test ve…

Cryptographic implementation change in HMAC-SHA256 helperUse of `.unwrap()` on `new_from_slice`, which can panic if key length is unsupported; for HMAC-SHA256 the RustCrypto `new_from_slice` accepts any key length, so this is effectively safe but still a panic pathNo removal of existing call sites; normal firmware still uses `bitcoin_hashes` for other callers
a790a7f0by benma's agent+24−55 files
No security note in commit
Informational 21 AI analysisMessage 78 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

factorysetup: use static secp context

This commit changes how the BitBox02 factory-setup program checks digital signatures. It switches from a dynamically created crypto context to a built-in, read-only verification context, which makes the factory-setup firmware about 35 KB s…

Cryptographic context change in verification pathRemoval of dynamic secp256k1 context creation in factory setupExplicit addition of secp256k1_selftest() to compensate for skipped implicit self-test
2756aca4by benma's agent+26−42 files
No security note in commit
Informational 18 AI analysisMessage 73 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

factorysetup: speed up certificate setup

This commit is a performance optimization in the BitBox02 factory setup process. It changes how the device picks which trusted root public key to use when verifying an attestation certificate. Previously, the device tried verifying the sig…

No removal of cryptographic verification: rust_secp256k1_verify is still performed after key selection.No change to accepted inputs: any certificate accepted before is still accepted, and any rejected before is still rejected.Identifier comparison uses MEMEQ over the full 32-byte SHA-256 digest, so collision resistance is standard.
d5617112by benma's agent+10−81 file
No security note in commit
Informational 15 AI analysisMessage 45 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge branch 'nickez/bb03-binaries'

This commit is a large feature merge that adds initial support for a new hardware variant, the BitBox03 (STM32U5-based development kit). It introduces new bootloader and firmware binaries, board support crates, vendored Rust dependencies (…

1a648595by Niklas Dusenlund+17103−5779170 files
No security note in commit
Informational 15 AI analysisMessage 58 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

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

This commit adds a progress bar that appears while the BitBox02 is loading large Ethereum transaction data from a connected computer. It is a user-experience improvement, not a security fix. The code only changes how progress is displayed …

386d86f5by Marko Bencun+139−134 files
No security note in commit
Informational 15 AI analysisMessage 35 · Opaque
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Add testboard openocd config

This commit adds a configuration file for OpenOCD, a debugging tool used during hardware development and testing. It tells the debugger how to connect to an STM32U5 test board using a J-Link adapter. There is no change to firmware code, no…

c5984b41by Niklas Dusenlund+16−01 file
No security note in commit
Informational 19 AI analysisMessage 28 · Opaque
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge branch 'py-proto'

This commit only adds explanatory comments to Python type-stub files describing what happens when an optional anti-klepto host nonce commitment is left out. It does not change any firmware logic, cryptographic code, or default behavior. Th…

Documentation-only change in generated Python stubsMentions anti-klepto / S2C nonce commitment fallback behaviorNo logic, default, or cryptographic implementation change
926a5885by Marko Bencun+28−62 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 queuedpy: make session reset an API setup helperby benma's agent · 50a9e76a · Sep 17, 2026 · 3 filesMessage 78 · AdequateInformational 15Details
Commit message · benma's agent

py: make session reset an API setup helper

Move reset_session out of BitBoxProtocol into the private BitBoxCommonAPI._reset_session helper
alongside get_info. Keep the firmware version gate inside the helper so initialization skips
the request on firmware older than v9.28.0.

Update the session tests and document host reconnect support under Firmware / Unreleased.

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 15/100

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 organizational cleanup and test updates.

AI review queuedMerge commit 'refs/pull/2073/head' of https://github.com/BitBoxSwiss/bitbox02-firmwareby Marko Bencun · 6b04e006 · Sep 16, 2026 · 21 filesMessage 58 · ThinInformational 17Details
Commit message · Marko Bencun

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

58/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
merge-commit duplicate discountsecond-pass: unusually broad change
AI analysis · Informational 17/100

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 handles going back versus cancelling during seed restoration. There is no direct evidence in the commit that this fixes a security vulnerability; it reads as a user-experience and hardware-support change. The code does improve clarity around cancel/back handling and adds confirmation prompts before aborting a restore, which is a sensible defensive design, but it is not presented by the vendor as a security fix.

AI review queuedMerge remote-tracking branch 'agent/benma-agent/show-erc20-contract'by Marko Bencun · 410df562 · Sep 15, 2026 · 3 filesMessage 50 · ThinLow 47Details
Commit message · Marko Bencun

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

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

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, like 'UNI', is used by multiple contracts) or if the token is completely unknown. This helps prevent 'look-alike' token scams where a malicious contract uses a familiar symbol but is actually a worthless or harmful token. The change also blocks payment requests for unknown tokens. It is a defensive hardening patch, not an exploit fix for already-broken code.

AI review queuedMerge branch 'nickez/bb02-utf8-safe'by Niklas Dusenlund · 0bbdf6f0 · Sep 9, 2026 · 25 filesMessage 45 · ThinModerate 53Details
Commit message · Niklas Dusenlund

Merge branch 'nickez/bb02-utf8-safe'

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
merge-commit duplicate discountsecond-pass: unusually broad change
AI analysis · Moderate 53/100

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 boundaries, and prevents malformed multi-byte characters from being cut in half when labels or device names are truncated. The changes reduce the chance that an attacker could crash the device or hide parts of a message by sending carefully crafted strings.

AI review queuedMerge branch 'benma/ub'by Marko Bencun · 8a6fd97b · Sep 9, 2026 · 2 filesMessage 28 · OpaqueLow 41Details
Commit message · Marko Bencun

Merge branch 'benma/ub'

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

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 such initialization. The actual security impact is limited because the buffer is immediately filled by a hash function if it succeeds, and failure paths in this specific factory-setup function appear to abort rather than leak the uninitialized buffer. However, uninitialized stack memory is a well-known source of bugs, so the change is defensive.

AI review queuedMerge remote-tracking branch 'agent/benma-agent/scroll-payment-request-memo-name'by Marko Bencun · be375664 · Sep 5, 2026 · 6 filesMessage 50 · ThinInformational 19Details
Commit message · Marko Bencun

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

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

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 off. It also updates test snapshots and bumps the firmware version to 9.27.2. There is no indication this fixes a security vulnerability; it appears to be a user-interface improvement.

AI review queuedMerge commit 'refs/pull/1976/head' of https://github.com/BitBoxSwiss/bitbox02-firmwareby Marko Bencun · 386d86f5 · Sep 1, 2026 · 4 filesMessage 58 · ThinInformational 15Details
Commit message · Marko Bencun

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

58/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
signing or wallet pathmerge-commit duplicate discountsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit adds a progress bar that appears while the BitBox02 is loading large Ethereum transaction data from a connected computer. It is a user-experience improvement, not a security fix. The code only changes how progress is displayed during normal data streaming and adds tests to verify the progress bar shows the right percentages.

AI review queuedAdd testboard openocd configby Niklas Dusenlund · c5984b41 · Sep 1, 2026 · 1 fileMessage 35 · OpaqueInformational 15Details
Commit message · Niklas Dusenlund

Add testboard openocd config

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 adds a configuration file for OpenOCD, a debugging tool used during hardware development and testing. It tells the debugger how to connect to an STM32U5 test board using a J-Link adapter. There is no change to firmware code, no user-facing feature, and no security-relevant behavior.

AI review queuedMerge branch 'py-proto'by Marko Bencun · 926a5885 · Aug 31, 2026 · 2 filesMessage 28 · OpaqueInformational 19Details
Commit message · Marko Bencun

Merge branch 'py-proto'

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

This commit only adds explanatory comments to Python type-stub files describing what happens when an optional anti-klepto host nonce commitment is left out. It does not change any firmware logic, cryptographic code, or default behavior. The comments document an already-existing fallback mode, making the behavior more transparent rather than introducing a new vulnerability.

AI review queuedpy: regenerate protobuf filesby Marko Bencun · 7b533529 · Aug 31, 2026 · 2 filesMessage 35 · OpaqueInformational 19Details
Commit message · Marko Bencun

py: regenerate protobuf files

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 only updates documentation comments in automatically generated Python type-stub files for the BitBox02's protocol messages. It explains that leaving out an optional 'host nonce commitment' field causes the device to fall back to older, non-anti-klepto signing behavior. No code logic, firmware behavior, or API rules were changed.

AI review queuedMerge remote-tracking branch 'agent/benma-agent/btc-signmsg-m48'by Marko Bencun · bc336995 · Aug 28, 2026 · 4 filesMessage 50 · ThinInformational 18Details
Commit message · Marko Bencun

Merge remote-tracking branch 'agent/benma-agent/btc-signmsg-m48'

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

This commit adds support for signing Bitcoin messages using keys under a new keypath prefix, m/48', alongside the previously allowed m/45'. It is a feature expansion, not a fix for a security flaw. The change is documented in the changelog and version bump, with no indication of a security issue.

AI review queuedMerge remote-tracking branch 'agent/benma-agent/show-eip712-primary-type'by Marko Bencun · 3b1209b3 · Aug 24, 2026 · 2 filesMessage 50 · ThinLow 30Details
Commit message · Marko Bencun

Merge remote-tracking branch 'agent/benma-agent/show-eip712-primary-type'

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

This update adds an extra confirmation screen when signing Ethereum typed messages (EIP-712). Before the user approves a signature, the device now shows the message's primary type, such as 'Authorize' or 'Revoke'. This helps users notice if a website is asking them to sign a different kind of message than they expect, reducing the risk of being tricked into approving a harmful signature.

AI review queuedMerge remote-tracking branch 'agent/benma-agent/warn-eip712-array-truncation'by Marko Bencun · f3294c66 · Aug 24, 2026 · 1 fileMessage 50 · ThinLow 38Details
Commit message · Marko Bencun

Merge remote-tracking branch 'agent/benma-agent/warn-eip712-array-truncation'

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

This change updates how the BitBox02 hardware wallet warns users when displaying very long member names in Ethereum typed-data (EIP-712) array confirmations. It replaces a direct confirmation call with a shared helper that adds a truncation warning screen. The practical effect is to make sure users see a 'Warning' screen before a long field name is shown, reducing the chance that a maliciously crafted field name could hide or spoof important confirmation details.

AI review queuedMerge branch 'nickez/st-drivers'by Niklas Dusenlund · badbc84c · Aug 24, 2026 · 92 filesMessage 45 · ThinInformational 15Details
Commit message · Niklas Dusenlund

Merge branch 'nickez/st-drivers'

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
merge-commit duplicate discountsecond-pass: unusually broad change
AI analysis · Informational 15/100

This commit adds the official STMicroelectronics low-level driver package (CMSIS and HAL) for the STM32U5 microcontroller family to the BitBox02 firmware repository. It is a large vendor code import with no functional firmware changes, no bug fixes, and no security patches visible in the diff.

AI review queuedMerge branch 'pr-2049'by Jad · f0f7cb78 · Aug 24, 2026 · 19 filesMessage 28 · OpaqueLow 39Details
Commit message · Jad

Merge branch 'pr-2049'

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

This commit adds new touchscreen keyboard and PIN keypad screens for the BitBox03 hardware wallet, along with changes to how secret text (passphrases, PINs) is read from the on-screen buffer. The most notable security-relevant change is a fix for how the device copies sensitive text: it now reads the LVGL text buffer directly into a zeroizing string, avoiding an intermediate non-zeroized copy that could leave secret characters in memory. The commit also hardens touch handling so that sliding a finger off a key before releasing does not type the key or confirm an action, and it clears stale key selections to prevent accidental double-typing. Most of the rest is UI layout, fonts, and simulator tooling.

AI review queuedMerge branch 'changelog'by Marko Bencun · eb2831c7 · Aug 24, 2026 · 1 fileMessage 28 · OpaqueInformational 15Details
Commit message · Marko Bencun

Merge branch 'changelog'

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

This commit is a routine merge that adds a new version heading (v9.27.0) to the project's CHANGELOG.md file. It contains no code changes, no bug fixes, and no security-related content.

AI review queuedCHANGELOG: mark v9.27.0by Marko Bencun · 2fba75a4 · Aug 24, 2026 · 1 fileMessage 38 · OpaqueInformational 15Details
Commit message · Marko Bencun

CHANGELOG: mark v9.27.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 is a routine changelog update that labels the upcoming firmware release as version 9.27.0. It does not change any source code, configuration, or security behavior. There is no security-relevant content in the diff.

AI review queuedMerge remote-tracking branch 'agent/benma-agent/btc-signmsg-m45'by Marko Bencun · 3cd5d638 · Aug 24, 2026 · 5 filesMessage 50 · ThinLow 32Details
Commit message · Marko Bencun

Merge remote-tracking branch 'agent/benma-agent/btc-signmsg-m45'

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

This commit adds the ability to sign Bitcoin messages using keys in the m/45' keypath namespace, which is used by some external services like Unchained and Casa. Previously, message signing only worked for standard Bitcoin address keypaths. The change splits address derivation into a validated and an unvalidated variant, and adds a new keypath check for m/45' paths. It also updates the on-screen message to warn users that the key belongs to an external service, so they don't mistake it for a normal wallet address.

AI review queuedMake payment-request memo names scrollableby benma's agent · 82375e14 · Aug 22, 2026 · 6 filesMessage 78 · AdequateInformational 23Details
Commit message · benma's agent

Make payment-request memo names scrollable

Show the memo attribution and recipient on one scrollable line so long
authenticated recipient names remain reviewable.

Bump the firmware version to v9.27.2 and gate the updated test vectors
at that version, preserving historical transcripts. Regenerate the
canonical JSON and document the compatibility rule. Record scrollability
in the test UI and cover long SWAPKIT names.

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

This firmware update changes how long merchant or recipient names are shown when approving Bitcoin payments. Instead of breaking the name across two lines, which could be cut off or hidden, the name now appears on a single line that the user can scroll through. This helps users actually see and verify long names like 'SWAPKIT (...)' during payment approval. The change is a usability and anti-spoofing improvement, not a vulnerability fix in the traditional sense, but it does close a small security gap where truncated or wrapped names might mislead a user.

AI review queuedMerge remote-tracking branch 'agent/benma-agent/shared-btc-test-vectors'by Marko Bencun · 50e1f546 · Aug 18, 2026 · 18 filesMessage 60 · AdequateInformational 15Details
Commit message · Marko Bencun

Merge remote-tracking branch 'agent/benma-agent/shared-btc-test-vectors'

60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
signing or wallet pathmerge-commit duplicate discountsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a large merge that adds a new Rust crate called bitbox-test-vectors. It is purely a testing and quality-assurance change: it creates shared Bitcoin transaction test vectors (sample PSBTs and expected firmware behavior) so that the firmware, the Go client library, and the Rust client library can all use the same test data. There is no change to the actual device firmware logic, no new runtime feature, and no fix for a security bug. It is a test-infrastructure improvement.

AI review queuedbump version to v9.27.0by benma's agent · 68a3a43b · Aug 18, 2026 · 1 fileMessage 38 · OpaqueInformational 15Details
Commit message · benma's agent

bump version to v9.27.0

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

This commit simply updates a version number in a JSON file from v9.26.5 to v9.27.0. There are no code changes, no security fixes, and no functional changes visible in the diff.

AI review queuedMerge remote-tracking branch 'agent/benma-agent/btc-input-relative-fee-warning'by Marko Bencun · 341cc73a · Aug 18, 2026 · 2 filesMessage 50 · ThinLow 32Details
Commit message · Marko Bencun

Merge remote-tracking branch 'agent/benma-agent/btc-input-relative-fee-warning'

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

This commit improves the user warning shown when a Bitcoin transaction has an unusually high fee. Previously, the device calculated the fee as a percentage of the amount being sent. For transactions that send nothing to an outside recipient (for example, sending everything back to yourself or only carrying an OP_RETURN memo), the denominator was zero, so no percentage warning could be shown and the user might not be alerted if the fee consumed most of the funds. The patch now falls back to comparing the fee against the total value of all transaction inputs, and tells the user whether the warning is based on the send amount or on all inputs. It is a defensive hardening change, not a fix for an active exploit.

AI review queuedMerge remote-tracking branch 'agent/benma-agent/require-20-byte-eip712-address'by Marko Bencun · a75ebc10 · Aug 18, 2026 · 1 fileMessage 50 · ThinModerate 59Details
Commit message · Marko Bencun

Merge remote-tracking branch 'agent/benma-agent/require-20-byte-eip712-address'

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

This commit tightens validation for Ethereum addresses used when signing typed messages (EIP-712). Previously, an address of any hex length after the '0x' prefix was accepted and padded to 32 bytes. Now only exactly 20-byte (40 hex character) addresses are allowed. This prevents malformed or truncated addresses from being silently encoded and signed, which could lead to a user approving a signature for an unintended address or contract.

AI review queuedMerge branch 'merge-v9.26.5'by Marko Bencun · 3b2d236a · Aug 18, 2026 · 13 filesMessage 45 · ThinHigh 70Details
Commit message · Marko Bencun

Merge branch 'merge-v9.26.5'

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathmerge-commit duplicate discountsecond-pass: security-sensitive path
AI analysis · High 70/100

This firmware update fixes several security issues in the BitBox02 hardware wallet. The most important change is that when signing Bitcoin transactions, the device now verifies that the previous transaction output's script (the 'pubkey script') matches the keypath the wallet is being asked to sign with. This closes a gap where a malicious or buggy host app could ask the wallet to sign an input while claiming it belongs to a different address/key than it actually does. The update also hardens the U2F/FIDO workflow so that an attacker cannot swap or replay a different request while the user is still confirming one on screen, and it prevents Bluetooth pairing prompts from popping up on top of other wallet tasks. The changelog simply says 'Security improvements', so the vendor has not publicly detailed the exact vulnerabilities.

AI review queuedMerge remote-tracking branch 'agent/benma-agent/full-transaction-amounts'by Marko Bencun · 50ed3901 · Aug 12, 2026 · 14 filesMessage 50 · ThinLow 35Details
Commit message · Marko Bencun

Merge remote-tracking branch 'agent/benma-agent/full-transaction-amounts'

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

This update changes how the BitBox02 hardware wallet displays very large transaction and swap amounts. Previously, long amounts were simply cut off with '...' on the device screen, which could hide important digits. Now the firmware either uses a smaller font to fit the full amount, or shows the full amount on a separate scrollable screen. The change also adds a length limit on externally supplied payment-request amounts to prevent abuse. This is a user-interface improvement that reduces the risk of a user approving a transaction whose displayed amount has been misleadingly truncated.