TZ
← All projectsTrezor

Trezor firmware

Firmware monorepo for Trezor One, Model T, and Safe devices.

BitcoinHardware walletsNormal
Repository coverage

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

932security candidates315second-pass queue2675AI analyses
320commits · 30 days
564commits · 60 days
1361commits · 180 days
2626commits · 365 days
Backfill bands
Aug 5 → Feb 61298 seen115 candidatesComplete
Feb 6 → Jun 6775 seen58 candidatesComplete
Jun 6 → Jul 6217 seen13 candidatesComplete
Jul 6 → Aug 5360 seen54 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.

66/100 average clarity
490Strong · 80–100
1339Adequate · 60–79
869Thin · 40–59
5Opaque · 0–39
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
tychovrahe292104292461
Roman Zeyde587185580272
PrisionMike945994273
Andrew Kozlik782976267
obrusvit21376213164
Jakub Janků22919182
Martin Pastyřík24823173
cepetr19982196059
Ioan Bizău23076230059
M1nd3r21173208071
Lukas Bielesch846784067
Martin Milata18146176063
Analysis record

Published AI watches

Last scanned 46 minutes ago

Low 37 AI analysisMessage 100 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core/fido): don't fail if `_KEEPALIVE_STATUS_PROCESSING` is blocked

This update fixes a bug in the Trezor hardware wallet's FIDO2/WebAuthn support. Previously, when the device was busy and tried to send a 'still processing' keepalive message to the computer, it would crash the whole FIDO operation if the U…

Denial-of-service hardening: prevents a transient USB buffer-full condition from aborting a FIDO authentication/registration workflowException boundary added around low-level USB HID writeChangelog explicitly frames the change as a fix for FIDO interaction failure
e7e15170by Roman Zeyde+12−62 files
No security note in commit
Informational 18 AI analysisMessage 85 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): drop `USBIF.write_blocking()` and simplify FIDO2 keep-alive sending

This commit is a small internal cleanup in the Trezor hardware wallet's FIDO2 (WebAuthn) code. It removes an unused 'blocking write' USB function and replaces a general synchronous send routine with a simpler one that only sends one-byte '…

Removal of unused blocking USB write path reduces attack surfaceNo change to FIDO2 command parsing, signature generation, or credential storage logicNo bounds-checking or input-validation changes observed
f269eccdby Roman Zeyde+8−513 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

chore: remove libtropic's pin to develop branch

This commit removes a single line from the project's Git submodule configuration. It stops pinning the libtropic submodule to the 'develop' branch, meaning the project will now use the submodule's default branch (likely 'main' or 'master')…

8290eeefby M1nd3r+0−11 file
No security note in commit
Low 37 AI analysisMessage 70 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core/embed): clear temporary buffer across Optiga/Tropic calls

This is a hardening change for the random number generator inside Trezor hardware wallets. It makes sure that temporary memory holding secret random values from the Optiga and Tropic security chips is wiped immediately after use, rather th…

Sensitive intermediate buffer not cleared promptlyPotential stale-buffer reuse across RNG source boundariesDefense-in-depth memory sanitization for secure-element entropy
01ebda93by Roman Zeyde+2−21 file
No security note in commit
Informational 15 AI analysisMessage 72 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

test(core/ethereum): EIP-7702 tuple nonce must be non-zero

This commit only changes test data and expected screen fingerprints for Trezor's Ethereum EIP-7702 signing tests. It replaces one test case that used a nonce of 0 with the same scenario using a nonce of 67, because the real-world protocol …

Test-only change with no production code modificationEIP-7702 tuple nonce constraint reflected in test dataExpected UI test hashes regenerated for renamed test vector
76cd2ed4by Roman Zeyde+28−282 files
No security note in commit
Informational 15 AI analysisMessage 72 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

test(core): drop an unused parameter of `make_payment_request()`

This commit only cleans up test code by removing an unused 'session' argument from a helper function used in automated tests. It does not change the actual Trezor firmware or any code that runs on the device, so it has no security impact f…

6dd19fdcby Roman Zeyde+0−188 files
No security note in commit
Informational 15 AI analysisMessage 67 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

docs(core): document rng_fill_buffer_strong_time()

This commit only adds a plain-English comment explaining an existing function that estimates how long a random-number generation call takes. No code behavior changed, and nothing was fixed or added that affects security.

c5687f76by Andrew Kozlik+11−01 file
No security note in commit
Low 44 AI analysisMessage 77 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

chore: guard against insecure PRNG in bare-metal build

This commit adds compile-time guards to prevent an intentionally insecure random-number generator from being accidentally included in firmware that runs directly on Trezor hardware. It does not fix an active bug, but it adds safety rails s…

Compile-time guard around insecure PRNGExplicit block of bare-metal / freestanding targetsExisting production-build guard already present
4f8f4586by Andrew Kozlik+11−01 file
No security note in commit
Informational 15 AI analysisMessage 85 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

build(core): propagate emulator feature from projects

This commit is a build-system cleanup for the Trezor firmware's Rust code. It changes how the 'emulator' feature flag is passed between different software components. The firmware project no longer supports the emulator feature (which make…

5642074cby matejcik+5−44 files
No security note in commit
Informational 15 AI analysisMessage 85 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(build-docker): stop swallowing pub-bin copy errors

This change fixes a build script that was ignoring copy errors. Previously, the script would silently ignore any failure when copying public binary files, which could hide real problems. Now it only skips the copy when the file genuinely d…

Build script silently ignored copy failures before this fixFix removes unconditional `|| true` error suppressionKnown-benign missing files are now explicitly skipped with a file existence check
d829eda8by Andrew Kozlik+4−11 file
No security note in commit
Low 27 AI analysisMessage 93 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): digest EIP-1559/EIP-7702 magic without RLP encoding

This commit is a small internal cleanup in Trezor's Ethereum signing code. It changes how two special 'magic' bytes (the transaction type markers for newer Ethereum transaction formats) are fed into the cryptographic hash. Previously the c…

Refactor of cryptographic hashing path for Ethereum transaction signingRemoval of implicit assumption that RLP encodes small integers as single bytesChange affects EIP-1559 and EIP-7702 transaction type markers
2362bc6fby Roman Zeyde+6−32 files
No security note in commit
Informational 15 AI analysisMessage 98 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

test(core): test RLP self-encoding bytestrings

This commit only adds a new unit test to the Trezor firmware codebase. It verifies that very short Ethereum RLP-encoded byte strings and small positive integers encode to themselves, which is a known property of the RLP specification. No p…

41538733by Roman Zeyde+16−01 file
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

docs: fix links outside book root

This commit only fixes broken or awkward documentation links inside the project's user guide. It replaces relative links that point outside the documentation folder with internal placeholder files or direct GitHub URLs. There is no change …

0d8d4b1bby Martin Milata+14−810 files
No security note in commit
Informational 18 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core): remove sha1 from regular FW

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
16d15774by M1nd3r+0−2006 files
No security note in commit
Low 27 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(crypto): pass static public key to `noise_xxpsk3_*_init()`

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
1b3128a4by Ondřej Vejpustek+20−92 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(crypto): change order of parameters

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.

33a119eeby Ondřej Vejpustek+15−151 file
No security note in commit
Informational 15 AI analysisMessage 47 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(crypto): prefix enums

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 …

f1c74046by Ondřej Vejpustek+26−222 files
No security note in commit
Low 37 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(crypto): prevent calling `memzero(NULL, ...)`

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
0394e934by Ondřej Vejpustek+11−51 file
No security note in commit
Informational 18 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(crypto): return remote static key from `noise_xxpsk3_*_handle_*()`

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
3ead1aa6by Ondřej Vejpustek+79−423 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(xtask): rename ProjectProfile to ProjectConfig

This commit is a simple rename from 'ProjectProfile' to 'ProjectConfig' in two Rust source files. It only changes variable names, struct names, and error messages. There is no change to program logic, security behavior, or how data is hand…

581b37bcby cepetr+18−182 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.

Lower-prioritydocs(core): add `ThpContext` docstringby Roman Zeyde · 05b3e47b · Sep 1, 2025 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · Roman Zeyde

docs(core): add `ThpContext` docstring

[no changelog]

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only adds a plain-language comment (docstring) explaining what the ThpContext class does. No code behavior was changed, so it cannot introduce or fix a security issue on its own.

Lower-prioritychore(core): rename `BleInterface` to `BLEIF`by Roman Zeyde · 9fd0d21d · Sep 1, 2025 · 5 filesMessage 80 · StrongInformational 15Details
Commit message · Roman Zeyde

chore(core): rename `BleInterface` to `BLEIF`

Following `USBIF` introduction in 71d6052652, to make logs more consistent:
```
1.258 trezor.wire DEBUG Finished THP session: (<USBIF>, <BLEIF>)
```

[no changelog]

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This commit is a simple rename of a Bluetooth interface class from 'BleInterface' to 'BLEIF' to match the naming style of 'USBIF'. It only changes names in code comments, type stubs, and internal identifiers. No behavior changes, no security fixes, and no security risks are present.

Security candidatefix(core): wait 500ms before rebooting to bootloaderby Roman Zeyde · 5732d75d · Sep 1, 2025 · 1 fileMessage 93 · StrongLow 42Details
Commit message · Roman Zeyde

fix(core): wait 500ms before rebooting to bootloader

In general, Trezor should not wait for too long for a THP ACK after
sending the `Success` response (since the last ACK may be lost, similar
to [Two generals' agreement and TCP handshake](https://stackoverflow.com/q/36352236)).

[no changelog]

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 trustmemory safetyboot or update path
AI analysis · Low 42/100

This change adjusts how a Trezor hardware wallet hands off from its main app to its bootloader during a firmware upgrade. Previously, the device would wait until the host computer acknowledged the 'I am rebooting' message before rebooting. Now it waits at most 500 milliseconds and reboots anyway if the acknowledgment doesn't arrive in time. The goal is to avoid getting stuck if that final acknowledgment packet is lost in transit, similar to how a phone call can hang waiting for a goodbye that never comes. The patch is a partial fix for a reliability issue in the device-host communication protocol.

Lower-priorityfix(core): correct BLE interface syshandleby Roman Zeyde · c855dbfb · Aug 29, 2025 · 1 fileMessage 57 · ThinLow 28Details
Commit message · Roman Zeyde

fix(core): correct BLE interface syshandle

[no changelog]

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Low 28/100

This commit fixes a hard-coded Bluetooth Low Energy (BLE) interface identifier in the Trezor hardware wallet firmware. The old code used a fixed number (8) with a comment saying it should be replaced by the proper system handle. The fix now uses the correct generated constant. Using the wrong identifier could cause the BLE communication interface to be misidentified, which might lead to communication errors or, in a worst-case security scenario, allow an attacker to confuse the device about which channel data is arriving on. The change is small and defensive, but the commit message gives no details about any actual security issue.

Lower-prioritytest(core): reimplement some THP transport-related testsby Roman Zeyde · 32488b8b · Aug 29, 2025 · 2 filesMessage 72 · AdequateInformational 15Details
Commit message · Roman Zeyde

test(core): reimplement some THP transport-related tests

[no changelog]

72/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only adds new automated tests for the Trezor hardware wallet's THP (Trezor Host Protocol) transport layer. It checks that the device correctly rejects old protocol v1 packets and unallocated channel messages. No production firmware code is changed, so this commit does not introduce or fix a security vulnerability by itself.

Lower-priorityfeat(core): allow preempting stale THP channels on all interfacesby Roman Zeyde · 50b57d6c · Aug 29, 2025 · 8 filesMessage 100 · StrongLow 34Details
Commit message · Roman Zeyde

feat(core): allow preempting stale THP channels on all interfaces

Instead of running 2 separate THP session handling tasks
(on USB & BLE interfaces), this PR uses a single task, which
will handle both - in order to allow preempting the event loop
in case there is an unresponsive channel.

`ThpContext` is split into interface-specific class (`InterfaceContext`)
and a "global" THP receiver (`ThpContext`).

Also, removing `core/tests/test_trezor.wire.thp.py` - to be reimplemented in a following PR.

[no changelog]

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
AI analysis · Low 34/100

This commit rewrites how the Trezor firmware handles the new Trezor Host Protocol (THP) across USB and Bluetooth. Instead of running one independent session handler for each interface, it merges them into a single task that can switch attention between interfaces. The main goal is to let the device abandon ('preempt') a stuck or unresponsive THP channel so that another interface can still make progress. The change is described as a feature/refactor, not as a security fix, and one THP test file is removed to be rewritten later.

Security candidatefeat(core/prodtest): Check for device S/N in device certificates.by Andrew Kozlik · 57d462d8 · Aug 29, 2025 · 7 filesMessage 62 · AdequateLow 26Details
Commit message · Andrew Kozlik

feat(core/prodtest): Check for device S/N in device certificates.

[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
cryptography-sensitive path
AI analysis · Low 26/100

This commit adds a production-line safety check in Trezor's internal 'prodtest' firmware. Before writing a device-unique X.509 certificate to the device, the firmware now verifies that the certificate's subject serial number matches the device's own serial number stored in OTP. It also centralizes serial-number reading into a helper function. This is a hardening/validation improvement rather than a fix for an active user-facing vulnerability.

AI review queuedfeat(core/prodtest): Check MCU device certificate chain.by Andrew Kozlik · bb3eb7cc · Aug 29, 2025 · 1 fileMessage 62 · AdequateLow 32Details
Commit message · Andrew Kozlik

feat(core/prodtest): Check MCU device certificate chain.

[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
second-pass: broader security terminology
AI analysis · Low 32/100

This commit adds a verification step in the Trezor hardware wallet's factory production-test tool before writing a device certificate to secure storage. It now checks that the supplied certificate chain is cryptographically valid and matches the device's own MCU authentication key, preventing a malformed or mismatched certificate from being permanently written during manufacturing.

Lower-prioritychore(core): don't return BLE address type to MicroPythonby Roman Zeyde · 66c39e21 · Aug 29, 2025 · 2 filesMessage 62 · AdequateInformational 18Details
Commit message · Roman Zeyde

chore(core): don't return BLE address type to MicroPython

[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
AI analysis · Informational 18/100

This commit removes extra Bluetooth address-type information from two Python-facing functions in the Trezor firmware. Previously, these functions returned both a 6-byte Bluetooth address and an integer indicating whether the address was public or random. Now they return only the 6-byte address. The change is described as a routine cleanup ('chore') with no changelog entry. There is no direct evidence in the commit that this fixes a security vulnerability; it appears to be an API simplification.

Lower-priorityfeat(core): use MAC addresses in BLE menuby Roman Zeyde · 5ce59ac3 · Aug 29, 2025 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · Roman Zeyde

feat(core): use MAC addresses in BLE menu

[no changelog]

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 15/100

This commit updates the Bluetooth device menu on Trezor hardware wallets to display real paired-device MAC addresses instead of a hardcoded placeholder name ('Trezor Suite'). It is a UI feature change with no apparent security relevance.

Security candidatefix(eckhart): allow connection menu to overflowby Ioan Bizău · ba06170d · Aug 29, 2025 · 2 filesMessage 62 · AdequateInformational 17Details
Commit message · Ioan Bizău

fix(eckhart): allow connection menu to overflow

[no changelog]

62/100 · AdequateMessage clarity
✓ 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
memory safetyboot or update path
AI analysis · Informational 17/100

This commit is a UI layout fix for the Trezor hardware wallet's 'Eckhart' design. It renames and restructures how menu buttons handle long text labels so that certain items (like the device name) can overflow onto a single scrolling line instead of being forced into two lines. There is no indication this change fixes a security vulnerability; it appears to be a visual/UX improvement.

Security candidatefix(eckhart): allow device name to overflowby Ioan Bizău · 1cda8e65 · Aug 29, 2025 · 2 filesMessage 62 · AdequateInformational 18Details
Commit message · Ioan Bizău

fix(eckhart): allow device name to overflow

[no changelog]

62/100 · AdequateMessage clarity
✓ 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
memory safetyboot or update path
AI analysis · Informational 18/100

This commit changes how the Trezor hardware wallet displays a long device name in its settings menu. Previously, if the device name was too long to fit on screen, the firmware would trigger a fatal error in debug builds. The fix allows the name to overflow visually instead of crashing. There is no indication this is a security vulnerability; it is a UI robustness fix.

Lower-priorityfix(code): fix usb vcp emulationby cepetr · d4e43c54 · Aug 29, 2025 · 1 fileMessage 57 · ThinLow 27Details
Commit message · cepetr

fix(code): fix usb vcp emulation

[no changelog]

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Low 27/100

This commit fixes a bug in the Unix emulator for Trezor's USB virtual serial port (VCP). Previously, after reading part of a message, the emulator would erase the entire buffer and reset the length to zero, even if unread data remained. Now, for VCP interfaces, it correctly keeps the unread portion of the message for the next read. This is a correctness fix in emulator code, not the real device firmware, and there is no direct evidence it is security-relevant or exploitable.

Lower-priorityfix(prodtest_emu): fix command list structureby cepetr · f898e927 · Aug 29, 2025 · 1 fileMessage 57 · ThinLow 29Details
Commit message · cepetr

fix(prodtest_emu): fix command list structure

[no changelog]

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Low 29/100

This commit fixes a data structure bug in the production-test emulator for Trezor hardware wallets. The code previously stored a list of pointers to command definitions, but used the wrong size when growing the list and then dereferenced it incorrectly. The fix stores the command definitions directly in the list and uses the correct size. This is a straightforward bug fix in an internal testing tool; there is no direct evidence it is an exploitable security vulnerability.

Lower-priorityfeat(core): Move SECRET_LOCK_SLOT_OFFSET to end of sector.by Andrew Kozlik · 023bfb23 · Aug 29, 2025 · 1 fileMessage 62 · AdequateInformational 21Details
Commit message · Andrew Kozlik

feat(core): Move SECRET_LOCK_SLOT_OFFSET to end of sector.

[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
AI analysis · Informational 21/100

This commit moves a small 16-byte 'lock slot' region from the middle of a storage sector to the very end of that sector in the T3W1 hardware model's secret memory layout. The change is a single offset value. It is likely a defensive hardening measure to prevent the lock slot from being accidentally overwritten by other data placed earlier in the same sector, but the commit message gives no explicit security rationale.

Lower-priorityfeat(core/prodtest): Implement tropic-keyfido-read.by Andrew Kozlik · f01a75cf · Aug 28, 2025 · 3 filesMessage 62 · AdequateInformational 21Details
Commit message · Andrew Kozlik

feat(core/prodtest): Implement tropic-keyfido-read.

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 21/100

This commit adds a new factory-testing command, tropic-keyfido-read, to the Trezor device's production-test firmware. The command lets an authorized tester read out the FIDO attestation public key stored on the Tropic secure chip. It is a read-only diagnostic feature and does not, by itself, expose private keys or change device state. The main security consideration is that it adds another surface in the already-privileged prodtest environment, but it appears consistent with existing read commands and uses the same masking/unmasking pattern.

Security candidatefeat(core): introduce DBG_CONSOLE build argumentby cepetr · ca929574 · Aug 28, 2025 · 7 filesMessage 57 · ThinInformational 20Details
Commit message · cepetr

feat(core): introduce DBG_CONSOLE build argument

[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 adds a new build-time option called DBG_CONSOLE that lets developers choose how debug messages are output during firmware builds. It is a build-system change only—no actual device code is modified. By default it is empty/off, and in some non-production debug builds it automatically falls back to using the existing USB virtual COM port (VCP) for debug output. There is no direct security vulnerability in this change, but it makes debug-console support a configurable feature across bootloader, firmware, kernel, and other components.

Security candidaterefactor(core): relocate systemview to sys/dbgby cepetr · f72e8b0c · Aug 28, 2025 · 25 filesMessage 57 · ThinInformational 15Details
Commit message · cepetr

refactor(core): relocate systemview to sys/dbg

[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 is a straightforward code reorganization: it moves the Segger SystemView debugging subsystem from one directory to another inside the Trezor firmware source tree. It does not change any security-sensitive behavior, fix a bug, or alter how the device protects secrets. The feature remains disabled by default and is only useful when a developer attaches a debugger.

Security candidaterefactor(core): introduce debugging consoleby cepetr · d99b3899 · Aug 28, 2025 · 17 filesMessage 57 · ThinLow 27Details
Commit message · cepetr

refactor(core): introduce debugging console

[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 · Low 27/100

This commit refactors how debug output is handled in Trezor firmware. It replaces direct USB virtual-serial and SWO debug output with a new 'debugging console' abstraction, adds optional read support, and exposes it to less-privileged application code through system calls. The change is described by the vendor as a refactor with no changelog entry. It does not by itself create a known exploit, but it widens the attack surface by making a debug channel readable and writable from user-space firmware, which could matter if the feature is enabled in production or combined with other bugs.

Security candidaterefactor(core): simplify usb driver apiby cepetr · 71d60526 · Aug 28, 2025 · 73 filesMessage 57 · ThinLow 34Details
Commit message · cepetr

refactor(core): simplify usb driver api

[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 · Low 34/100

This is a large internal refactoring of the Trezor firmware's USB driver layer. It replaces direct USB class-specific read/write APIs (for HID, VCP, and WebUSB) with a unified 'system handle' API, centralizes USB interface setup in a new configuration module, and adjusts memory layout for one model. The commit is tagged as a refactor with no changelog and makes no direct claim of fixing a security bug. While the change touches security-relevant code paths (USB communication between the device and host), the diff itself shows a restructuring rather than a clear vulnerability fix or introduction.

Lower-priorityfix(core/ble): end pairing mode when a bonded device connectsby tychovrahe · 148a05ca · Aug 28, 2025 · 5 filesMessage 62 · AdequateLow 46Details
Commit message · tychovrahe

fix(core/ble): end pairing mode when a bonded device connects

[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
AI analysis · Low 46/100

This commit fixes a Bluetooth pairing behavior in Trezor hardware wallets. Previously, if the device was left in 'pairing mode' (which advertises to and accepts new devices), a connection from an already-bonded/trusted device could keep it stuck in pairing mode instead of exiting it. The fix detects bonded connections and ends pairing mode when one connects. Staying in pairing mode longer than intended could let a nearby attacker pair with or interact with the device while the user thinks it is only reconnecting to a known device.

Lower-priorityfeat(core): expose `ble_get_bond_list()` to MicroPythonby Roman Zeyde · 15b5f9f7 · Aug 28, 2025 · 5 filesMessage 62 · AdequateInformational 19Details
Commit message · Roman Zeyde

feat(core): expose `ble_get_bond_list()` to MicroPython

[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
AI analysis · Informational 19/100

This commit adds a new read-only function that lets the device's MicroPython code ask the Bluetooth chip for the list of currently paired/bonded devices. It only exposes information that was already stored inside the device; it does not change pairings, bypass authentication, or alter any security behavior. By itself, this is a feature addition with very low security risk.

Lower-priorityrefactor(core): move `bt_le_addr_t` zeroing into a helper methodby Roman Zeyde · d8ca2155 · Aug 28, 2025 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · Roman Zeyde

refactor(core): move `bt_le_addr_t` zeroing into a helper method

[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
AI analysis · Informational 15/100

This is a minor code cleanup in the Trezor firmware's Bluetooth module. A developer moved a small chunk of repeated code—creating an empty Bluetooth address—into a reusable helper method. The behavior of the program is unchanged; it is purely a refactoring for readability and maintainability.

Security candidatechore(core): update T3W1 embedded binariesby tychovrahe · 097921eb · Aug 27, 2025 · 4 filesMessage 57 · ThinInformational 3Details
Commit message · tychovrahe

chore(core): update T3W1 embedded binaries

[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 3/100

This commit swaps in new pre-built binary files for the T3W1 hardware model's bootloader and Bluetooth firmware, plus updates the matching hash table. The actual code inside those binaries is not shown, so we cannot tell from this diff alone whether the change fixes a bug, adds a feature, or is purely routine. There is no mention of security in the commit message.

Lower-priorityfix(nordic): remove 2M PHY udpate requestby tychovrahe · 94f0327c · Aug 27, 2025 · 1 fileMessage 57 · ThinInformational 22Details
Commit message · tychovrahe

fix(nordic): remove 2M PHY udpate request

[no changelog]

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 22/100

This commit disables a request that tells nearby Bluetooth Low Energy devices to use a faster 2 Mbps radio mode ('2M PHY') right after a connection is established. The change is presented as a fix for Nordic hardware, but the commit message gives no security explanation. It may be a stability or compatibility workaround rather than a security patch.