Amber nodes are monitored by CommitWatch. Gray nodes are sampled from authenticated GitHub public commit search and may not represent complete contribution history.
This update fixes a bug in how the BitBox02 hardware wallet reads backup files from an SD card. A tampered backup file could claim to contain a seed longer than the 32-byte limit, which previously caused the device to panic (crash) when li…
Out-of-bounds/panic condition in backup parsingMissing input validation on decoded protobuf fieldSD-card backup file could be attacker-controlled
This commit fixes a user-interface safety issue in the BitBox02 hardware wallet's Bitcoin multi-signature policy registration. Previously, a very long policy key could be approved by the user even though the device could not display the fu…
Input validation added to enforce UI display limitPrevents registration of keys that cannot be fully displayedBoundary test added at MAX_CONFIRM_BODY_SIZE and MAX_CONFIRM_BODY_SIZE+1
This commit fixes a UI cleanup bug in the BitBox02 hardware wallet's U2F (Universal 2nd Factor) feature. Previously, a 'Refresh webpage' screen could be destroyed without clearing the pointer that tracked it, potentially leaving a dangling…
dangling-pointer mitigationuse-after-free preventionfirmware UI state cleanup
This commit fixes how a small on-screen reminder (the 'nudge screen') for U2F is created, tracked, and cleaned up. Before the fix, the code could lose track of the reminder screen or mishandle its removal, which might cause display glitche…
Use-after-free / dangling-pointer risk: global _nudge_label pointer could outlive the component it referencesUI state inconsistency: previous callback set _nudge_label = NULL on screen pop, but component cleanup may occur later or not at allMemory management fix: custom cleanup wrapper now synchronizes global pointer with component lifetime
This commit fixes a bug in the U2F confirmation workflow where the firmware could read a result from memory that had already been cleared, potentially giving an incorrect success/failure answer. The fix simply reads the result before wipin…
use-after-clear / stale reference in task stateincorrect result lifetime orderingU2F confirmation workflow
This commit fixes a class of low-level memory-safety bugs where Rust code was given buffers containing uninitialized bytes. Rust's rules require every byte of a slice to be initialized, even if the function will overwrite them. Passing uni…
Undefined behavior at C/Rust FFI due to uninitialized buffers being treated as Rust slicesPotential optimizer-dependent behavior from violating Rust slice initialization rulesHardening of cryptographic output paths (SHA-256, HMAC-SHA256, HMAC-SHA512)
This commit fixes a bug in the BitBox02 factory setup tool that receives debug messages over SEGGER RTT. Previously, if a message said it contained more bytes than were actually received, the code would copy whatever leftover data happened…
Copy of uninitialized stack data into command buffer (information disclosure / undefined behavior)Missing length validation against actual bytes receivedFactory-only code path (factorysetup), not normal user firmware operation
This commit fixes a minor but real security hygiene issue in the BitBox02 Plus hardware wallet. Before the patch, a 32-byte buffer meant to hold freshly generated random bytes for Bluetooth Low Energy (BLE) pairing security was not initial…
Uninitialized cryptographic buffer in security-critical reset routineBLE identity key (IRK) and identity address derivation contextDefense-in-depth initialization of random material
This commit adds a hard limit on how deeply nested Ethereum typed-message (EIP-712) structures can be when the BitBox02 hardware wallet signs them. Without the limit, an attacker could craft a message type that refers to itself over and ov…
Adds explicit recursion-depth cap to attacker-controlled input parsingPre-validates schema roots before host callbacks or user confirmationProtects against stack exhaustion / denial-of-service from deeply nested EIP-712 types
This commit adds a safety limit to how deeply nested a Bitcoin policy (a set of spending rules) can be before the BitBox02 hardware wallet will reject it. Without such a limit, an attacker could craft an unusually deep policy that causes t…
Adds explicit depth bound to prevent recursive stack exhaustionApplies to both WSH and Taproot (TR) policy parsing pathsIncludes boundary and regression-style tests for deep policies
This commit is a minor code cleanup in a Python helper script. It moves existing bootloader connection logic into a small nested helper function to satisfy a style checker (pylint's limit on the number of return statements). No behavior ch…
This commit is a routine release bookkeeping change. It updates the version number from v9.27.0 to v9.26.5 and reorganizes the changelog so that two bug fixes are listed under the new v9.26.5 release section instead of 'Unreleased'. The ac…
This commit turns off a feature called BitBoxSync by default. Unless a developer explicitly enables it during build, any request to use BitBoxSync will now receive a standard 'disabled' error. The change is framed as temporary while API ch…
Feature-gates an API that was previously reachable by defaultReturns Error::Disabled for requests to the gated APICommit message describes the change as temporary pending API changes
This commit replaces an unbounded task queue inside the BitBox02 firmware's Rust executor with a fixed 16-slot ring buffer. It also adds a hard limit of 16 active tasks and protects queue access with critical sections so interrupt-driven c…
Replaced unbounded queue with fixed-capacity ring buffer to prevent memory exhaustionRemoved allocation from scheduling/wake path, including interrupt contextAdded critical-section synchronization between wakers and main-loop executor
This commit replaces a custom-built notification helper (a 'waker') inside the BitBox02 firmware's Rust code with a built-in, memory-safe no-op version. The old helper used heap memory and reference counting (Arc), which could be freed by …
Eliminates heap-allocated Arc in waker constructionRemoves custom RawWakerVTable with unsafe clone/wake/drop operationsPrevents ISR callbacks from freeing Arc while heap allocator is active
This commit fixes a concurrency bug in the BitBox02 hardware wallet's USB handling. When a U2F (two-factor authentication) workflow is still running on the device's screen, a new hardware wallet request could previously start and reset or …
Concurrency/lifetime bug between HWW and U2F USB endpointsUse-after-free or invalidation risk for live U2F UI objectsSession reset/cancellation path could corrupt shared UI state
This commit fixes a visual glitch on the BitBox02 hardware wallet screen. During some asynchronous security operations, the screen briefly showed the 'waiting' screen between two user-interface steps, causing an annoying flash. The change …
UI-only change; no crypto, memory-safety, or access-control modificationsNew function `is_processing_request()` exposes runtime state but does not change trust boundariesScreen hold is bypassed when a screensaver or explicit component is present, preserving existing behavior
This commit adds a warning screen to the BitBox02 hardware wallet whenever a long message or value is about to be shown in a truncated form. Previously, the device could silently cut off the end of very long transaction details, message da…
UI truncation warning added before oversized confirmation bodiesCentralized body-size limit to keep Rust and C UI limits in syncReplaced duplicated warning logic with shared confirm_value helper