This commit tightens bounds checks in URL encoding/decoding functions used in Blockstream Jade, a hardware wallet. The changes fix potential off-by-one/out-of-bounds memory reads and writes when handling percent-encoded characters. Because…
Bounds-check rewrite in URL decoder to prevent out-of-bounds reads before percent-decodingCast to unsigned char moved into isxdigit() to avoid undefined behavior with signed char inputsDestination bounds checks in URL encoder changed from pointer-subtraction form to remaining-space form, mitigating possible underflow/wrap
This commit fixes error handling in the QR-code backup feature of a hardware wallet. Previously, if generating QR fragments or scanning the verification QR failed, the code could continue with invalid data and wrongly tell the user the bac…
Unchecked return value from qrcode_toFragmentsIcons() could lead to use of uninitialized/invalid icon dataUnchecked return value from jade_camera_scan_qr() could allow a failed scan to be treated as a mismatch rather than an errorVerification flag could be set inconsistently if error paths were not clearly separated
This commit fixes a bug in the Blockstream Jade hardware wallet's PSBT (Partially Signed Bitcoin Transaction) signing code. Previously, when the transaction's genesis block hash did not match the expected network, the code set an error mes…
Missing return in error path allows execution to continue after validation failureCross-network genesis hash mismatch not enforced as a hard failurePSBT signing logic accepts mismatched network parameters
This commit tightens how a Bitcoin hardware wallet (Blockstream Jade) validates the length of a child key path string before copying it into a fixed-size buffer. The change adds an explicit length check and uses the already-computed length…
Fixed-size buffer write (strcpy into signer->path_str)New explicit length assertion before copyDescriptor parsing path, a common attack surface for wallet firmware
This commit hardens error handling in a hardware wallet's key derivation code by wrapping two function calls with an assertion macro. Previously, if these functions failed silently, the device could continue with invalid or uninitialized c…
Unchecked return values from cryptographic key derivation functionsPotential use of invalid or uninitialized cached service keysAddition of fatal assertions on failure paths
This commit fixes a bug in the Blockstream Jade hardware wallet's one-time-password (OTP) registration feature. Previously, if no wallet seed existed, the device would log an error and show a reset message, but then accidentally continue w…
Missing error-path termination (fall-through after error reporting)State validation bypass possible before fixOTP secret persistence after seed-absence error
This commit fixes a bug in the PIN-change flow on Blockstream Jade hardware wallets. Previously, if re-encrypting the wallet keys with a new PIN failed, or if the user abandoned the PIN change, the code did not jump to cleanup as intended.…
Missing error-path control flow in cryptographic key handlingPotential use of stale or partially initialized key material after PIN-change failureCleanup bypass in sensitive authentication code path
This commit fixes a missing 'goto cleanup' after a failed attempt to save encrypted key data during a debug handshake. Without the fix, the code would continue running after reporting an error, potentially leaving sensitive key material in…
Missing error-path termination leading to fall-through after a security-critical failurePotential failure to clean up sensitive key material after flash storage errorAssertion on keychain state could be reached with inconsistent state
This tiny change makes the device firmly check that the screen successfully powers on during startup, rather than silently continuing if something goes wrong. It is a defensive hardening fix, not a clear-cut vulnerability patch. The commit…
Unchecked return value now checked with JADE_ASSERTDefensive hardening in display initialization pathNo mention of vulnerability, exploit, or security issue in commit message
This commit hardens three logging functions so they stop immediately if formatting a log message fails, instead of continuing with a negative or zero length. Previously, a failed format could cause the code to pass an invalid length to net…
Defensive validation added to logging output pathsNegative length values no longer passed to socket/UART send functionsNo explicit security framing in commit message or diff
This commit adds a safety check to ensure the device can read its unique hardware identifier (MAC address) from a special chip memory area (efuse) before continuing startup. Previously, the code read the MAC address but ignored whether it …
Unconditional failure handling added for security-relevant identifier readDevice-unique identity (MAC) now validated before useDefensive hardening of boot-time initialization
This commit fixes two error-handling bugs in Blockstream Jade's multisignature wallet code. In one case, an invalid multisig wallet record was detected but the function kept running instead of returning immediately, which could lead to usi…
Missing return after setting error condition in validation pathUnchecked return value from security-relevant path validationMultisignature wallet data integrity check bypass
A quiet fix may be responsible caution—or it may leave users unaware that their assets were ever at risk. CommitWatch preserves the evidence, adds context, and tracks whether vendors disclose, acknowledge, and learn.