TZ
← All projectsTrezor

Trezor firmware

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

BitcoinHardware walletsNormal
Repository coverage

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

1125security candidates372second-pass queue2925AI analyses
291commits · 30 days
701commits · 60 days
1641commits · 180 days
2705commits · 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.

67/100 average clarity
635Strong · 80–100
1551Adequate · 60–79
1036Thin · 40–59
7Opaque · 0–39
1security candidate with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
tychovrahe343134322564
Roman Zeyde675214620372
obrusvit25395235364
PrisionMike10866106272
Andrew Kozlik833481268
Petr Susil202299
Jakub Janků591838180
Martin Pastyřík26823173
cepetr264106222059
M1nd3r24689227071
Ioan Bizău23076230059
Lukas Bielesch856784067
Analysis record

Published AI watches

Last scanned 57 minutes ago

Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core): improvements to English copy

This commit is a routine text cleanup for the Trezor hardware wallet's on-screen English messages. It fixes punctuation, removes unnecessary line breaks, and makes small wording tweaks (for example, changing 'PIN will be required' to 'A PI…

1dbc2c3cby Michal Kazda+22−422 files
No security note in commit
Moderate 59 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(core): app root packet downgrade protection

This commit adds downgrade protection for a new 'app root packet' system in Trezor firmware. Previously, the code had a TODO note saying downgrade protection needed to be considered. The change makes the device remember the timestamps of p…

Replaces a TODO comment ('!@# TODO: Consider downgrade protection') with concrete timestamp-based anti-downgrade checksAdds per-ring timestamp state to prevent rollback of root-of-trust packetsAdds chain_timestamp field and 90-day drift bound to root packet format
4a9cf168by cepetr+335−3112 files
No security note in commit
Moderate 67 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core/rust): discard low-order keys in THP handshake

This commit fixes a cryptographic edge case in Trezor's THP (Trezor Host Protocol) handshake. It now rejects Curve25519 public keys that are all zeros or that produce an all-zero shared secret. A zero public key can cause the Diffie-Hellma…

Curve25519 zero/low-order public key rejection added to DHZero shared-secret output rejected after scalar multiplicationHandshake state machine now transitions to Failed on initiation-response error
429a283dby M1nd3r+45−74 files
No security note in commit
Informational 11 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(core): enable `ward` with `miniscript`

This commit changes one line in a build configuration file for the Trezor hardware wallet firmware. It adds the 'ward' feature to the existing 'miniscript' feature set. There is no direct evidence in the commit that this is a security fix;…

Single-line Cargo.toml feature flag changeNo code logic modificationNo changelog or security note in commit message
d434a636by Jakub Janků+1−11 file
No security note in commit
Informational 15 AI analysisMessage 80 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(core): add `ward` feature flag

This commit adds a new disabled-by-default feature flag called 'ward' to the Trezor firmware build system. It does not change any production firmware behavior; it only wires up a placeholder MicroPython module and build options so that fut…

New feature flag is disabled by default and gated behind optional Cargo featuresCommit message explicitly states intent to exclude WARD from production firmware buildsNew MicroPython module is a stub with no exported functions beyond __name__
7b58e75aby Jakub Janků+55−018 files
No security note in commit
Low 27 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(core): enable -Wsign-compare

This commit turns on a compiler warning (-Wsign-compare) that catches places where signed and unsigned numbers are compared, and fixes the resulting warnings across the Trezor firmware. Most changes are clean-up casts and loop-index type c…

Compiler warning -Wsign-compare enabled, indicating prior signed/unsigned comparison issuesI/O return-value checks hardened against negative ssize_t values being treated as successPython binding offset/length validation tightened in Monero crypto module
1cc940a4by cepetr+162−15247 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): merge passphrase__access_hidden_wallet into passphrase__access_wallet

This commit is a simple user-interface cleanup. It removes one duplicate translation label ('Access hidden wallet') and makes the device use a single, consistent label ('Access wallet') when asking the user to confirm opening a passphrase-…

65402aecby Michal Kazda+2−103 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): merge passphrase__hidden_wallet into passphrase__wallet

This commit is a simple user-interface cleanup. It merges two translation labels that both meant 'Passphrase wallet' into a single label, and updates the screens that used the old duplicate label. There is no security-relevant behavior cha…

7ce6887fby Michal Kazda+5−184 files
No security note in commit
Low 45 AI analysisMessage 85 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core/bootloader): keep the full block length for block-0 retries

This commit fixes a bug in the Trezor bootloader's firmware-update code. When updating firmware, the first block of data is fetched in two pieces: a small initial 'header prefetch,' then the rest. If a communication error happened and the …

Firmware update reliability bug in bootloaderBlock-0 retry path truncated data before hash verificationHash mismatch caused by buffer offset/size mismatch, not by attacker
dc937ba2by tychovrahe+81−711 file
No security note in commit
Informational 12 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core/bootloader): separate image upload and image checks

This commit is a code cleanup in the Trezor bootloader. It moves the generic, image-type-agnostic parts of firmware upload (chunk receiving, retry logic, flash erasing/writing, timeouts) into a new reusable module called wf_image_upload.c,…

Refactor only: logic moved, not changed in security-relevant waysSame signature/version/model/downgrade checks remain in firmware-specific handlerSame flash erase/write sequence preserved in generic engine
caab7d9eby tychovrahe+772−4834 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core): remove unused trezor_lib/ui feature

This commit removes an unused Rust Cargo feature flag called 'ui' from the Trezor firmware build configuration. It is a cleanup change: the feature was always enabled in practice, so the code now compiles unconditionally. There is no secur…

1436fbc6by cepetr+2−158 files
No security note in commit
Low 27 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core/caesar): change confirm middle button

This commit changes how users confirm an Ethereum authorization screen on Trezor's 'Caesar' layout. Previously, the user had to hold down a button to approve; now a simple tap is enough. The change only affects the user-interface interacti…

UI confirmation gesture changed from hold-to-confirm to tap-to-confirmOnly affects EIP-7702 authorization flow on Caesar (T3B1) layoutTest fixture hashes updated for all supported languages
e231cc94by obrusvit+50−502 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): merge firmware and unix cargo packages

This commit is a routine internal cleanup that merges two separate build packages (one for real hardware firmware and one for the desktop emulator) into a single package. It moves source files into subdirectories and updates build scripts …

6be32440by cepetr+48−32025 files
No security note in commit
Informational 15 AI analysisMessage 67 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core): test aes gcm only if enabled

This commit is a minor build/test maintenance change. It adds a feature flag (USE_AES_GCM) so that AES-GCM tests are only run when the feature is actually enabled in a particular firmware build. There is no security fix or vulnerability be…

890aca93by cepetr+13−14 files
No security note in commit
Informational 15 AI analysisMessage 95 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(python, tests): add and update GNU licence headers

This commit only adds or updates copyright and GNU license header comments in Python test and tooling files. It makes no changes to executable code, so it cannot introduce a security vulnerability or fix one.

6dc781c2by M1nd3r+1202−203250 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): move the multisig XPUB title into a translation template

This commit is a straightforward code cleanup: it moves the on-screen title for multisig XPUB screens from hard-coded English text into the device's translation system. The visible text remains essentially the same, and there is no securit…

6d69df16by Michal Kazda+20279−2023911 files
No security note in commit
Informational 15 AI analysisMessage 77 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): render translated strings verbatim in layouts

This is a cosmetic code cleanup. It moves punctuation and capitalization out of the Python code and into the translation files so translated strings are shown exactly as written. There is no security-relevant change.

162ed3a2by Michal Kazda+12−125 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core/bolt): remove unneeded `use` statements

This commit simply removes two unused Rust import statements (called `use` statements). It does not change any actual code behavior, logic, or security properties of the Trezor firmware.

a56f8c3dby Roman Zeyde+0−22 files
No security note in commit
Informational 18 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core): add missing colon in Tron

This commit fixes a UI formatting bug in the Tron cryptocurrency flow on Trezor hardware wallets. A missing colon was added to account information labels shown on the device screen. The change is cosmetic and does not appear to affect cryp…

UI label formatting fix onlyNo changes to signature verification, key handling, or transaction authorizationNo buffer size, memory allocation, or input validation changes observed
739c2968by Michal Kazda+19332−193364 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core): combine path/account with labels

This commit is a straightforward user-interface refactoring. It bundles an account/path label together with its corresponding value into a single tuple, instead of passing them as four separate arguments. There is no security-relevant chan…

c66f6f4dby Michal Kazda+51−7413 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 candidatechore(vendor): update secp256k1-zkp to v0.7.1by M1nd3r · 0904b41b · Aug 11, 2026 · 1 fileMessage 88 · StrongInformational 15Details
Commit message · M1nd3r

chore(vendor): update secp256k1-zkp to v0.7.1

- Updated from v0.7.0.
- Pinned to release/commit: https://github.com/bitcoin-core/secp256k1/releases/tag/v0.7.1
- Changelog: https://github.com/bitcoin-core/secp256k1/blob/master/CHANGELOG.md#071---2026-01-26
- Changes: https://github.com/bitcoin-core/secp256k1/compare/v0.7.0...v0.7.1

88/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit only updates a bundled cryptographic library (secp256k1-zkp) from version 0.7.0 to 0.7.1. The actual code change is a one-line update to the submodule pointer. The commit message does not describe any security fix, and no security-relevant details are visible in the diff itself.

Security candidatechore: remove libtropic's pin to develop branchby M1nd3r · 8290eeef · Aug 11, 2026 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · M1nd3r

chore: remove libtropic's pin to develop branch

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

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'). There is no code change, no bug fix, and no direct security issue visible in the diff itself.

Security candidatechore(core/embed): clear temporary buffer across Optiga/Tropic callsby Roman Zeyde · 01ebda93 · Aug 10, 2026 · 1 fileMessage 70 · AdequateLow 37Details
Commit message · Roman Zeyde

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

We don't need to keep Optiga/Tropic-generated entropy
after XOR-ing it into `dest`.

In addition, it prevents the "Tropic" for-loop from "undoing" the
"Optiga" for-loop result, if `tropic_random_buffer()` somehow succeeds
without modifying its buffer.

The additional `memzero` calls performance impact should be small
compared to Optiga/Tropic communication latency.

[no changelog]

70/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly! Contains work-in-progress language
Why it was queued
entropy or randomnessseed or entropy path
AI analysis · Low 37/100

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 than only once at the end. It also fixes a subtle edge case where a buggy Tropic chip call could leave old Optiga randomness in the temporary buffer, potentially weakening the final random output.

Security candidatefeat(core/bolt): implement Rust select_menuby obrusvit · 147f4c60 · Aug 10, 2026 · 4 filesMessage 72 · AdequateInformational 15Details
Commit message · obrusvit

feat(core/bolt): implement Rust select_menu

- implement FirmwareUI::select_menu
- not used in flows yet

[no changelog]

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
boot or update path
AI analysis · Informational 15/100

This commit adds a new Rust-based on-screen menu component for the Trezor hardware wallet's Bolt user interface. It is a straightforward feature implementation and does not fix or introduce any obvious security issue. The component is not yet wired into any user-facing flows.

Security candidatefeat(common/protobuf): integrate EIP-7702 delegation into `EthereumSignTxEIP1559`by Roman Zeyde · b0932cd4 · Aug 8, 2026 · 5 filesMessage 62 · AdequateInformational 14Details
Commit message · Roman Zeyde

feat(common/protobuf): integrate EIP-7702 delegation into `EthereumSignTxEIP1559`

[no changelog]

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
boot or update path
AI analysis · Informational 14/100

This commit only changes the data format definitions (protobuf messages) used to talk to a Trezor hardware wallet. It adds new optional fields for an upcoming Ethereum feature called EIP-7702, which lets an account temporarily act like a smart contract. The commit does not contain any actual signing logic, user confirmation screens, or security checks. Because it is just a protocol definition update, it does not by itself create a vulnerability, but it is a building block for future code that will handle these authorizations.

Security candidatetest(core/ethereum): EIP-7702 tuple nonce must be non-zeroby Roman Zeyde · 76cd2ed4 · Aug 8, 2026 · 2 filesMessage 72 · AdequateInformational 15Details
Commit message · Roman Zeyde

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

[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
Why it was queued
signing or wallet pathauthentication path
AI analysis · Informational 15/100

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 rule requires the tuple nonce to be non-zero. No production firmware code is modified, so this commit does not fix or introduce a security vulnerability in shipped devices.

Security candidatefeat(core): report nRF SMP-push progressby tychovrahe · 397eab9e · Aug 7, 2026 · 5 filesMessage 80 · StrongInformational 15Details
Commit message · tychovrahe

feat(core): report nRF SMP-push progress

Thread a per-chunk progress callback through upload_image/smp_upload_app_image; add nrf_update_with_progress (nrf_update delegates with NULL, so the coreapp syscall ABI is unchanged).

[no changelog]

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

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
boot or update path
AI analysis · Informational 15/100

This commit adds a progress bar feature for firmware updates sent to the nRF wireless chip inside Trezor devices. It threads a callback function through the upload code so the bootloader can show how much of the image has been transferred. The existing public syscall entry point is deliberately left unchanged, so normal app behavior is unaffected. There is no security fix or vulnerability here.

Security candidatedocs(core): document rng_fill_buffer_strong_time()by Andrew Kozlik · c5687f76 · Aug 7, 2026 · 1 fileMessage 67 · AdequateInformational 15Details
Commit message · Andrew Kozlik

docs(core): document rng_fill_buffer_strong_time()

[no changelog]

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

67/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
entropy or randomnessseed or entropy path
AI analysis · Informational 15/100

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.

Security candidatechore: guard against insecure PRNG in bare-metal buildby Andrew Kozlik · 4f8f4586 · Aug 7, 2026 · 1 fileMessage 77 · AdequateLow 44Details
Commit message · Andrew Kozlik

chore: guard against insecure PRNG in bare-metal build

[no changelog]

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
entropy or randomnesscryptography-sensitive path
AI analysis · Low 44/100

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 so a future build misconfiguration cannot silently ship weak randomness to real devices.

Security candidatebuild(core/io): move headers to the right placeby matejcik · cf3597e9 · Aug 7, 2026 · 4 filesMessage 57 · ThinInformational 15Details
Commit message · matejcik

build(core/io): move headers to the right place

after smp had been moved to io crate

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 routine build cleanup. It moves a header file to the correct folder and updates two source files to include it from the new location. There is no security-relevant change here.

Security candidatefeat(core/rust): move nrf and smp out of trezor_libby matejcik · 53761741 · Aug 7, 2026 · 31 filesMessage 77 · AdequateInformational 15Details
Commit message · matejcik

feat(core/rust): move nrf and smp out of trezor_lib

* moves irq to sys::irq
* moves from_c_str and from_c_array to rtl::util
* moves smp and trezorhal::nrf to io

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
boot or update path
AI analysis · Informational 15/100

This commit is a straightforward internal code reorganization. It moves several low-level hardware communication modules (NRF radio, SMP firmware-update protocol, IRQ utilities, and C-string helpers) into different Rust crates so the project structure is cleaner. No security vulnerability is introduced or fixed; it is purely a refactoring change.

Security candidatebuild(core): propagate emulator feature from projectsby matejcik · 5642074c · Aug 7, 2026 · 4 filesMessage 85 · StrongInformational 15Details
Commit message · matejcik

build(core): propagate emulator feature from projects

left out:
* firmware, which removes emulator feature instead
* kernel, whose dep on trezor_lib will be removed in a followup PR

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
boot or update path
AI analysis · Informational 15/100

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 makes sense because real firmware runs on hardware, not an emulator), while the bootloader, prodtest, and core Rust library now propagate the feature more consistently. There is no indication of a security vulnerability in this change.

Security candidatefix(emulator): initialize mono counters before running bootemuby cepetr · 2db6bd43 · Aug 7, 2026 · 12 filesMessage 62 · AdequateLow 35Details
Commit message · cepetr

fix(emulator): initialize mono counters before running bootemu

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

This commit fixes how the Trezor emulator initializes its 'monotonic counters'—security counters that only ever increase and are used to prevent downgrades to older, possibly vulnerable firmware. Before this fix, the emulator did not explicitly initialize these counters before running the boot emulator, which could lead to uninitialized or incorrect counter values during emulator-based testing. The fix adds a dedicated initialization routine and calls it in every relevant firmware component. On real hardware the initialization is currently a no-op, so this primarily affects the Unix/emulator build used for development and testing.

Security candidatefix(crypto): make aes functions reject negative lengthby M1nd3r · a64989a7 · Aug 6, 2026 · 4 filesMessage 62 · AdequateLow 47Details
Commit message · M1nd3r

fix(crypto): make aes functions reject negative length

[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 pathboot or update path
AI analysis · Low 47/100

This commit fixes a bug in Trezor's AES encryption/decryption code where a negative length value could be passed to low-level AES functions. Previously, those functions treated the signed length as a large unsigned number, which could cause them to read or write far beyond the intended memory buffer. The patch makes every AES mode reject negative lengths and adds error handling so callers fail safely instead of silently producing bad results or touching memory they shouldn't.

Security candidatechore(rust/trezor-client): move contributor list to AUTHORSby Martin Milata · c207d393 · Aug 6, 2026 · 3 filesMessage 62 · AdequateInformational 15Details
Commit message · Martin Milata

chore(rust/trezor-client): move contributor list to AUTHORS

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

This commit simply moves the list of contributors from two places (a package metadata file and the README) into a single dedicated AUTHORS file. It is a routine housekeeping change with no security relevance.

Security candidaterefactor(core): digest EIP-1559/EIP-7702 magic without RLP encodingby Roman Zeyde · 2362bc6f · Aug 6, 2026 · 2 filesMessage 93 · StrongLow 27Details
Commit message · Roman Zeyde

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

The [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702#behavior) spec defines the hashing process as:
```
msg = keccak(MAGIC || rlp([chain_id, address, nonce]))
```

It would make more sense to use `sha.append(_MAGIC)` --- this way we do not need to rely on the assumption that RLP encodes small integers to their byte representation.

Note that the same goes for [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559#specification):
```
keccak256(0x02 || rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, amount, data, access_list]))
```

[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
signing or wallet pathauthentication path
AI analysis · Low 27/100

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 code used the general RLP encoder to write the single-byte marker; now it appends the raw byte directly. The commit message says this avoids relying on the assumption that RLP encodes small integers as a single byte. There is no direct evidence in the commit or supplied references that this fixes an exploitable vulnerability, but it removes a fragile assumption in security-critical hashing code.

Security candidatetest(core): test RLP self-encoding bytestringsby Roman Zeyde · 41538733 · Aug 6, 2026 · 1 fileMessage 98 · StrongInformational 15Details
Commit message · Roman Zeyde

test(core): test RLP self-encoding bytestrings

Adds an exhaustive test for this specific case.

https://ethereum.org/developers/docs/data-structures-and-encoding/rlp/#definition

[no changelog]

98/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✓ Links an issue, advisory, or supporting reference
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

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 production code was changed, and there is no security fix or vulnerability present in the diff.

Security candidatechore(core): remove sha1 from regular FWby M1nd3r · 16d15774 · Aug 5, 2026 · 6 filesMessage 57 · ThinInformational 18Details
Commit message · M1nd3r

chore(core): remove sha1 from regular FW

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

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 the device, along with related tests and benchmarks. It is a hardening/cleanup change rather than a fix for an active bug or exploit.

Security candidatefix(crypto): prevent calling `memzero(NULL, ...)`by Ondřej Vejpustek · 0394e934 · Aug 5, 2026 · 1 fileMessage 57 · ThinLow 37Details
Commit message · Ondřej Vejpustek

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

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

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 it is undefined behavior in C and could cause a crash or unpredictable results on other systems. The change adds simple NULL checks before clearing plaintext output and before wiping responder/initiator objects during cleanup.

Security candidaterefactor(crypto): return remote static key from `noise_xxpsk3_*_handle_*()`by Ondřej Vejpustek · 3ead1aa6 · Aug 5, 2026 · 3 filesMessage 62 · AdequateInformational 18Details
Commit message · Ondřej Vejpustek

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

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

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, the function now writes it into a buffer supplied by the caller. The commit message explicitly calls it a refactor and includes '[no changelog]', indicating it is not being presented as a security fix. There is no direct evidence in the diff that this change fixes an active vulnerability, but it does reduce the amount of sensitive key material kept in internal state and gives callers explicit control over the output buffer, which is generally a defensive improvement.

Security candidaterefactor(crypto): prefix enumsby Ondřej Vejpustek · f1c74046 · Aug 5, 2026 · 2 filesMessage 47 · ThinInformational 15Details
Commit message · Ondřej Vejpustek

refactor(crypto): prefix enums

[no changelog]

47/100 · ThinMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit 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 them longer, unique names that include which part they belong to. The actual numeric values and program behavior are unchanged. There is no security fix or vulnerability here.

Security candidaterefactor(crypto): change order of parametersby Ondřej Vejpustek · 33a119ee · Aug 5, 2026 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · Ondřej Vejpustek

refactor(crypto): change order of parameters

[no changelog]

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit 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.

Security candidaterefactor(crypto): pass static public key to `noise_xxpsk3_*_init()`by Ondřej Vejpustek · 1b3128a4 · Aug 5, 2026 · 2 filesMessage 62 · AdequateLow 27Details
Commit message · Ondřej Vejpustek

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

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

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 refactor that reduces the risk of using mismatched keys, but the commit itself does not claim to fix a specific security bug and no exploit is described.

Security candidatefeat(xtask): introduce project-toml build-optionsby cepetr · d44de007 · Aug 5, 2026 · 17 filesMessage 57 · ThinInformational 17Details
Commit message · cepetr

feat(xtask): introduce project-toml build-options

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

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 builds automatically enable the 'debug-link' option. There is no direct vulnerability in the diff, but any mistake in the new TOML mappings could accidentally enable or disable security-relevant features in a shipped firmware image.

Security candidatefix(core/ethereum): verify `chain_id` when matching EIP-7702 addressesby Roman Zeyde · afd4279c · Aug 5, 2026 · 6 filesMessage 100 · StrongModerate 60Details
Commit message · Roman Zeyde

fix(core/ethereum): verify `chain_id` when matching EIP-7702 addresses

Also:
- add Gnosis to supported chains (https://7702beat.eth.sh/)
- use Gnosis chain ID for testing definitions.
- unknown chains are now disallowed.

[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✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathauthentication path
AI analysis · Moderate 60/100

This commit tightens security for a new Ethereum feature (EIP-7702 account delegation) in Trezor hardware wallets. Previously, the wallet would recognize certain smart-contract delegate addresses on any chain, and would allow signing on unknown chains with only a generic warning. Now it checks that both the chain ID and the delegate address match an approved list, and it refuses to sign on unknown chains entirely. This prevents a malicious app or website from tricking a user into authorizing a delegate on an unexpected network.