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.
Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.
This commit is a routine text cleanup for the Trezor hardware wallet's on-screen English messages. It fixes punctuation, removes unnecessary line breaks, and makes small wording tweaks (for example, changing 'PIN will be required' to 'A PI…
This commit adds downgrade protection for a new 'app root packet' system in Trezor firmware. Previously, the code had a TODO note saying downgrade protection needed to be considered. The change makes the device remember the timestamps of p…
Replaces a TODO comment ('!@# TODO: Consider downgrade protection') with concrete timestamp-based anti-downgrade checksAdds per-ring timestamp state to prevent rollback of root-of-trust packetsAdds chain_timestamp field and 90-day drift bound to root packet format
This commit fixes a cryptographic edge case in Trezor's THP (Trezor Host Protocol) handshake. It now rejects Curve25519 public keys that are all zeros or that produce an all-zero shared secret. A zero public key can cause the Diffie-Hellma…
Curve25519 zero/low-order public key rejection added to DHZero shared-secret output rejected after scalar multiplicationHandshake state machine now transitions to Failed on initiation-response error
This commit changes one line in a build configuration file for the Trezor hardware wallet firmware. It adds the 'ward' feature to the existing 'miniscript' feature set. There is no direct evidence in the commit that this is a security fix;…
Single-line Cargo.toml feature flag changeNo code logic modificationNo changelog or security note in commit message
This commit adds a new disabled-by-default feature flag called 'ward' to the Trezor firmware build system. It does not change any production firmware behavior; it only wires up a placeholder MicroPython module and build options so that fut…
New feature flag is disabled by default and gated behind optional Cargo featuresCommit message explicitly states intent to exclude WARD from production firmware buildsNew MicroPython module is a stub with no exported functions beyond __name__
This commit turns on a compiler warning (-Wsign-compare) that catches places where signed and unsigned numbers are compared, and fixes the resulting warnings across the Trezor firmware. Most changes are clean-up casts and loop-index type c…
Compiler warning -Wsign-compare enabled, indicating prior signed/unsigned comparison issuesI/O return-value checks hardened against negative ssize_t values being treated as successPython binding offset/length validation tightened in Monero crypto module
This commit is a simple user-interface cleanup. It removes one duplicate translation label ('Access hidden wallet') and makes the device use a single, consistent label ('Access wallet') when asking the user to confirm opening a passphrase-…
This commit is a simple user-interface cleanup. It merges two translation labels that both meant 'Passphrase wallet' into a single label, and updates the screens that used the old duplicate label. There is no security-relevant behavior cha…
This commit fixes a bug in the Trezor bootloader's firmware-update code. When updating firmware, the first block of data is fetched in two pieces: a small initial 'header prefetch,' then the rest. If a communication error happened and the …
Firmware update reliability bug in bootloaderBlock-0 retry path truncated data before hash verificationHash mismatch caused by buffer offset/size mismatch, not by attacker
This commit is a code cleanup in the Trezor bootloader. It moves the generic, image-type-agnostic parts of firmware upload (chunk receiving, retry logic, flash erasing/writing, timeouts) into a new reusable module called wf_image_upload.c,…
Refactor only: logic moved, not changed in security-relevant waysSame signature/version/model/downgrade checks remain in firmware-specific handlerSame flash erase/write sequence preserved in generic engine
This commit removes an unused Rust Cargo feature flag called 'ui' from the Trezor firmware build configuration. It is a cleanup change: the feature was always enabled in practice, so the code now compiles unconditionally. There is no secur…
This commit changes how users confirm an Ethereum authorization screen on Trezor's 'Caesar' layout. Previously, the user had to hold down a button to approve; now a simple tap is enough. The change only affects the user-interface interacti…
UI confirmation gesture changed from hold-to-confirm to tap-to-confirmOnly affects EIP-7702 authorization flow on Caesar (T3B1) layoutTest fixture hashes updated for all supported languages
This commit is a routine internal cleanup that merges two separate build packages (one for real hardware firmware and one for the desktop emulator) into a single package. It moves source files into subdirectories and updates build scripts …
This commit is a minor build/test maintenance change. It adds a feature flag (USE_AES_GCM) so that AES-GCM tests are only run when the feature is actually enabled in a particular firmware build. There is no security fix or vulnerability be…
This commit only adds or updates copyright and GNU license header comments in Python test and tooling files. It makes no changes to executable code, so it cannot introduce a security vulnerability or fix one.
This commit is a straightforward code cleanup: it moves the on-screen title for multisig XPUB screens from hard-coded English text into the device's translation system. The visible text remains essentially the same, and there is no securit…
This is a cosmetic code cleanup. It moves punctuation and capitalization out of the Python code and into the translation files so translated strings are shown exactly as written. There is no security-relevant change.
This commit simply removes two unused Rust import statements (called `use` statements). It does not change any actual code behavior, logic, or security properties of the Trezor firmware.
This commit fixes a UI formatting bug in the Tron cryptocurrency flow on Trezor hardware wallets. A missing colon was added to account information labels shown on the device screen. The change is cosmetic and does not appear to affect cryp…
UI label formatting fix onlyNo changes to signature verification, key handling, or transaction authorizationNo buffer size, memory allocation, or input validation changes observed
This commit is a straightforward user-interface refactoring. It bundles an account/path label together with its corresponding value into a single tuple, instead of passing them as four separate arguments. There is no security-relevant chan…
Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.
Security candidaterefactor(core/sys): make writing bootargs a privilege, not a conventionby tychovrahe · 69d3435c · Sep 14, 2026 · 7 filesMessage 97 · StrongModerate 60Details
Commit message · tychovrahe
refactor(core/sys): make writing bootargs a privilege, not a convention
The smcall surface exposed a raw bootargs setter, letting unprivileged code name any boot command. It had no user -- firmware goes through the reboot_* calls in bootutils.h, each of which fixes its own -- so remove it rather than filter it. The dispatch's fatal default is then the enforcement.
Make the rule structural too: bootargs_set is declared only under SECURE_MODE, and system_emergency_rescue is compiled only where bootargs can be written. It linked before only because --gc-sections dropped it as unreferenced.
[no changelog]
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
97/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
credential or privilege state
AI analysis · Moderate 60/100
This commit removes a low-level interface that let any software component tell the device what to do on its next reboot. The change makes reboot control a privileged operation only, so unprivileged code can no longer pick arbitrary boot commands. It is a hardening/refactoring change rather than a documented fix for a specific active bug.
docs(crypto): reproduce third-party license texts in crypto/LICENSE (#7529)
* docs(crypto): reproduce third-party license texts in crypto/LICENSE
Several components of crypto are not covered by the MIT license at the top of crypto/LICENSE, and some of them (Gifford's SHA-2, the Monero files, Gladman's AES) require their copyright notice and disclaimer to accompany binary distributions as well as source. Until now that text existed only in the individual file headers, which a binary consumer never receives.
Append to crypto/LICENSE a verbatim reproduction of every third-party license, the files each one covers, the additional copyright holders under the MIT terms, the public domain / CC0 components, and the GPL-licensed files. Point at it from LICENSE.md and state that it must be distributed together with binaries built from crypto.
No code changes; the existing MIT block is unmodified.
* chore: change licence of first-party code from GPL to MIT
(cherry picked from commit e7be2cc8cfffe6906ab7cb96958e8e67d88372f2)
* docs(crypto): add missing third-party attributions to crypto/LICENSE
Add entries for files whose authorship was missing or covered by an over-broad glob: Dusan Klinec's monero sources, aes/aestst.c under Brian Gladman's older non-endorsement licence variant, Andrew Moon's poly1305-donna, and D. J. Bernstein's eSTREAM ECRYPT headers. Narrow the chacha20poly1305/ entry to the files actually written by Will Glozer.
(cherry picked from commit e7a3c82d6d99548f428a45d5d6caf108795463ac)
* chore: fix typos in licences
(cherry picked from commit f23f9b659e3520ddd962c29b3b59e67a3d30a318)
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100
This commit is purely legal and administrative housekeeping. It adds missing third-party copyright notices and license texts to the crypto/LICENSE file, fixes a typo in a few license headers, and changes the stated license of some first-party files from GPL to MIT. No executable code was changed, so it cannot introduce a security vulnerability or fix one.
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
access controlsigning or wallet path
AI analysis · Informational 20/100
This commit fixes a UI wording mix-up on Trezor devices when a user enters a PIN that doesn't match. Previously, the title and description in the 'PIN mismatch' popup were swapped, which could briefly confuse the user about what went wrong. There is no evidence this affects security beyond a minor user-experience issue.
Security candidatefeat(core/caesar): use Marquee in ConfirmHSby obrusvit · 74ec8983 · Sep 13, 2026 · 2 filesMessage 57 · ThinInformational 15Details
Commit message · obrusvit
feat(core/caesar): use Marquee in ConfirmHS
[no changelog]
57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100
This commit is a user-interface tweak for the Trezor hardware wallet's Caesar layout. It replaces a static title label with a scrolling 'Marquee' text effect on the homescreen confirmation screen, so long device labels remain readable. There is no security-relevant change here.
fix(core): remove double _colon strings from show_address_details - removes their explicit use from Rust code - adds them to python processed by with_colon [no changelog]
77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
cryptography-sensitive pathboot or update path
AI analysis · Informational 15/100
This commit is a straightforward user-interface string refactor. It moves the colon that appears after labels like 'Account:' and 'Derivation path:' out of the embedded Rust translation strings and into the Python code that calls the address-details screen. There is no security-relevant change in behavior—only where the colon is appended.
- PIN keyboard prompts might be longer than screen width, especially wipe code prompts
[no changelog]
72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
access controlauthentication path
AI analysis · Informational 15/100
This commit changes the Trezor hardware wallet's PIN entry screen so that long prompt messages scroll horizontally (like a marquee sign) instead of being cut off. It is a user-interface improvement to handle longer text, such as wipe-code prompts. There is no security vulnerability visible in the code change.
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
access controlboot or update pathauthentication path
AI analysis · Informational 19/100
This commit fixes a layout bug in the PIN entry screen on Trezor's Eckhart hardware model. Previously, the area showing how many PIN attempts remain was given a fixed width of 85 pixels, which could be too narrow for some languages and cause the text to be cut off or poorly displayed. The patch now dynamically measures the actual text width and reserves space accordingly, with a small gap between the prompt and attempts text. There is no direct security vulnerability here; it is a UI correctness and localization improvement.
✓ Descriptive subject✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100
This commit is a large internal refactor of the Trezor firmware's third-party application loading system. It replaces the old ELF-based app loader with a new 'app_arena' subsystem that uses a custom binary format, Merkle-tree header verification, and ML-DSA-44 root-of-trust signatures. The change is explicitly marked as a feature ('feat(core): introduce app_arena') with '[no changelog]' and contains no vendor statement that it fixes a security bug. It appears to be a planned architectural redesign, not a security patch.
AI review queuedfeat(solana): confirm space when creating accountsby Jakub Janků · 04ed8330 · Sep 11, 2026 · 4 filesMessage 85 · StrongLow 37Details
Commit message · Jakub Janků
feat(solana): confirm space when creating accounts
We already let the user confirm the space parameter of the Allocate (With Seed) instruction. For consistency, do the same for the Create Account (With Seed) instruction.
85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 37/100
This commit adds an on-screen confirmation step for the 'space' (data size) parameter when creating new Solana accounts on a Trezor device. Previously, this parameter was hidden from the user during Create Account instructions, even though it was already shown for a related 'Allocate' instruction. The change improves consistency and helps users spot transactions that request unexpectedly large storage allocations, which could be a sign of a malicious or misleading transaction.
Security candidatetests(clear_signing): unit tests for .from_proto()by PrisionMike · 2aec9696 · Sep 10, 2026 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · PrisionMike
tests(clear_signing): unit tests for .from_proto()
[no changelog]
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 boundarysigning or wallet path
AI analysis · Informational 15/100
This commit only adds new unit tests for an existing Ethereum clear-signing decoder. It does not change any production firmware code, so it cannot introduce a security vulnerability or fix one directly. The tests document how the decoder currently handles various Ethereum ABI data shapes and which malformed inputs it rejects.
Security candidatefeat(common,core,python,tests): support creating Stellar contracts.by Jun Luo · 95adcc90 · Sep 10, 2026 · 29 filesMessage 100 · StrongInformational 15Details
Commit message · Jun Luo
feat(common,core,python,tests): support creating Stellar contracts.
Support `CREATE_CONTRACT_V2` in `InvokeHostFunctionOp` and `CREATE_CONTRACT_V2_HOST_FN` in Soroban authorization entries.
100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Names security-relevant behavior explicitly
Why it was queued
access controlsigning or wallet pathauthentication path
AI analysis · Informational 15/100
This commit adds support for a new Stellar blockchain feature: creating smart contracts (contract deployment) on Trezor hardware wallets. It extends the messages, layouts, serialization, and tests so users can review and sign Stellar 'create contract' transactions and related authorization entries. There is no indication of a security vulnerability in the change itself; it is a feature addition with explicit user confirmation steps and deliberate exclusions of unsupported variants.
Security candidaterefactor(core/stellar): prepare for contract creation support.by Jun Luo · 8d312f5c · Sep 10, 2026 · 9 filesMessage 90 · StrongInformational 14Details
Commit message · Jun Luo
refactor(core/stellar): prepare for contract creation support.
- Share the HashIDPreimage header (envelope type and network ID) between the Soroban authorization payload and contract address derivation. - Move the CONTRACT_ID_PREIMAGE_FROM_ASSET writer next to the other writers. - Rename `sac_address_from_asset` to `contract_address_from_asset` and move it to `helpers.py`. - Extract `_confirm_args` and `_same_xdr` for reuse.
[no changelog]
90/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
access controlsigning or wallet pathauthentication path
AI analysis · Informational 14/100
This commit is a routine internal code cleanup in the Stellar cryptocurrency support of Trezor firmware. It renames and moves helper functions, extracts reusable pieces, and adds tests. There is no change to user-visible behavior or security boundary, and no security issue is apparent.
AI review queuedfix(core): correct timestamp conversion in `time_gmtime2000()`by Roman Zeyde · d0f50b4d · Sep 9, 2026 · 4 filesMessage 95 · StrongLow 37Details
Commit message · Roman Zeyde
fix(core): correct timestamp conversion in `time_gmtime2000()`
It was working on the emulator (since `mp_int_t` is 64-bit) but failing on HW devices.
Also, improve `test_lock_time_datetime` coverage.
Note: `2106-02-07 06:28:15` = 2**32-1 seconds from epoch.
95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 37/100
This commit fixes a date-handling bug in Trezor hardware wallets. The device converts Bitcoin transaction lock-time timestamps into human-readable dates on its screen. Before the fix, the code used a 32-bit signed integer on real hardware, so any date after the year 2038 (and in practice after about 2068 in this code) would be misread and the wrong date would be shown to the user. The fix switches to a 64-bit timestamp type and adds tests for far-future dates up to the year 2106. The main risk is that a user could be tricked into approving a transaction whose real lock-time date is different from what the device displays.
feat(core): defs MIN_DATA_VERSION based on version
[no changelog]
62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
boot or update path
AI analysis · Informational 19/100
This change updates how Trezor devices decide whether downloaded Ethereum token/chain definition files are too old to trust. Previously there was one global cutoff date; now each definition format version has its own cutoff. This is a maintenance and correctness improvement, not a fix for an active security bug. It reduces the chance that a future format version could accidentally accept stale or incompatible definition data.
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
boot or update path
AI analysis · Low 31/100
This commit updates the Trezor One (legacy firmware) to use version 2 of the external Ethereum token/network definition format. The key change is that legacy firmware now requires only one valid signature instead of two, and explicitly rejects the older version 1 format. This is a feature update to align legacy devices with the newer definition format, not a fix for an active security bug. The change is documented and includes tests verifying that version 1 definitions are rejected on legacy firmware.
Security candidaterefactor(core/sec): make the boot header portable and lift it out of stm32by tychovrahe · edf70f4b · Sep 8, 2026 · 4 filesMessage 100 · StrongInformational 13Details
Commit message · tychovrahe
refactor(core/sec): make the boot header portable and lift it out of stm32
`boot_header.c` is parsing, hashing and signature verification over a caller-supplied buffer. No flash, no MPU, nothing per-MCU -- yet it sat under `image/stm32/`, so it was compiled only for the device and any host build of code that touches a boot header failed to link on the whole layer. That blocks two things: a bootloader emulator (it IS the boot chain, so it cannot emulate anything without this) and host-side test harnesses over the same structures.
Only three lines were actually non-portable, all casting a `uint32_t` flash address to a pointer. So the API takes pointers:
The callers are unaffected in substance: each already had the address of something it was about to read, and on the device a pointer into flash IS that address. `boot_ucb_read` still hands out `uint32_t` fields, because the UCB is a flash structure the boardloader parses -- an address there is data, not a pointer, and it stays that way.
`boot_ucb.c` and `boot_image.c` stay under stm32/: they touch flash.
Also in `boot_header_auth_get`, one early return was `return secfalse` in a function returning a pointer. `secfalse` is 0x00000000U so this was correct by accident; it now returns NULL. No behaviour change.
Pure refactor -- no functional change on any device. Built T3W1 boardloader/bootloader/firmware/prodtest, T3T1 boardloader and bootloader --production (spare unchanged), T2T1 to cover an MCU without the scheme, and the T3W1 firmware / T3T1 bootloader emulators.
[no changelog]
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification✓ Names security-relevant behavior explicitly
Why it was queued
signing boundaryupdate trustdefensive validation
AI analysis · Informational 13/100
This commit is a code cleanup that moves a small piece of boot-header parsing code out of an STM32-specific folder so it can also be used in emulator and test builds. It changes function arguments from raw flash addresses (uint32_t numbers) to generic pointers, and fixes one accidental use of a security-boolean value where a null pointer was intended. The commit message and diff show no intended behavior change on real devices.
build(core): fix NFC feature propagation at emulator
Otherwise, <io/nfc.h> fails to be included - and emulator build breaks.
Also, remove top-level `nfc` feature, and keep it only in `upymod` crate.
[no changelog]
97/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
boot or update path
AI analysis · Informational 15/100
This is a build-system-only change that moves where the NFC feature flag is defined so the emulator compiles correctly. It does not change any runtime behavior, user-facing functionality, or security logic.
Security candidatechore(core): fix a small comment typoby Roman Zeyde · 578e011b · Sep 8, 2026 · 2 filesMessage 57 · ThinInformational 15Details
Commit message · Roman Zeyde
chore(core): fix a small comment typo
[no changelog]
57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
boot or update path
AI analysis · Informational 15/100
This commit fixes a grammar typo in two code comments/docstrings, changing 'Receive a BLE events' to 'Receive a BLE event'. It does not change any executable code, behavior, or security properties.
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
boot or update path
AI analysis · Informational 15/100
This commit only changes how a command-line tool prints information about secure-monitor firmware headers. In non-verbose mode it now shows the device model and version instead of dumping every header field. There is no change to security checks, cryptography, or firmware behavior.
Security candidatefeat(ui): assert property list is never empty.by PrisionMike · fc09afce · Sep 7, 2026 · 6 filesMessage 72 · AdequateInformational 17Details
Commit message · PrisionMike
feat(ui): assert property list is never empty.
Will not affect the production builds. [no changelog]
72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
cryptography-sensitive path
AI analysis · Informational 17/100
This commit adds a runtime check (assert) that ensures a UI function for confirming on-screen properties is never called with an empty list. It also changes the expected input type from a generic iterable to a sequence and converts a couple of generator expressions into lists. The commit message explicitly says it will not affect production builds, because assertions are typically stripped from production firmware. There is no direct evidence this fixes an active security bug; it appears to be a defensive hardening measure for development/debug builds.
Security candidatefix(core/xtask): pad a combined image's erased regions as erasedby tychovrahe · 7d423838 · Sep 7, 2026 · 2 filesMessage 95 · StrongLow 25Details
Commit message · tychovrahe
fix(core/xtask): pad a combined image's erased regions as erased
A combined image pads the gaps between its sections with 0x00. That is wrong for any region the boot chain ERASES on first boot: the bootloader erases the UCB (`boot_ucb_erase`), so the device stops matching the image it was flashed from the moment it boots, and a factory line that verifies by reading flash back would fail.
Pad that region with 0xFF, the erased state, and the erase becomes a no-op -- it checks `flash_area_is_erased` and skips -- leaving the image byte-identical to what is on the device. The rule generalises: a region the boot chain erases has to be combined in its erased state.
The region is located from the model's memory.ld, so a model without one is untouched; both cases are covered by tests.
[no changelog]
95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
update trust
AI analysis · Low 25/100
This commit fixes a build-time tooling bug in Trezor's firmware build helper. When creating a combined firmware image, the tool was filling unused gaps between sections with 0x00 bytes. One specific gap (the UCB region) is erased by the bootloader on first boot. Because erased flash reads as 0xFF, the device would no longer match the original image after its first boot, causing factory verification to fail. The fix makes the tool fill that gap with 0xFF instead, so the image stays identical after the device boots. This is a manufacturing/verification bug, not a security vulnerability that can be exploited by an attacker.
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
secret or key materialcryptography-sensitive path
AI analysis · Low 46/100
This commit turns off an internal performance cache for BIP39, the system that converts a recovery seed phrase into cryptographic keys on Trezor hardware wallets. Disabling a cache is usually a defensive change: it can prevent sensitive seed-derived data from lingering in device memory longer than necessary. However, the commit gives no explanation, changelog entry, or linked security report, so we cannot tell whether this fixes a known vulnerability or is just a precautionary hardening measure.
Security candidatefix(core/bootloader): report the actual error from a failed wipe stepby tychovrahe · 0a0d00aa · Sep 7, 2026 · 1 fileMessage 85 · StrongInformational 20Details
Commit message · tychovrahe
fix(core/bootloader): report the actual error from a failed wipe step
`send_error_conditionally` ignored its `msg` argument and always sent "Could not read BLE status", so a host watching a WipeDevice was told the wrong thing whenever anything but the BLE status read failed -- an inability to issue a BLE command, to erase bonds, or to erase flash.
[no changelog]
85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
update trustboot or update path
AI analysis · Informational 20/100
This is a minor bug fix in the Trezor bootloader. When wiping the device, if a step failed, the bootloader always reported the same generic error message ('Could not read BLE status') even when the actual failure was something else, such as failing to erase stored data or issue a Bluetooth command. The fix makes the bootloader report the correct, specific error message. It does not change whether errors happen or how they are handled; it only corrects the message sent to the host computer.
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathboot or update path
AI analysis · Informational 12/100
This is a small internal code cleanup in the Trezor firmware's Rust UI layer. It moves some MicroPython-specific code into its own submodule and removes an unused import. There is no visible change to user-facing behavior or security-sensitive logic.
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100
This commit is a minor code cleanup in a test file. It reorganizes Python import statements to follow style guidelines by importing Callable and Sequence from collections.abc instead of typing. There is no functional change and no security relevance.