TZ
← All projectsTrezor

Trezor firmware

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

BitcoinHardware walletsNormal
Repository coverage

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

919security candidates311second-pass queue2658AI analyses
331commits · 30 days
560commits · 60 days
1366commits · 180 days
2647commits · 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
476Strong · 80–100
1321Adequate · 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 Zeyde575179573271
PrisionMike945994273
Andrew Kozlik712470265
obrusvit21376213164
Jakub Janků22919182
Martin Pastyřík23823173
cepetr19682196059
Ioan Bizău23076230059
M1nd3r20772207071
Lukas Bielesch846784067
Martin Milata17446174063
Analysis record

Published AI watches

Last scanned 27 minutes ago

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

docs: add xtask documentation

This commit only adds documentation. It updates the table of contents and adds a new markdown page plus a diagram explaining the project's 'xtask' build helper. No code, build scripts, or firmware logic was changed, so it cannot introduce …

4879dababy cepetr+296−03 files
No security note in commit
Informational 17 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

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

This commit is a build-system refactoring for Trezor firmware. It moves the mapping of command-line build options to Rust/cargo features out of hard-coded Rust logic and into per-project TOML files. It also adds a small change so debug bui…

Build-option mapping now lives in project.toml files, increasing the attack surface for supply-chain/build-configuration tamperingMakefile change automatically enables debug-link for PYOPT=0 debug buildsValidation added to reject storage_insecure_testing_mode in production builds
d44de007by cepetr+681−40817 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(core): remove redundant includes fom SAES moduleby tychovrahe · 015303a0 · Mar 6, 2026 · 2 filesMessage 62 · AdequateInformational 15Details
Commit message · tychovrahe

chore(core): remove redundant includes fom SAES module

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

This commit simply removes two unused header file includes from source files in the secure AES module. It is a routine cleanup with no functional code changes and no security relevance.

Lower-priorityfix(python): raise ProtocolError on invalid THP continuationby Roman Zeyde · ece624f8 · Mar 5, 2026 · 1 fileMessage 62 · AdequateLow 29Details
Commit message · Roman Zeyde

fix(python): raise ProtocolError on invalid THP continuation

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

This commit fixes a small but real bug in the Python Trezor library's handling of USB/transport messages. When reassembling a multi-part message, if a follow-up chunk had a malformed header, the code would crash with a low-level Python struct.error instead of raising a proper ProtocolError. The fix wraps that parsing in a try/except and raises a clean ProtocolError with a clear message. It also slightly improves the error message for an invalid initial header.

Lower-prioritytest(core): improve error message on connection errorby Roman Zeyde · 93ddc27a · Mar 5, 2026 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · Roman Zeyde

test(core): improve error message on connection error

[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 changes a test helper file to print a warning message when a Trezor device connection fails during automated testing. It does not modify the actual firmware, wallet logic, cryptography, or any user-facing security behavior. There is no security issue here.

Lower-priorityfix(python): handle missing THP continuations during multi-chunk payloadsby Roman Zeyde · c65ec9c8 · Mar 5, 2026 · 2 filesMessage 93 · StrongLow 42Details
Commit message · Roman Zeyde

fix(python): handle missing THP continuations during multi-chunk payloads

Continuation packets may be skipped if the transport is blocked (e.g. USB) during a retransmission.

Related to #6539 and #6506.

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

This commit fixes a bug in the Python Trezor library's handling of multi-part USB messages. When a message is split into several chunks, some middle chunks could be skipped or arrive out of order, causing the library to misread the message or fail. The fix makes the receiver more tolerant: it skips unexpected continuation packets and re-synchronizes when a new message starts in the middle of an expected stream. This is a reliability fix in the host-side Python code, not the hardware wallet firmware itself, and it does not appear to be a direct exploit for stealing coins.

Security candidateci: fix actions to commit-hashes instead of tagsby M1nd3r · 7b7d1c2d · Mar 5, 2026 · 18 filesMessage 84 · StrongInformational 15Details
Commit message · M1nd3r

ci: fix actions to commit-hashes instead of tags

- to prevent potential supply-chain attacks
- updated used actions to latest released versions

[no changelog]

84/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Explains rationale or failure mode
Why it was queued
explicit security languagesigning or wallet pathdocumentation-only discount
AI analysis · Informational 15/100

This commit is a hardening change, not a vulnerability fix. It pins all GitHub Actions used by Trezor's firmware build and test pipelines to specific commit hashes instead of version tags, and updates those actions to their latest released versions. Pinning prevents a compromised action publisher from silently replacing a trusted tag with malicious code. There is no evidence of an actual supply-chain attack or any bug being fixed beyond this preventive measure.

Security candidatetest(core): fix broken log suppression in unit testsby M1nd3r · 0da61de7 · Mar 5, 2026 · 11 filesMessage 72 · AdequateInformational 15Details
Commit message · M1nd3r

test(core): fix broken log suppression in unit 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
Why it was queued
cryptography-sensitive pathauthentication path
AI analysis · Informational 15/100

This commit only changes the test code for the Trezor firmware. It fixes how debug logging is suppressed during unit tests by moving the suppression logic into the shared test runner, instead of having each test file call a helper function. There is no change to the actual wallet firmware that users rely on, and no security vulnerability is being fixed.

Lower-priorityci: add missing space in `bot-project-automation.yml`by Roman Zeyde · 95dc3023 · Mar 5, 2026 · 1 fileMessage 85 · StrongInformational 15Details
Commit message · Roman Zeyde

ci: add missing space in `bot-project-automation.yml`

```
[YAML-STYLE-CHECK]
yamllint .
./.github/workflows/bot-project-automation.yml
31:79 warning too few spaces before comment: expected 2 (comments)
39:79 warning too few spaces before comment: expected 2 (comments)
```

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

This commit fixes a trivial formatting issue in a GitHub Actions workflow file by adding a missing space before two inline comments. It has no security relevance.

Security candidatefix(crypto): add missing memzero to `ed25519.c`by M1nd3r · 48db49fa · Mar 4, 2026 · 1 fileMessage 57 · ThinLow 42Details
Commit message · M1nd3r

fix(crypto): add missing memzero to `ed25519.c`

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

This commit fixes a small cleanup bug in the code that creates Ed25519 digital signatures in Trezor hardware wallets. When a certain rare mathematical check fails, the function now securely wipes two temporary secret values from memory before returning an error. Without the fix, those temporary secrets could remain in memory longer than intended. This is a defense-in-depth improvement rather than a confirmed exploitable vulnerability.

Security candidatefix(crypto): add missing memzero to `ecdsa.c`by M1nd3r · bddd38b4 · Mar 4, 2026 · 1 fileMessage 57 · ThinModerate 51Details
Commit message · M1nd3r

fix(crypto): add missing memzero to `ecdsa.c`

[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 · Moderate 51/100

This commit fixes a cleanup issue in the code that creates cryptocurrency signatures on Trezor hardware wallets. In several error paths, secret intermediate numbers (including a copy of the private key and random nonce values) were left in memory instead of being securely erased. The patch makes sure those values are wiped even when the function exits early due to an invalid key or other failure. This reduces the risk that sensitive signing material could leak if memory is later read by another process or attacker.

Security candidatefix(crypto): add missing memzero to `cardano.c`by M1nd3r · 40d4f902 · Mar 4, 2026 · 1 fileMessage 57 · ThinModerate 59Details
Commit message · M1nd3r

fix(crypto): add missing memzero to `cardano.c`

[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 · Moderate 59/100

This commit fixes a bug in the Cardano cryptocurrency key derivation code for Trezor hardware wallets. Previously, if a certain error path was hit during key derivation, the function would return early without wiping sensitive intermediate values from memory. The fix ensures those temporary secrets are always cleared, even when the function fails partway through. It also adds cleanup for a couple of additional temporary buffers that were not being wiped before.

Security candidatefix(crypto): add missing memzero to `bip32.c`by M1nd3r · 09e55d8c · Mar 4, 2026 · 1 fileMessage 57 · ThinLow 48Details
Commit message · M1nd3r

fix(crypto): add missing memzero to `bip32.c`

[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
secret or key materialcryptography-sensitive path
AI analysis · Low 48/100

This commit fixes a cleanup oversight in the Trezor firmware's code that handles NEM cryptocurrency encryption and decryption. Previously, if an encryption or decryption operation failed partway through, the temporary AES key context (a small chunk of memory holding sensitive key material) was not securely wiped before the function returned. The patch ensures this memory is always zeroed out, even on error paths, reducing the risk that leftover cryptographic key bits could leak to other code or be recovered later. It is a defensive hardening fix rather than a demonstrated exploitable bug.

Security candidatechore: bump versionsby Roman Zeyde · a002269f · Mar 4, 2026 · 9 filesMessage 63 · AdequateInformational 15Details
Commit message · Roman Zeyde

chore: bump versions

```
tools/bump-version.py core 2.11.1
tools/bump-version.py core/embed/projects/bootloader 2.1.17
tools/bump-version.py core/embed/projects/prodtest 0.3.7
tools/bump-version.py core/embed/projects/secmon 1.0.8
tools/bump-version.py legacy/firmware 1.14.2
```

[no changelog]

63/100 · AdequateMessage clarity
✓ Subject identifies a change✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
update trustsigning or wallet pathboot or update path
AI analysis · Informational 15/100

This commit is a routine version number update. It changes patch version numbers from 2.11.0 to 2.11.1 for the modern Trezor firmware and from 1.14.1 to 1.14.2 for the legacy firmware, updates matching translation file headers, and refreshes a translation signature file. There are no code logic changes, no bug fixes, and no security-related modifications visible in the diff.

Security candidatefix(caesar): localization in Progress Componentby obrusvit · eca4f2cc · Mar 4, 2026 · 3 filesMessage 80 · StrongInformational 15Details
Commit message · obrusvit

fix(caesar): localization in Progress Component

- use progress__locking_device
- enlarge description field in Progress which enables longer strings in
the progress layout (e.g. when locking the device)

[no changelog]

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

This commit is a routine user-interface fix for the Trezor hardware wallet's 'Caesar' layout. It swaps a hard-coded English string ('Locking the device...') for a localizable translation key and slightly increases the on-screen margin so longer translated text fits. The remaining changes are only updated test screenshot fingerprints, which is expected when any visible text changes. There is no security issue here.

Lower-priorityfix(core/thp): correct `Failure_InvalidProtocol` constant messageby Roman Zeyde · d4b0ca0d · Mar 3, 2026 · 2 filesMessage 62 · AdequateInformational 21Details
Commit message · Roman Zeyde

fix(core/thp): correct `Failure_InvalidProtocol` constant message

[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 fixes a hard-coded error message sent by Trezor devices when an older protocol (v1) is used on a connection that expects the newer THP protocol. The message's length field was wrong (claimed 20 bytes instead of 2), which could cause the receiving host to read extra, unintended bytes. The fix corrects the length and adds a test to ensure the response is exactly the right size.

Lower-prioritychore(ci): all languages option for crowdin context workflow [no changelog]by Michal Kazda · 979baa5f · Mar 3, 2026 · 2 filesMessage 77 · AdequateInformational 15Details
Commit message · Michal Kazda

chore(ci): all languages option for crowdin context workflow
[no changelog]

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

This commit is a routine internal cleanup of the project's GitHub Actions CI workflow. It refactors a workflow that generates UI screenshots for translators so it can run for either one selected language or all supported languages. There is no change to the Trezor firmware code, device behavior, secrets handling, or user-facing functionality.

Lower-prioritychore: add reset and recovery context testsby Michal Kazda · 3039c42e · Mar 3, 2026 · 1 fileMessage 67 · AdequateInformational 15Details
Commit message · Michal Kazda

chore: add reset and recovery context tests

[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 updates a list of automated test cases in a text file. It removes two PIN-related tests and adds seventeen tests covering wallet reset and recovery scenarios. There are no code changes to the firmware or any user-facing behavior.

Lower-priorityfix(core): fix dma2d syscall verifiersby tychovrahe · e5c51d5e · Mar 3, 2026 · 1 fileMessage 57 · ThinModerate 64Details
Commit message · tychovrahe

fix(core): fix dma2d syscall verifiers

[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 · Moderate 64/100

This commit fixes a potential integer overflow bug in the Trezor hardware wallet's kernel syscall verifier. The verifier checks whether a graphics operation's source or destination memory region is accessible before allowing it. Previously, the multiplication of stride (row byte length) by height (number of rows) was done using the original integer types, which could overflow and produce a smaller value than the actual memory region size. That could let a malicious or buggy userspace app pass the access check while reading or writing memory outside its allowed area. The fix forces the multiplication to use size_t, a wider type, so the calculated region size is accurate on 32-bit STM32 hardware.

Lower-priorityfix(core): fix jpegdec syscall verifierby tychovrahe · fb4aa180 · Mar 3, 2026 · 2 filesMessage 57 · ThinHigh 73Details
Commit message · tychovrahe

fix(core): fix jpegdec syscall verifier

[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 · High 73/100

This commit fixes a security weakness in the Trezor hardware wallet's JPEG decoder system call. Before the fix, the kernel did not fully check that the image data pointer and remaining data length were safe for the unprivileged app to access. A malformed request could potentially read memory outside the allowed buffer, which on this secure chip architecture could leak secrets or crash the device. The patch adds explicit bounds checks and confirms the app actually has read permission to the memory region it references.

Lower-priorityfix(core): fix syscall set filter verifierby tychovrahe · f60f5354 · Mar 3, 2026 · 2 filesMessage 57 · ThinModerate 61Details
Commit message · tychovrahe

fix(core): fix syscall set filter verifier

[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 · Moderate 61/100

This commit fixes a security boundary check in the Trezor firmware's system-call verifier. The old code trusted a user-supplied string pointer and measured its length with strlen(), which can read beyond allowed memory if the string is malformed or malicious. The fix makes the caller provide the string length explicitly and checks exactly that many bytes. This closes a likely path for a restricted app to trick the device into reading memory it shouldn't, potentially causing a crash or leaking secrets.

Lower-priorityfix(core): limit the offset of translations_read functionby tychovrahe · a4be04fe · Mar 3, 2026 · 1 fileMessage 62 · AdequateModerate 64Details
Commit message · tychovrahe

fix(core): limit the offset of translations_read 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
translation-only discount
AI analysis · Moderate 64/100

This commit fixes a function that reads translated text data from the hardware wallet's flash storage. Previously, if a caller requested data starting at an offset beyond the end of the translation area, the function would calculate a negative-looking length (because unsigned arithmetic wraps around) and return a pointer to an invalid memory location. The fix checks whether the offset is too large and returns NULL instead. This could have allowed malformed or attacker-controlled data to trick the device into reading memory outside the intended translation area, potentially causing crashes or exposing unrelated flash contents.

Lower-priorityfix(core): use verifiers for translations syscallsby tychovrahe · 1811d3bb · Mar 3, 2026 · 1 fileMessage 62 · AdequateModerate 63Details
Commit message · tychovrahe

fix(core): use verifiers for translations syscalls

[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 · Moderate 63/100

This commit changes two system call handlers in Trezor's firmware so that translation-related read/write operations go through 'verified' versions of functions. The change suggests the previous unverified versions may have allowed untrusted code (apps running on the device) to access or modify translation data in unsafe ways, such as passing bad memory pointers or lengths. Without the verified wrapper, a malicious or buggy app could potentially corrupt memory or read/write data it should not. The patch is very small and does not show the verifier code itself, so we cannot confirm the exact bug or exploit path.

Lower-priorityrefactor(core): refactor option bytesby tychovrahe · 3101ccfd · Mar 3, 2026 · 6 filesMessage 57 · ThinInformational 12Details
Commit message · tychovrahe

refactor(core): refactor option bytes

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

This commit is a straightforward code cleanup: it renames functions like flash_configure_option_bytes() to option_bytes_configure() and check_oem_keys() to option_bytes_check_oem_keys(), makes several internal helpers static (visible only within one file), and changes the compile-time guard from KERNEL_MODE to SECURE_MODE. The actual logic that checks and writes the chip's security option bytes is unchanged. There is no indication this fixes a security bug or introduces a vulnerability.

Lower-prioritychore(core): enable debuglink compilation on button modelsby tychovrahe · 4c5b217e · Mar 3, 2026 · 6 filesMessage 62 · AdequateInformational 19Details
Commit message · tychovrahe

chore(core): enable debuglink compilation on button models

[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 changes build configuration files for several Trezor hardware wallet models so that a special debug helper file for physical buttons is included only when the 'usb_iface_debug' feature is requested. It does not change user-facing behavior in normal production builds. The change appears to be a build-system cleanup to make debug-only button code compile correctly on button-based devices, not a fix for an active security vulnerability.

Lower-priorityfeat(core): implement button event emulation on driver levelby tychovrahe · abb95498 · Mar 3, 2026 · 4 filesMessage 62 · AdequateInformational 19Details
Commit message · tychovrahe

feat(core): implement button event emulation on driver level

[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 debug-only feature that lets software simulate physical button presses (press, release, click) on Trezor hardware wallets. It is compiled in only when the DEBUGLINK build flag is set, which is intended for development and automated testing, not production firmware. The feature could let a connected debugging host or test harness inject fake button events into the normal button-handling path.

Lower-priorityfeat(core): implement touch event emulation on driver levelby tychovrahe · 44bd6443 · Mar 3, 2026 · 4 filesMessage 62 · AdequateLow 32Details
Commit message · tychovrahe

feat(core): implement touch event emulation on driver level

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

This commit adds a debug-only feature to the Trezor hardware wallet firmware that lets developers inject fake touch-screen events (taps, swipes, clicks) into the touch driver. It is gated behind the DEBUGLINK build flag, which is used only in development/testing builds, not in production firmware shipped to users. The change itself is a feature implementation; there is no direct evidence in the commit that it fixes a security bug or that it introduces an exploitable vulnerability in production devices.