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 removes the SHA-1 hashing function from the regular Trezor firmware. SHA-1 is an old, weak hash algorithm that is no longer considered secure for sensitive uses. The change deletes the code that exposes SHA-1 to apps running on…
Removal of a deprecated cryptographic primitive (SHA-1) from the firmware API surfaceReduction of attack surface and prevention of future misuse of a collision-vulnerable hashNo direct vulnerability patch or memory-safety bug is present in the diff
This commit changes how a cryptographic library sets up secure connections. Previously, the code automatically calculated the public key from the private key. Now, the caller must provide the public key directly. This is a code-quality ref…
Cryptographic key handling changed: public key is now supplied rather than derivedPotential reduction of key-mismatch risk if caller provides correct public keyNew null-pointer check added for static_public_key
This commit simply reorders the arguments of an internal function called dh() and updates every place that calls it. The actual math and security behavior are unchanged; it is a code cleanup with no security effect.
This commit simply renames two groups of internal status labels (called enums) in the Trezor firmware's cryptographic code. The old names like WAITING_FOR_REQUEST1 were shared between two different parts of the code, so the developer gave …
This commit fixes three places in the Trezor firmware's cryptographic code where a memory-clearing function could be called with a NULL pointer. In practice, passing NULL to memzero is harmless on Trezor's platform (it does nothing), but i…
NULL pointer passed to memory-zeroing helper in cryptographic codeUndefined behavior in C standard library contractDefensive hardening in Noise protocol implementation
This commit is a code cleanup (refactor) for the cryptographic handshake code used in Trezor devices. It changes how the other party's long-term public key is returned to the caller: instead of storing it inside an internal state structure…
Removal of long-term public key storage from internal handshake stateCaller-supplied output buffer for remote static public key reduces internal secret retentionError-path memzero of returned key material on failure
This commit is a build-system refactoring for Trezor firmware. It moves the mapping of command-line build options to Rust/cargo features out of hard-coded Rust logic and into per-project TOML files. It also adds a small change so debug bui…
Build-option mapping now lives in project.toml files, increasing the attack surface for supply-chain/build-configuration tamperingMakefile change automatically enables debug-link for PYOPT=0 debug buildsValidation added to reject storage_insecure_testing_mode in production builds
This commit only updates test data. It corrects the capitalization (checksum) of Ethereum addresses used in automated tests and refreshes the expected screen-shot hashes those tests compare against. There are no changes to the actual Trezo…
This commit changes the Trezor Python library so that, when setting up a Trezor Model One (the original Trezor 1 device), it now performs an entropy check by default if the device runs firmware 1.13.1 or newer. Previously, the library only…
Enables a previously disabled security/validation feature (entropy check) for a specific device modelAdds version-gated behavior to avoid errors on older firmwareDefensive hardening of wallet setup randomness verification
This commit is a routine cleanup that removes the old SCons build system files from the Trezor Core firmware repository. It deletes Makefiles, SConscripts, and related Python helper scripts, but does not change any firmware source code, cr…
This commit updates Trezor's embedded MicroPython interpreter from an older version to 1.28.0. It pulls in several upstream MicroPython bug fixes, including stricter buffer-size checks for converting integers to bytes, a new stack-safety A…
Synchronizes upstream MicroPython fixes that include buffer-size and stack-safety hardeningPrevents Ctrl+C interruption of frozen boot code, reducing denial-of-service/control-flow risk during bootFixes sys.stdout.buffer.write() return value, which could affect code relying on correct I/O semantics
This commit is a simple code cleanup that replaces a common MicroPython string-creation pattern with a new helper function. It does not change what the code does, only how it is written. There is no security issue visible in the change.
This is a large but straightforward internal cleanup: the project switched from using the MicroPython `ubinascii` module's `hexlify`/`unhexlify` functions to the standard Python `bytes.hex()` and `bytes.fromhex()` methods. The change remov…
This commit is a routine code cleanup in the Trezor firmware's embedded MicroPython modules. It replaces an older, two-step object allocation pattern with a newer helper that allocates memory and sets the object type in one step. The chang…
No security-relevant logic changes observedNo input validation changesNo memory safety bug fixes (e.g., no overflow, use-after-free, or uninitialized memory fixes)
This commit is a routine maintenance refactor. MicroPython removed its built-in 'utimeq' module, so Trezor copied the same code into its own firmware tree and renamed it to 'timeq'. There is no security bug being fixed and no new vulnerabi…
This is a code cleanup change in Trezor's firmware that swaps one MicroPython internal helper for another. It replaces calls that create byte or string objects from a vstr buffer with newer, purpose-built helpers. The commit message says t…
Refactor only: helper function renames with equivalent semanticsNew str helper adds UTF-8 validation; bytes helper does not validateNo input validation, length, or error-handling changes observed
This commit is a routine internal cleanup that switches how Trezor's firmware defines built-in MicroPython object types. It replaces older, manually-written type structures with a newer macro provided by the upstream MicroPython project. T…
This commit is a straightforward internal code refactor. It adds a small C wrapper file so that Rust code can call two specific internal MicroPython functions that are declared as static/inline in headers. There is no user-facing change, n…
This commit is a routine build-system update for the Trezor firmware. It changes where the build process looks for the MicroPython cross-compiler binary (mpy-cross) and synchronizes a configuration header with newer MicroPython code. There…
This commit updates the Trezor firmware build system to use a newer MicroPython mechanism for tracking special memory pointers called 'root pointers.' It removes hard-coded lists of these pointers from configuration files and instead colle…
GC root pointer handling changedBuild system now auto-collects root pointers instead of hard-coding themRemoves manual MICROPY_PORT_ROOT_POINTERS lists
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
update trustauthentication path
AI analysis · Informational 19/100
This commit removes a feature that would have sent a 'MCU attestation'—a cryptographic proof signed by the device's microcontroller—during device authentication. The change itself is a simple deletion of the attestation code and its changelog entry. There is no direct evidence in the commit of a security vulnerability; it appears to be a product decision to stop sending this proof, possibly because the feature was not ready or was being reconsidered. It reduces the amount of identity information the device exposes during authentication.
refactor(core): change algorithm for scm_revision obfuscation
[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 · Low 37/100
This commit changes how the Trezor firmware exposes its internal Git commit hash (the 'revision ID'). Previously the full hash was directly readable by software. Now only a shortened version is stored plainly, while the full hash is lightly scrambled (XORed) and only returned through a function that requires a specific key byte. The goal is to make it harder for a malicious fake Trezor to copy the revision ID from an official firmware update and pretend it is running that official firmware. It is a defensive hardening change, not a fix for an active bug or vulnerability in the traditional sense.
Security candidatefix(core): get rid of CONST weirdnessby cepetr · 7b27f4be · May 8, 2026 · 3 filesMessage 57 · ThinInformational 12Details
Commit message · cepetr
fix(core): get rid of CONST weirdness
[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 12/100
This commit is a cleanup of how the word 'const' is used in the Trezor firmware's ed25519 cryptographic code. Previously, the code defined a custom 'CONST' macro that meant 'const' on newer compilers and nothing on older GCC versions. The commit removes that macro and uses plain 'const' everywhere. It also adjusts a Rust build script comment and compiler flag. There is no indication in the commit that this fixes a security vulnerability or changes runtime behavior.
✓ 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 is a straightforward code reorganization: it moves the emulator's profile-handling code from one directory to another and updates the build files and include paths accordingly. There is no change to what the code does, no bug fix, and no security-related change.
✓ 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 straightforward internal code refactor. It renames a build feature flag from 'applet' to 'applets' and replaces the KERNEL preprocessor guard with a new USE_APPLETS guard in the relevant source files. There is no change to actual security logic, no bug fix, and no indication of a vulnerability being addressed.
Security candidatechore: migrate from SDL2 to SDL3by M1nd3r · 9fe8ae02 · May 7, 2026 · 19 filesMessage 57 · ThinInformational 20Details
Commit message · M1nd3r
chore: migrate from SDL2 to SDL3
[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 20/100
This commit updates the Trezor firmware build system and emulator code to use SDL3 instead of the older SDL2 library. It is a routine dependency migration affecting only emulator builds (software simulations of the hardware wallet), not the real device firmware. The changes rename functions and constants to match SDL3's API, adjust build scripts, and add a couple of small safety checks. There is no indication this fixes a known security vulnerability.
✓ 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 40/100
This commit fixes a logic error in the build scripts that decide whether to use development or production signing keys when preparing Trezor firmware images. Before the fix, the condition was accidentally inverted, so production builds may have used development keys and development builds may have used production keys. Using the wrong keys could make firmware signatures invalid or cause devices to reject genuine firmware, but the commit itself does not show an exploitable runtime vulnerability in shipped code.
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Names security-relevant behavior explicitly! No meaningful explanatory body
Why it was queued
update trustmemory safetyboot or update path
AI analysis · Moderate 63/100
This patch fixes several integer-handling bugs in the Trezor bootloader's USB message decoder. The changes prevent small or maliciously crafted message sizes from causing arithmetic overflows or underflows when the device calculates how many USB packets to read. Such flaws could potentially let an attacker confuse the bootloader into reading memory out of bounds or behaving unpredictably during a firmware update.
✓ 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 · High 74/100
This commit fixes an out-of-bounds memory read bug in the Trezor bootloader's firmware header parser. The read_vendor_header function previously trusted size values inside a firmware file without first checking whether those sizes fit within the actual data buffer. A malformed firmware update or a corrupted on-device firmware image could have caused the bootloader to read memory beyond the allowed region. The patch adds size checks so the parser rejects too-small or oversized headers before using their contents.
Security candidatebuild(core): use BOOTLOADER_DEVEL flag for keys selectionby tychovrahe · a7b34c4a · May 5, 2026 · 30 filesMessage 62 · AdequateLow 30Details
Commit message · tychovrahe
build(core): use BOOTLOADER_DEVEL flag for keys selection
[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
update trustboot or update path
AI analysis · Low 30/100
This commit renames and restructures how Trezor firmware selects cryptographic signing keys for bootloaders. Previously, non-production builds automatically used weaker development/QA keys. Now, a dedicated BOOTLOADER_DEVEL flag controls that, while a separate FORCE_BOOTLOADER_UPGRADE flag controls whether the firmware should forcibly update the bootloader. The change also prevents combining PRODUCTION=1 with BOOTLOADER_DEVEL=1. This is primarily a build-hardening and internal workflow cleanup; it does not by itself fix a remotely exploitable bug in shipped devices.
Can be manually tested by invoking: ``` $ core/emu.py -ea -c trezorctl device setup -b shamir # will run multi-share backup $ core/tools/n1w1-emu.py run 127.0.0.1:21325 /tmp/tagN # simulate tag connection and I/O ```
Enabled N4W1-based backup/recovery device tests for SLIP-39 single group scenarios. Other device & click tests will be added in subsequent PRs.
[no changelog]
90/100 · StrongMessage clarity
✓ 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
cryptography-sensitive path
AI analysis · Low 31/100
This commit adds a new backup and recovery method called N4W1 to Trezor firmware. It is a feature addition that lets users back up and restore their wallet seed using a near-field wireless tag instead of typing words on the device screen. The change is mostly about adding new code paths and tests; it does not appear to fix a known security bug, nor does the vendor describe it as a security patch.
Security candidatefix(ethereum): out of bounds checkby Ioan Bizău · 2c9b35be · May 5, 2026 · 1 fileMessage 57 · ThinModerate 63Details
Commit message · Ioan Bizău
fix(ethereum): out of bounds check
[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
memory safetysigning or wallet path
AI analysis · Moderate 63/100
This commit fixes an off-by-one-style bounds check in the Ethereum clear-signing code on Trezor hardware wallets. The old check only verified that the starting position was inside the data, but did not verify that the code was about to read 32 bytes from that position. As a result, a malformed Ethereum transaction or message could trick the device into reading past the end of a buffer while decoding human-readable fields. The fix now checks that offset plus 32 bytes does not exceed the data length before reading.
Security candidatefeat(ethereum): definition request mechanismby Ioan Bizău · 5daa6e48 · May 5, 2026 · 15 filesMessage 57 · ThinLow 39Details
Commit message · Ioan Bizău
feat(ethereum): definition request mechanism
[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
signing or wallet pathboot or update path
AI analysis · Low 39/100
This commit adds a new feature to Trezor Ethereum signing that lets the device ask the connected computer or phone for extra token/contract display information during a transaction. It is a feature addition (not a direct bug fix), so it mainly changes how the wallet and device talk to each other. There is no clear security vulnerability visible in the diff, but any new request/response protocol introduces places where a malicious or buggy host could supply misleading data, and the device must carefully validate what it receives. The commit does not itself describe a security issue or credit a researcher.
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing boundarycryptography-sensitive pathsigning or wallet path
AI analysis · Low 28/100
This commit changes how Trezor displays Ethereum token-approval amounts that exceed a safety threshold. Previously, the code returned 'None' for such large amounts, and the user interface fell back to a generic 'Unlimited amount' warning. Now the formatter explicitly returns a special 'AboveThreshold' marker carrying the text 'Unlimited', and each device UI layout uses that marker to show the same warning and display text. The change is a user-interface refinement, not a fix for a cryptographic bug or a remote exploit. It does, however, make the 'unlimited' signal explicit rather than implicit, which slightly reduces the chance that a future UI change would accidentally treat a huge allowance as an ordinary amount.
Security candidatechore(core): make TextBox more UTF-8 compliantby obrusvit · b964cab3 · May 2, 2026 · 2 filesMessage 57 · ThinInformational 15Details
Commit message · obrusvit
chore(core): make TextBox more UTF-8 compliant
[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 pathauthentication path
AI analysis · Informational 15/100
This commit fixes a UI bug in how the Trezor hardware wallet counts and displays the last character of a passphrase when it contains multi-byte UTF-8 characters (such as emoji or accented letters). Previously, the code measured length in bytes and sliced the string by byte position, which could split a multi-byte character and produce a broken or incorrect last-character display. The change adds proper character-based counting and a safe way to retrieve the last character. It is a correctness/robustness fix rather than a clear security vulnerability, and there is no evidence it was disclosed or exploited as a security issue.
✓ 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 is a routine cleanup change that removes an unused visual border feature from the Trezor firmware's Delizia user interface. It does not change any security-sensitive behavior; it only simplifies the code by deleting a function that always returned zero-width borders and updating two places that called it to no longer use a border wrapper.
- hide already written characters in the passphrase keyboard in Delizia and Bolt - holding a finger in the input field reveals the whole passphrase in a potentially multi-line manner - update fixtures
80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
access controlboot or update pathauthentication path
AI analysis · Low 29/100
This commit changes how Trezor hardware wallets display passphrase entry on screen. Previously, the passphrase characters were shown in plain text as the user typed them. After this change, already-typed characters are hidden (shown as dots or asterisks), with only the most recently typed character briefly visible. The user can press and hold in the input area to reveal the full passphrase for verification. This is a security/usability improvement to reduce shoulder-surfing risk, not a fix for an exploitable vulnerability.
feat(core): passphrase reveal mode until touch end
- this commit changes all touch display passphrase keyboards to allow persisting the reveal mode until the user lifts the finger off the screen anywhere, not just within the extended input shown area
[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
access controlboot or update pathauthentication path
AI analysis · Informational 15/100
This commit changes how Trezor devices reveal a passphrase on screen while typing. Previously, the revealed passphrase would hide again if the user's finger slid outside a specific extended area below the input box. Now, the passphrase stays visible until the user simply lifts their finger anywhere on the screen. This is a user-experience refinement, not a security fix or vulnerability.
✓ 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
boot or update path
AI analysis · Informational 15/100
This commit is a straightforward code cleanup: it takes one large Rust source file for the Trezor hardware wallet's homescreen and splits it into three smaller, logically organized files (header, notification center, and helpers) plus a module entry point. No user-facing behavior, security logic, or data handling changed.
feat(core): use "Initiate connection" bootloader label on T2T1, T3B1, T3T1
Replaces the outdated "INSTALL FIRMWARE" / "INSTALL FW" button label on the bootloader intro screen with one that accurately describes what the button does — initiating the USB/host connection.
T3W1 (Safe 7) already used "Initiate connection"; this aligns all other Core devices with that wording. T3B1 (Safe 3) uses a shortened "Init connection" to fit the 128×64 pixel display.
Closes #6824
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
93/100 · StrongMessage clarity
✓ 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
update trustcryptography-sensitive pathboot or update path
AI analysis · Informational 15/100
This commit only changes the text label on a bootloader button from 'INSTALL FIRMWARE'/'INSTALL FW' to 'INITIATE CONNECTION'/'Init connection' on three Trezor hardware wallet models. It is a user-interface wording improvement with no security or functional code changes.
✓ 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 simply removes an unused Monero hashing helper (the 'Hasher' class and related C functions) from the Trezor firmware codebase. It deletes dead code, tests, and type stubs. There is no indication this fixes or introduces a security vulnerability.
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing or wallet pathboot or update path
AI analysis · Informational 15/100
This commit is a simple renaming cleanup. It changes identifiers like 'EthereumERC7730DisplayFormatInfo' to 'EthereumDisplayFormatInfo' and 'ETHEREUM_ERC7730_DISPLAY_FORMAT' to 'ETHEREUM_DISPLAY_FORMAT' across protobuf definitions, generated code, and tests. There are no functional changes to how data is validated, parsed, or displayed.
✓ 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 boundary
AI analysis · Informational 12/100
This commit only adds and updates automated tests for Trezor's Ethereum 'clear signing' feature (ERC-7730 display formats). It does not change the firmware's security logic, so it is not a security patch. The tests verify that malformed or mismatched definitions are rejected, which is a normal defensive testing activity.
✓ Specific, 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 boundary
AI analysis · Informational 15/100
This commit only adds stronger checks to existing automated tests for Ethereum 'clear signing' on Trezor devices. It does not change any firmware, wallet, or production code, so it cannot introduce a security vulnerability or fix one in shipped software.
Security candidatechore(ethereum): skip clear signing for large databy Ioan Bizău · 747eec4d · Apr 28, 2026 · 1 fileMessage 62 · AdequateLow 33Details
Commit message · Ioan Bizău
chore(ethereum): skip clear signing for large data
[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
signing boundarysigning or wallet path
AI analysis · Low 33/100
This commit changes how Trezor handles Ethereum transactions with large amounts of embedded data. Previously, the device always tried to 'clear sign' (show human-readable details on screen) for every transaction. Now, if the transaction data is larger than an internal storage limit, it skips clear signing and falls back to 'blind signing' (showing a generic warning). The change is described as a workaround because the clear-signing parser cannot fetch additional data chunks, and enabling it would remove the ability to fall back to blind signing. This is a defensive/hardening change rather than a fix for an active vulnerability, but it reduces the chance that a large malicious transaction could confuse the parser or the user.