TZ
← All projectsTrezor

Trezor firmware

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

BitcoinHardware walletsNormal
Repository coverage

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

923security candidates311second-pass queue2662AI analyses
323commits · 30 days
552commits · 60 days
1337commits · 180 days
2644commits · 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
482Strong · 80–100
1323Adequate · 60–79
863Thin · 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 Zeyde579182576272
PrisionMike945994273
Andrew Kozlik712470265
obrusvit21376213164
Jakub Janků22919182
Martin Pastyřík24823173
cepetr19682196059
Ioan Bizău23076230059
M1nd3r20772207071
Lukas Bielesch846784067
Martin Milata17446174063
Analysis record

Published AI watches

Last scanned 40 minutes ago

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 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
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 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
Informational 15 AI analysisMessage 47 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(xtask): introduce ResolvedBuildArgs

This commit is a straightforward internal code refactor in Trezor's build tooling. It introduces a new ResolvedBuildArgs structure that centralizes default values for command-line build options before they are used. There is no change to u…

c24d1be8by cepetr+99−295 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(xtask): make build args tristate

This commit is a straightforward internal refactor of the Trezor firmware build tool's command-line argument handling. It changes many on/off flags from plain booleans to optional booleans so they can explicitly be set to true, false, or l…

271e249aby cepetr+57−561 file
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(xtask): introduce build options

This commit is a straightforward internal code reorganization in Trezor's build tooling. It moves build-option definitions from one Rust source file to a new module and adds the ability to load those options from a configuration file. Ther…

75085e2aby cepetr+275−2007 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(xtask): introduce build presets

This commit is a developer tooling change for the Trezor firmware build system. It introduces 'build presets'—named configuration bundles stored in TOML files—so developers can select common build settings with a single command-line flag i…

eefe8f7fby cepetr+397−419 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(xtask): upgrade manifest.yaml for tf-tools 0.3.0

This commit is a routine update to a build-system manifest file used by Trezor's internal tooling. It reorganizes and re-labels feature flags (for example, moving options between 'Features', 'Debugging', and 'Signing' groups and simplifyin…

57b28b89by cepetr+86−1351 file
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(core): add tf-tools 0.3.1+ configuration file

This commit adds a single configuration file for a Trezor developer tool (a VS Code extension). It only points the tool to existing folders in the repository and contains no executable code, no secrets, and no changes to firmware behavior.…

e554f618by cepetr+8−01 file
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(xtask): rename ResolvedBuild to ResolvedBuildFeatures

This commit is a simple internal code cleanup: it renames a Rust data structure called ResolvedBuild to ResolvedBuildFeatures and updates the places that use it. There are no functional changes, no security fixes, and no changes to how the…

aaa2780bby cepetr+5−52 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core): fix up clippy warnings in storage.rs

This is a tiny code cleanup commit that replaces two calls to `ptr::null()` with Rust's `unwrap_or_default()` to silence automated Clippy lint warnings. It does not change what value is produced (still a null pointer when no salt is provid…

62354461by cepetr+2−21 file
No security note in commit
Informational 15 AI analysisMessage 47 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(xtask): simplify dependencies

This commit is a straightforward internal code cleanup in Trezor's build tooling. It moves a data structure and two helper methods from one Rust source file to another and updates callers accordingly. There is no change to user-facing beha…

6268349fby cepetr+9−193 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.

Security candidatefix(core): invalidate THP credential authentication key on `Forget all`by Roman Zeyde · 7e094e35 · Sep 25, 2025 · 1 fileMessage 67 · AdequateModerate 58Details
Commit message · Roman Zeyde

fix(core): invalidate THP credential authentication key on `Forget all`

[no changelog]

67/100 · AdequateMessage clarity
✓ 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
access controldefensive validationcredential or privilege state
AI analysis · Moderate 58/100

This commit fixes a security bug in the Trezor hardware wallet's Bluetooth handling. When a user chose 'Forget all' Bluetooth pairings, the device was not clearing a special key used for a feature called THP (Trezor Host Protocol) credential authentication. As a result, after reconnecting, the device might trust the other side without asking the user to confirm again. The fix adds a call to invalidate that key whenever all Bluetooth pairings are erased.

Lower-priorityfix(core): don't raise `FirmwareError("button request ack pending")` on THP debug buildsby Roman Zeyde · d009962d · Sep 24, 2025 · 1 fileMessage 89 · StrongLow 35Details
Commit message · Roman Zeyde

fix(core): don't raise `FirmwareError("button request ack pending")` on THP debug builds

Otherwise, it may cause THP channel to desync due to double write.

[no changelog]

89/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Explains rationale or failure mode
AI analysis · Low 35/100

This commit changes how a Trezor hardware wallet handles an internal error condition during user interactions. In debug builds using the new THP (Trezor Host Protocol) communication channel, the device no longer crashes with a 'FirmwareError' when a button-acknowledgment state is still pending. Instead, it logs the issue and continues. The old behavior could cause the THP channel to become desynchronized because the error path might write to the channel twice. The fix prevents a possible communication desync but deliberately suppresses a previously fatal internal-consistency check.

Lower-priorityfix(core): make sure to signal `ButtonRequest` handler to exitby Roman Zeyde · 10d0dbb5 · Sep 24, 2025 · 1 fileMessage 89 · StrongLow 44Details
Commit message · Roman Zeyde

fix(core): make sure to signal `ButtonRequest` handler to exit

`button_request_box` value should be replaced to `None`,
otherwise `button_request_task` will not exit.

[no changelog]

89/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Explains rationale or failure mode
AI analysis · Low 44/100

This Trezor firmware fix ensures a background task that handles on-device button prompts is properly shut down when a screen layout finishes. Previously, the signal meant to stop that task might not be delivered, leaving the task running. The patch uses a 'replace' flag to guarantee the stop signal is placed in the queue. A stuck button-request task could cause the device and host software to get out of sync, potentially leading to confusing UI states or unexpected behavior during wallet operations.

Lower-prioritychore(tests): update fixturesby Ioan Bizău · 6c389ac5 · Sep 24, 2025 · 3 filesMessage 57 · ThinInformational 15Details
Commit message · Ioan Bizău

chore(tests): update fixtures

[no changelog]

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only updates automated test files. It renames a test helper class from InputFlowNewCodeCancel to InputFlowNewWipeCodeCancel and adds expected screen-image hashes for a wipe-code cancellation test across many languages and device models. No firmware source code is changed, so this cannot affect real device security.

Lower-priorityfeat(tests): wipe code setup cancelby Ioan Bizău · 40a1da77 · Sep 24, 2025 · 2 filesMessage 67 · AdequateInformational 15Details
Commit message · Ioan Bizău

feat(tests): wipe code setup cancel

[no changelog]

67/100 · AdequateMessage clarity
✓ 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 a new automated test that checks whether a user can cancel the setup of a wipe code on a Trezor device. It does not change any firmware code, user-facing behavior, or security logic. There is no security issue here.

Security candidaterefactor(core): remove useless change_code paramsby Ioan Bizău · 0b2124a1 · Sep 24, 2025 · 15 filesMessage 57 · ThinInformational 20Details
Commit message · Ioan Bizău

refactor(core): remove useless change_code params

[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 pathboot or update pathauthentication path
AI analysis · Informational 20/100

This commit is a code cleanup: it removes unused title, description, and information parameters from the PIN/wipe-code setup confirmation flow and lets each device layout pick the correct text strings internally based on whether the user is setting a PIN or a wipe code. There is no obvious security bug introduced; it is a refactoring change with a [no changelog] tag.

Security candidatefix(core): temporary fix for RSOD triggered by rng_fill_buffer_strongby cepetr · 2563de4d · Sep 24, 2025 · 1 fileMessage 42 · ThinLow 44Details
Commit message · cepetr

fix(core): temporary fix for RSOD triggered by rng_fill_buffer_strong

[no changelog]

42/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body! Contains work-in-progress language
Why it was queued
entropy or randomnessseed or entropy path
AI analysis · Low 44/100

This commit is a temporary hotfix that disables the Tropic secure-element randomness source in non-production builds to stop a Red Screen of Death (RSOD) crash triggered by the function rng_fill_buffer_strong. The change wraps the Tropic random-buffer mixing step in a PRODUCTION preprocessor guard, so it only runs in production firmware. In non-production/debug builds, the function will fall back to whatever other entropy sources remain (likely the STM32 hardware RNG plus optional optiga mixing). The commit message explicitly calls this a temporary fix and says to delete it later, so it is a workaround rather than a root-cause fix. There is no direct evidence in the commit that this is exploitable, but any change to cryptographic randomness generation in a hardware wallet is a security-sensitive signal.

Lower-prioritychore(core): remove unused THP `Channel` methodby Roman Zeyde · ac1aaba2 · Sep 24, 2025 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · Roman Zeyde

chore(core): remove unused THP `Channel` method

[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 simply deletes an unused helper method named write_handshake_message that forwarded its work to another method. There is no functional change, no bug fix, and no security relevance visible in the code change.

Lower-prioritychore(core): avoid THP encryption if sending is not allowedby Roman Zeyde · 1b80685b · Sep 24, 2025 · 1 fileMessage 62 · AdequateLow 44Details
Commit message · Roman Zeyde

chore(core): avoid THP encryption if sending is not allowed

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

This commit adds a safety check in the Trezor hardware wallet's code that handles a newer USB protocol (THP). Before encrypting and sending a message, it now asserts that the protocol state allows sending. The change is defensive and small, but the commit message implies there was a path where encryption could happen when sending was not allowed. Without more context, it is unclear whether this closes a real security bug or is just hardening.

Lower-priorityfix(core): wait for `ButtonRequest` task to avoid THP desyncby Roman Zeyde · 9fca1667 · Sep 24, 2025 · 1 fileMessage 97 · StrongLow 42Details
Commit message · Roman Zeyde

fix(core): wait for `ButtonRequest` task to avoid THP desync

Make sure ButtonRequest is ACKed, before closing ButtonRequest handler task.
Otherwise, THP channel may be desynced (due to two consecutive writes).

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

This commit fixes a timing bug in the Trezor hardware wallet's user-interface code. Previously, the device could close its 'button request' task before the host computer had acknowledged the request, which could cause the communication channel (THP) to become confused by two messages sent too close together. The fix makes the device wait for the acknowledgement before finishing. There is no evidence in the commit or supplied references that this was a security vulnerability exploitable by an attacker, and the vendor did not label it as such.

Lower-priorityci(core): reduce click test timeout to 40mby Roman Zeyde · 60c20c4d · Sep 24, 2025 · 1 fileMessage 67 · AdequateInformational 15Details
Commit message · Roman Zeyde

ci(core): reduce click test timeout to 40m

[no changelog]

67/100 · AdequateMessage clarity
✓ 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
documentation-only discount
AI analysis · Informational 15/100

This commit only changes how long a specific automated test job is allowed to run in GitHub Actions, shortening the timeout from 90 minutes to 40 minutes. It does not modify any firmware code, cryptography, user interface, or device behavior. There is no security relevance.

Lower-prioritychore(core): rename `ButtonRequest` handling taskby Roman Zeyde · 463c3af4 · Sep 24, 2025 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · Roman Zeyde

chore(core): rename `ButtonRequest` handling task

Since it's no longer USB-specific.

[no changelog]

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
AI analysis · Informational 15/100

This is a routine code cleanup: a function is renamed from _handle_usb_iface to _handle_button_requests because it now handles button request messages, not just USB interface messages. A local variable is introduced for clarity. There is no security change.

Security candidatefix(prodtest): enable MCU TRNG in prodtestby cepetr · 7b44f137 · Sep 24, 2025 · 1 fileMessage 57 · ThinModerate 57Details
Commit message · cepetr

fix(prodtest): enable MCU TRNG in prodtest

[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
entropy or randomness
AI analysis · Moderate 57/100

This commit removes a flag called USE_INSECURE_PRNG from the production-test firmware build. That flag previously told the device to use a weak or insecure random number generator during factory testing. Removing it means the production-test firmware will now use the microcontroller's true hardware random number generator (TRNG) instead. Using a weak random source in a test environment could, in theory, affect security if any test keys, identifiers, or calibration data generated there were later reused or leaked, but this change is in a specialized factory-only firmware image, not the main wallet firmware users run.

Lower-priorityrefactor(core): define Tropic factory keys in a single placeby cepetr · a0deb2f6 · Sep 24, 2025 · 3 filesMessage 62 · AdequateInformational 20Details
Commit message · cepetr

refactor(core): define Tropic factory keys in a single place

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

This change is a code cleanup, not a security fix. It moves three copies of the same factory private key into one shared function so the code is easier to maintain. The actual keys and how they are used do not change, and the commit message explicitly calls it a refactor with no changelog entry.

Lower-priorityfeat(core): allow unprovisioned tropic run in non-production fwby cepetr · 000236fd · Sep 24, 2025 · 1 fileMessage 62 · AdequateLow 31Details
Commit message · cepetr

feat(core): allow unprovisioned tropic run in non-production fw

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

This commit adds a development-only code path for Trezor hardware wallets that use the Tropic secure chip. In non-production firmware builds, if the device lacks the normal Trezor private key, it falls back to a publicly visible factory private key and a factory pairing key slot. This lets developers test devices that have not yet been provisioned with unique secrets. The change is wrapped in `#if !PRODUCTION` guards, so it should not compile into retail firmware, but it does embed a hardcoded private key in the source tree.

Security candidatefeat(core): use tropic chip entropy in RNGby cepetr · 60966233 · Sep 24, 2025 · 32 filesMessage 62 · AdequateLow 34Details
Commit message · cepetr

feat(core): use tropic chip entropy in RNG

[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
entropy or randomnesscryptography-sensitive pathseed or entropy pathboot or update path
AI analysis · Low 34/100

This commit refactors how Trezor firmware generates random numbers. It adds a new 'strong' randomness path that mixes the device's hardware RNG with entropy from external secure chips (Optiga and/or Tropic), and routes all randomness through a common internal API. It is a feature/cleanup change, not a disclosed security fix, but it touches critical cryptography code and changes how secure chips are used.

Security candidaterefactor(core): originate random number always from sec/rngby cepetr · 6f789233 · Sep 24, 2025 · 25 filesMessage 67 · AdequateLow 30Details
Commit message · cepetr

refactor(core): originate random number always from sec/rng

[no changelog]

67/100 · AdequateMessage clarity
✓ 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
entropy or randomnesscryptography-sensitive pathseed or entropy pathboot or update path
AI analysis · Low 30/100

This commit is a code cleanup that makes all random-number generation in the Trezor firmware core go through one dedicated secure path (sec/rng). It also moves the old insecure test-only random generator into a separate file so it is only used in emulators and tests, not in real hardware. The change reduces the risk that a real device accidentally uses a weak random source, but the commit itself does not claim to fix a specific active vulnerability.

Security candidatefix(core): libtropic overwrite bug workaroundby cepetr · e4882843 · Sep 24, 2025 · 1 fileMessage 57 · ThinModerate 55Details
Commit message · cepetr

fix(core): libtropic overwrite bug workaround

[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
seed or entropy path
AI analysis · Moderate 55/100

This commit adds a small workaround in the Trezor hardware wallet's random number generator code. The change allocates a slightly larger temporary buffer and only uses the inner portion, leaving unused 'bumper' bytes at the end. The commit message calls this a 'libtropic overwrite bug workaround,' suggesting an external library (libtropic) may write past the requested amount of random data. The patch does not fix the underlying library bug; it only pads the local buffer so any overflow lands in harmless scratch space rather than corrupting adjacent memory. Because this affects the cryptographic random number generator used for keys and secrets, a real overwrite could have security implications, but the diff itself does not show an actual vulnerability in Trezor code or prove the bug is exploitable.

Security candidaterefactor(crypto): get rid of random_xor() functionby cepetr · 4bfcb7ef · Sep 24, 2025 · 3 filesMessage 62 · AdequateInformational 12Details
Commit message · cepetr

refactor(crypto): get rid of random_xor() function

[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 · Informational 12/100

This commit removes a helper function called random_xor() and replaces its use in the hardware wallet's PIN secret generation with a single, stronger random-number call. There is no direct evidence in the commit that this fixes an active security vulnerability; it reads as a code cleanup that simplifies how random bytes are produced before they are stored on the secure Optiga chip.

Security candidatechore(core): update T3W1 embedded binariesby tychovrahe · bb3d3c1e · Sep 24, 2025 · 3 filesMessage 57 · ThinInformational 0Details
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 0/100

This commit swaps in two new pre-built binary files for the T3W1 hardware model (a QA bootloader and a Bluetooth development firmware blob) and updates the corresponding SHA-256 hashes in a header file. The change is labeled as a routine chore with no changelog entry. There is no description of why the binaries changed, no source diff, and no security context provided, so it is impossible to tell from this commit alone whether the update fixes a bug, adds a feature, or changes security behavior.

Security candidatefeat(core/bootloader): use different wait message on BLE during fw installationby tychovrahe · fb39b0ca · Sep 24, 2025 · 13 filesMessage 62 · AdequateInformational 15Details
Commit message · tychovrahe

feat(core/bootloader): use different wait message on BLE during fw installation

[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 trustcryptography-sensitive pathboot or update path
AI analysis · Informational 15/100

This commit only changes the on-screen message shown during firmware installation. If the update is happening over Bluetooth (BLE), the device now tells the user to keep the Trezor close to the host device; if it is happening over USB, it continues to tell the user not to disconnect the cable. There is no change to security logic, cryptography, or data handling.

Lower-priorityfix(nordic/ble): fix connection interval settingby tychovrahe · 2b85fd47 · Sep 24, 2025 · 1 fileMessage 57 · ThinLow 34Details
Commit message · tychovrahe

fix(nordic/ble): fix connection interval setting

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

This commit fixes how the Trezor hardware wallet's Bluetooth Low Energy (BLE) connection settings are changed. It adds a mutex (a kind of traffic light) around code that updates BLE connection parameters, and moves two update calls so they happen only after the connection is safely recorded. Without the mutex, two pieces of code could try to change the connection settings at the same time, which on this Nordic BLE stack can cause the update request to fail or behave unpredictably. The commit message does not call this a security fix, but race conditions in connection management can in principle be abused to disrupt or confuse the BLE link.

Lower-priorityfix(nordic/ble): adjust connection intervals for better reaction timesby tychovrahe · 96de450d · Sep 24, 2025 · 2 filesMessage 62 · AdequateInformational 13Details
Commit message · tychovrahe

fix(nordic/ble): adjust connection intervals for better reaction times

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

This commit tweaks Bluetooth Low Energy timing settings in Trezor's Nordic firmware so the device communicates more frequently with a paired phone or computer. The stated goal is faster reaction times, not a security fix. There is no direct evidence in the commit that this resolves an exploitable vulnerability.

Lower-priorityfeat(core): poke IdleTimer on THP BLE msgsby obrusvit · a6af99db · Sep 24, 2025 · 1 fileMessage 72 · AdequateLow 32Details
Commit message · obrusvit

feat(core): poke IdleTimer on THP BLE msgs

- prevent long running workflows on bluetooth from auto-locking the
device

[no changelog]

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
AI analysis · Low 32/100

This commit changes the Trezor hardware wallet firmware so that when it receives messages over Bluetooth, it resets the auto-lock timer. This prevents the device from locking itself during long user interactions that happen wirelessly. It is a usability fix, not a vulnerability fix, and does not appear to introduce a security weakness.

Security candidaterefactor(core/eckhart): fuse passphrase and label keyboards to oneby Lukas Bielesch · 3bb9aa25 · Sep 24, 2025 · 11 filesMessage 85 · StrongInformational 15Details
Commit message · Lukas Bielesch

refactor(core/eckhart): fuse passphrase and label keyboards to one

- create one full-screen component `StringKeyboard`
- input component is now generic over the `StringInput` trait
- two implemented input types: `PassphraseInput` and `LabelInput`
[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 is a code cleanup that merges two very similar on-screen keyboards in the Trezor firmware into a single shared component. It does not add new features, change security behavior, or fix a bug. The passphrase keyboard and the label keyboard now share one generic 'StringKeyboard' implementation, with separate input logic for passphrases and labels. Test helpers were updated to recognize the new component name.