KS
← All projectsKeystone

Keystone 3 firmware

Open-source device firmware for Keystone 3 hardware wallets.

BitcoinHardware walletsNormal
Repository coverage

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

119security candidates294second-pass queue551AI analyses
9commits · 30 days
37commits · 60 days
279commits · 180 days
504commits · 365 days
Backfill bands
Aug 5 → Feb 6260 seen14 candidatesComplete
Feb 6 → Jun 6117 seen7 candidatesComplete
Jun 6 → Jul 639 seen4 candidatesComplete
Jul 6 → Aug 5115 seen4 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.

42/100 average clarity
35Strong · 80–100
72Adequate · 60–79
211Thin · 40–59
235Opaque · 0–39
39security candidates 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.
soralit11634116248
Adam Tucker931193263
aaron30430248
Soralit959154
ww351268717652176026
willwang15215025
John Boyd626088
github-actions[bot]323076
Aaron Chen222068
Qkin-Keystone26126036
qkin12112050
Greg Pfeil414071
Analysis record

Published AI watches

Last scanned 0 minutes ago

Low 42 AI analysisMessage 58 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge pull request #2293 from KeystoneHQ/merge/v3.1.0

This is a large firmware release merge (v3.1.0) for the Keystone 3 hardware wallet. The visible changes are mostly a major FreeRTOS kernel upgrade (from v10.x to v11.3.0), build-system improvements, and user-facing feature tweaks such as b…

FreeRTOS kernel major version upgrade (10.x -> 11.3.0) with MPU hardeningSwitch from ARM_CM4F non-MPU port to ARM_CM4_MPU portNew MPU configuration flags: configTOTAL_MPU_REGIONS=8, configENFORCE_SYSTEM_CALLS_FROM_KERNEL_ONLY=1, configALLOW_UNPRIVILEGED_CRITICAL_SECTIONS=0
0c0ae467by stone+59616−26981300 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 48 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

chore: update ci (#2292)

This commit only updates a Git submodule pointer in a release-tracking file. The actual code change is a one-line pointer update from one commit hash to another in a file named 'keystone3-firmware-release'. There is no visible security-rel…

90d1c789by Soralit+1−11 file
No security note in commit
Informational 15 AI analysisMessage 40 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

chore: update ci

This commit only updates a Git submodule pointer (keystone3-firmware-release) from one commit hash to another. No source code, build scripts, CI configuration, or security-related files are changed in the visible diff. There is no evidence…

a7f6db29by Soralit+1−11 file
No security note in commit
Moderate 58 AI analysisMessage 28 · Opaque
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

release 3.1.0

This is a large firmware release commit (version 3.1.0) for the Keystone 3 hardware wallet. The most significant change visible in the diff is a major upgrade of the FreeRTOS real-time operating system kernel from version 10.x to 11.3.0, c…

FreeRTOS major version upgrade (10.x → 11.3.0) with MPU port enabledNew MPU sandbox task/runtime/validator files addedconfigENFORCE_SYSTEM_CALLS_FROM_KERNEL_ONLY=1 and configALLOW_UNPRIVILEGED_CRITICAL_SECTIONS=0 set
2b007a29by Soralit+59615−26980300 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 76 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge release v3.0.8 (#2291)

This commit is a routine version-bump merge for release v3.0.8. It only updates changelogs, a Git submodule pointer, and a build version number. There is no code change visible in the diff and nothing that suggests a security fix or vulner…

b5e8f9fcby github-actions[bot]+18−24 files
No security note in commit
Low 47 AI analysisMessage 76 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge release v3.0.6 (#2290)

This firmware update adds support for Solana's new V1 transaction format and changes how oversized or malformed transaction details are displayed. The code introduces a dedicated parser for V1 messages with strict size and structure checks…

New parser enforces hard limits on V1 message fields and rejects malformed 0x81-prefix payloads instead of falling back to message signingCompute-budget instructions in V1 are explicitly ignored to prevent fee-display spoofingUI pagination change for large transaction details reduces truncation risk
87b78ae1by github-actions[bot]+564−2812 files
No security note in commit
Informational 15 AI analysisMessage 68 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

pin to new release config (#2285)

This commit only updates a Git submodule pointer (keystone3-firmware-release) from one commit hash to another. There is no code change visible in the diff, no description of what the new release config contains, and no security-related inf…

bc01c889by Aaron Chen+1−11 file
No security note in commit
Informational 15 AI analysisMessage 68 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

update the release repo (#2282)

This commit simply updates a Git submodule pointer for the project's release repository. There is no visible code change, no description of any security issue, and no indication this is anything other than a routine release-tracking update.

3ac7e802by Aaron Chen+1−11 file
No security note in commit
Moderate 59 AI analysisMessage 76 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge release v3.0.4 (#2279)

This is a routine firmware release merge (v3.0.4) for the Keystone 3 hardware wallet. The bulk of the changes are UI tweaks, new feature support (Solana CLI, Lace Wallet), and hardening fixes found during an internal 'regular AI review'. T…

NUL-byte rejection in EIP-712 typed data parsingC-string conversion hardening against NUL bytesNull-pointer and UTF-8 validation added to UR parsing entry points
6ab436a2by github-actions[bot]+4960−548845 files
No security note in commit
Informational 13 AI analysisMessage 59 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Build fix (#2273)

This commit is a routine build-system and code-formatting fix. It resets cached CMake build options so each build starts from known defaults, makes cbindgen header-generation failures visible instead of silently ignored, runs Rust formatti…

8568a657by stone wang+8−145 files
No security note in commit
Low 44 AI analysisMessage 36 · Opaque
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

limit file count (#2272)

This commit adds a hard cap on how many files the device will list from its SD card when loading multi-signature Bitcoin wallet data. It also tightens up null-pointer and length checks while scanning directories. The likely goal is to prev…

Unbounded directory listing now bounded by FATFS_MAX_FILE_NUMBERNull-pointer guards added for fileName, number, and path parametersLength checks added before copying filenames into caller buffers
de6879c3by stone wang+31−146 files
No security note in commit
Low 46 AI analysisMessage 73 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge pull request #2268 from KeystoneHQ/regular-review-fix

This commit tightens which old-style Bitcoin-like transactions the Keystone hardware wallet will accept. It now rejects raw protobuf Bitcoin (BTC) and Dogecoin (DOGE) legacy UTXO transactions, allowing only Bitcoin Cash (BCH), Dash (DASH),…

Deprecation of raw-protobuf Bitcoin transaction handlingRejection of unsupported legacy UTXO variants at multiple entry pointsShift from coin_code string matching to protobuf variant matching for legacy path eligibility
1c70d3d4by Soralit+134−166 files
No security note in commit
Moderate 61 AI analysisMessage 62 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix: mark legacy utxo transaction as deprecated and disable btc legacy transactions

This commit disables the older, raw-protobuf signing path for Bitcoin and Dogecoin transactions in the Keystone 3 hardware wallet firmware. It keeps the legacy path active only for Bitcoin Cash (BCH), Dash (DASH), and Litecoin (LTC). The c…

Disables a legacy transaction parsing/signing code path for Bitcoin and DogecoinAdds explicit rejection checks before raw transaction parsing, checking, signing, and view routingSwitches discriminator from coin_code string to protobuf transaction variant to prevent spoofing
1fcd2346by Soralit+134−166 files
No security note in commit
Moderate 63 AI analysisMessage 58 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge pull request #2264 from KeystoneHQ/regular-review-fix

This firmware update is a routine 'regular review fix' that hardens how the Keystone 3 hardware wallet checks and displays several cryptocurrency transactions before signing. The most important security changes are: (1) the sign button is …

Sign slider disabled until parse success prevents premature approvalArweave DataItem tag-count mismatch now rejected in pre-checkAvalanche transaction re-validated by type in pre-check, tampered asset ID rejected
87c7e7e2by Soralit+623−20423 files
No security note in commit
Moderate 67 AI analysisMessage 58 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge pull request #2263 from KeystoneHQ/driver-optimize

This commit updates the hardware random number generator (TRNG) driver in a cryptocurrency hardware wallet firmware. It adds detection for a physical fault/attack signal from the TRNG and, if triggered, wipes the random data and aborts via…

Added TRNG fault/attack status detection (TRNG_IT_RNG0_ATTACK)Zeroization of sensitive local buffer and output buffer on TRNG failureAssertion abort on detected TRNG attack condition
a409efe0by Soralit+29−51 file
No security note in commit
Moderate 59 AI analysisMessage 18 · Opaque
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

driver optimzie

This commit updates the hardware random number generator (TRNG) driver in a cryptocurrency hardware wallet firmware. It adds detection for a physical tamper/attack signal from the TRNG chip and, if an attack is detected, wipes the random d…

New check of TRNG_IT_RNG0_ATTACK tamper/attack interrupt statusFailure path now zeroes output and local buffer before abortingAddition of ASSERT guards and secure memset_s usage
25f3d951by ww3512687+29−51 file
No security note in commit
Moderate 61 AI analysisMessage 57 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix: regular ai review fix

This firmware update for the Keystone 3 hardware wallet fixes several security and safety issues found during an internal AI-assisted review. The most important changes are: (1) the signing slider is now disabled until a transaction is ful…

Signing slider disabled until parse success prevents approval of malformed transactionsArweave DataItem tag-count mismatch rejected in pre-check before confirmation pageAvalanche transaction re-validated by type during fingerprint check
edbeae79by soralit+623−20423 files
No security note in commit
High 76 AI analysisMessage 58 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge pull request #2262 from KeystoneHQ/regular-review-fix

This firmware update fixes several security and safety issues found during a regular AI-assisted code review. The most important changes are: (1) Zcash wallet data is now encrypted with a key derived from the wallet seed and a fresh random…

Zcash UFVK encryption key changed from sha256(password) to seed-derived BIP32 keyZcash UFVK IV changed from deterministic seed-derived value to fresh TRNG-generated IV per blobZcash UFVK storage format now uses magic-prefixed blob with embedded IV and rejects legacy blobs
04d942ffby Soralit+1852−52633 files
No security note in commit
High 80 AI analysisMessage 57 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix: regular AI review and fix

This firmware update fixes several security and safety issues found during an internal AI-assisted review. The most important changes are: (1) Zcash wallet data was being encrypted with a key derived from the user's login password and a fi…

Zcash UFVK encryption key changed from sha256(login password) to seed-derived BIP32 keyZcash UFVK IV changed from deterministic seed-derived value to fresh TRNG-generated IV per encryptionNew 'z2' UFVK blob format stores IV with ciphertext; legacy blobs rejected/migrated
776d8832by soralit+1852−52633 files
Vendor flagged security relevance
Moderate 59 AI analysisMessage 58 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge pull request #2260 from KeystoneHQ/replace-lvgl-rand

This commit replaces the on-screen keyboard shuffle and a word-list randomizer so they use the device's true random-number generator (TRNG) instead of LVGL's weaker pseudo-random function. The change is defensive: it removes a source of pr…

Replaced pseudo-random generator with hardware TRNG in security-sensitive shuffle operationsRemoved fixed-range modulo reduction bias source (`lv_rand(0, 2048) % n`)Changed include from LVGL UI library to device TRNG driver in utility code
230abd77by Soralit+8−32 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 candidateMerge pull request #2293 from KeystoneHQ/merge/v3.1.0by stone · 0c0ae467 · Sep 18, 2026 · 300 filesMessage 58 · ThinLow 42Details
Commit message · stone

Merge pull request #2293 from KeystoneHQ/merge/v3.1.0

Merge release v3.1.0

58/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet pathboot or update pathauthentication pathparser or protocol pathmerge-commit duplicate discount
AI analysis · Low 42/100

This is a large firmware release merge (v3.1.0) for the Keystone 3 hardware wallet. The visible changes are mostly a major FreeRTOS kernel upgrade (from v10.x to v11.3.0), build-system improvements, and user-facing feature tweaks such as better IOTA/Cardano transaction parsing and setup reminders. The vendor changelog explicitly says 'Enhanced security policies' and 'Optimized USB functionality,' but no specific vulnerability, CVE, or security bug is described in the commit message or diff. Because the change set is enormous and the actual security-sensitive code differences are not isolated, this commit cannot be confidently classified as a fix for a known exploitable flaw, nor can it be called purely benign. It looks like a routine feature/security hardening release.

Security candidatechore: update ci (#2292)by Soralit · 90d1c789 · Sep 17, 2026 · 1 fileMessage 48 · ThinInformational 15Details
Commit message · Soralit

chore: update ci (#2292)

48/100 · ThinMessage clarity
✓ Subject identifies a change✓ Uses a recognizable type or scope✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
boot or update path
AI analysis · Informational 15/100

This commit only updates a Git submodule pointer in a release-tracking file. The actual code change is a one-line pointer update from one commit hash to another in a file named 'keystone3-firmware-release'. There is no visible security-relevant change in the diff itself, and no description of what the submodule update contains. It appears to be a routine continuous integration or release housekeeping task.

Security candidatechore: update ciby Soralit · a7f6db29 · Sep 17, 2026 · 1 fileMessage 40 · ThinInformational 15Details
Commit message · Soralit

chore: update ci

40/100 · ThinMessage clarity
✓ Subject identifies a change✓ 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 only updates a Git submodule pointer (keystone3-firmware-release) from one commit hash to another. No source code, build scripts, CI configuration, or security-related files are changed in the visible diff. There is no evidence of a security fix or vulnerability.

Security candidaterelease 3.1.0by Soralit · 2b007a29 · Sep 17, 2026 · 300 filesMessage 28 · OpaqueModerate 58Details
Commit message · Soralit

release 3.1.0

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
cryptography-sensitive pathsigning or wallet pathboot or update pathauthentication pathparser or protocol path
AI analysis · Moderate 58/100

This is a large firmware release commit (version 3.1.0) for the Keystone 3 hardware wallet. The most significant change visible in the diff is a major upgrade of the FreeRTOS real-time operating system kernel from version 10.x to 11.3.0, combined with enabling the ARM Cortex-M4 Memory Protection Unit (MPU) and adding a new 'MPU sandbox' subsystem. The changelog describes these as 'enhanced security policies' and 'optimized USB functionality,' but the commit itself does not disclose a specific vulnerability or credit an external researcher. Because the patch is enormous (300 files, tens of thousands of changed lines) and only a small portion of the diff is available, it is impossible to tell from this material alone whether the changes fix a known security flaw or simply harden the architecture. The security relevance is therefore plausible but unverified.

Security candidateMerge release v3.0.8 (#2291)by github-actions[bot] · b5e8f9fc · Sep 17, 2026 · 4 filesMessage 76 · AdequateInformational 15Details
Commit message · github-actions[bot]

Merge release v3.0.8 (#2291)

* chore: update ci

* chore: update version

---------

Co-authored-by: Soralit <44085950+soralit@users.noreply.github.com>

76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
boot or update pathmerge-commit duplicate discount
AI analysis · Informational 15/100

This commit is a routine version-bump merge for release v3.0.8. It only updates changelogs, a Git submodule pointer, and a build version number. There is no code change visible in the diff and nothing that suggests a security fix or vulnerability.

Security candidatepin to new release config (#2285)by Aaron Chen · bc01c889 · Sep 8, 2026 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · Aaron Chen

pin to new release config (#2285)

Co-authored-by: aaronisme <aarondongchen@gmail.com>

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
access controlboot or update path
AI analysis · Informational 15/100

This commit only updates a Git submodule pointer (keystone3-firmware-release) from one commit hash to another. There is no code change visible in the diff, no description of what the new release config contains, and no security-related information provided.

Security candidateupdate the release repo (#2282)by Aaron Chen · 3ac7e802 · Aug 24, 2026 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · Aaron Chen

update the release repo (#2282)

Co-authored-by: aaronisme <aarondongchen@gmail.com>

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
boot or update path
AI analysis · Informational 15/100

This commit simply updates a Git submodule pointer for the project's release repository. There is no visible code change, no description of any security issue, and no indication this is anything other than a routine release-tracking update.

Security candidateMerge release v3.0.4 (#2279)by github-actions[bot] · 6ab436a2 · Aug 12, 2026 · 45 filesMessage 76 · AdequateModerate 59Details
Commit message · github-actions[bot]

Merge release v3.0.4 (#2279)

* fix: regular AI review and fix

* fix: solana transaction scroll

* fix: sol ui fix

* fix: eth ui font

* fix: fix UI issues (#2274)

* fix: fix UI issues (#2275)

* Regular review fix (#2276)

* fix: fix UI issues

* chore: fix font

* add 3.0.4 changelog (#2277)

* fix build (#2278)

---------

Co-authored-by: soralit <soralitria@gmail.com>
Co-authored-by: bianminyan <126669324+bianminyan@users.noreply.github.com>
Co-authored-by: stone wang <35837388+ww3512687@users.noreply.github.com>

76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
cryptography-sensitive pathsigning or wallet pathboot or update pathparser or protocol pathmerge-commit duplicate discount
AI analysis · Moderate 59/100

This is a routine firmware release merge (v3.0.4) for the Keystone 3 hardware wallet. The bulk of the changes are UI tweaks, new feature support (Solana CLI, Lace Wallet), and hardening fixes found during an internal 'regular AI review'. The security-relevant hardening includes: rejecting NUL bytes inside Ethereum EIP-712 typed-data messages, validating NUL bytes before converting Rust strings to C strings, adding null/UTF-8 checks when parsing UR payloads, replacing unsafe strcpy/sprintf with bounded versions, and fixing a format-string bug in a debug LCD print function. There is no public disclosure or CVE tied to this commit, and the vendor does not describe it as a security release.

Security candidateMerge pull request #2263 from KeystoneHQ/driver-optimizeby Soralit · a409efe0 · Aug 6, 2026 · 1 fileMessage 58 · ThinModerate 67Details
Commit message · Soralit

Merge pull request #2263 from KeystoneHQ/driver-optimize

driver optimzie

58/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
seed or entropy pathmerge-commit duplicate discount
AI analysis · Moderate 67/100

This commit updates the hardware random number generator (TRNG) driver in a cryptocurrency hardware wallet firmware. It adds detection for a physical fault/attack signal from the TRNG and, if triggered, wipes the random data and aborts via an assertion. This is a defensive hardening change that makes it harder for an attacker to feed bad randomness into cryptographic key generation, which could otherwise let them guess or recover private keys.

Security candidatedriver optimzieby ww3512687 · 25f3d951 · Aug 6, 2026 · 1 fileMessage 18 · OpaqueModerate 59Details
Commit message · ww3512687

driver optimzie

18/100 · OpaqueMessage clarity
✓ Subject identifies a change! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
seed or entropy path
AI analysis · Moderate 59/100

This commit updates the hardware random number generator (TRNG) driver in a cryptocurrency hardware wallet firmware. It adds detection for a physical tamper/attack signal from the TRNG chip and, if an attack is detected, wipes the random data and aborts. The change appears to be a security hardening fix: the previous driver could keep using random numbers even when the TRNG hardware reported a fault/attack condition.

Security candidateMerge pull request #2262 from KeystoneHQ/regular-review-fixby Soralit · 04d942ff · Aug 6, 2026 · 33 filesMessage 58 · ThinHigh 76Details
Commit message · Soralit

Merge pull request #2262 from KeystoneHQ/regular-review-fix

fix: regular AI review and fix

58/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet pathparser or protocol pathmerge-commit duplicate discount
AI analysis · High 76/100

This firmware update fixes several security and safety issues found during a regular AI-assisted code review. The most important changes are: (1) Zcash wallet data is now encrypted with a key derived from the wallet seed and a fresh random IV, instead of being encrypted with a simple hash of the login password and a fixed seed-derived IV. (2) Ethereum legacy transactions now show a warning when they are not protected against replay attacks. (3) Solana transactions that contain hidden trailing bytes are now rejected before the user can review them. (4) Solana mixed transactions no longer hide unrelated instructions behind a specialized UI; sibling instructions are shown separately. (5) Tron transactions now reject multiple contracts, unsupported contract types, and ignore untrusted token metadata supplied by a host computer. (6) Cosmos delegate/undelegate/redelegate labels were corrected so users see the right addresses. (7) A new paginated message viewer helps users read long Ethereum messages before signing. The commit is described by the vendor as a 'regular AI review and fix' and does not explicitly call itself a security patch, but the changes clearly remove weaknesses that could mislead users or leak sensitive data.

Security candidatefix: regular AI review and fixby soralit · 776d8832 · Aug 5, 2026 · 33 filesMessage 57 · ThinHigh 80Details
Commit message · soralit

fix: regular AI review and fix

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 pathsigning or wallet pathparser or protocol path
AI analysis · High 80/100

This firmware update fixes several security and safety issues found during an internal AI-assisted review. The most important changes are: (1) Zcash wallet data was being encrypted with a key derived from the user's login password and a fixed, predictable IV; it is now encrypted with a key derived directly from the wallet seed and a fresh random IV. (2) Solana transactions that had hidden extra bytes after the real transaction data are now rejected instead of being accepted. (3) Solana mixed transactions (for example a Jupiter swap bundled with a token-account-close instruction) now show all instructions, not just the main one, so a malicious companion instruction cannot hide from the user. (4) Ethereum legacy transactions that do not use EIP-155 replay protection now show a warning on the device screen. (5) Tron transactions no longer trust token-name/decimal overrides sent by the host app, and they now reject multi-contract or unknown-contract transactions instead of silently ignoring parts of what is being signed. There are also many UI-only improvements for Cosmos, Ethereum and Solana message display.

Security candidatefix(simulator): return password error on PIN mismatch in SimulatorLoadAccountSecretby soralit · 6bec6930 · Aug 4, 2026 · 1 fileMessage 85 · StrongInformational 19Details
Commit message · soralit

fix(simulator): return password error on PIN mismatch in SimulatorLoadAccountSecret

SimulatorLoadAccountSecret returned SUCCESS even when the stored password
did not match. This made the duplicate-PIN check (CheckPasswordExisted ->
VerifyAccountPassword) always treat any new PIN as a duplicate of an
existing account, so setting a PIN for the second account and onwards
failed with 'Duplicate PIN code detected'.

Return ERR_KEYSTORE_PASSWORD_ERR on mismatch, matching the real-device
behavior (LoadAccountSecretFromSE returns ERR_KEYSTORE_AUTH on HMAC
failure, which VerifyAccountPassword maps to ERR_KEYSTORE_PASSWORD_ERR).

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

This commit fixes a bug in the firmware's simulator (a software stand-in used for testing, not the real hardware wallet). When checking a stored account password/PIN, the simulator was accidentally returning 'success' even when the password did not match. That caused the wallet to wrongly think every new PIN was already in use, blocking users from creating a second or later account in simulator builds. The fix makes the simulator return a password-error code on mismatch, matching how the real device behaves. It is a functional bug fix in test-only code, not a security vulnerability in the real wallet.

Security candidatechore: remove implementation planby ww3512687 · 4620fe94 · Aug 4, 2026 · 1 fileMessage 47 · ThinInformational 12Details
Commit message · ww3512687

chore: remove implementation plan

47/100 · ThinMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
seed or entropy pathdocumentation-only discount
AI analysis · Informational 12/100

This commit only deletes a planning document from the repository's docs folder. No firmware code, build scripts, or cryptographic logic were changed. The deleted file described a previously completed security-hardening task about removing a weak random-number fallback, but the deletion itself does not alter the product's behavior or security posture.

Security candidatefix: remove insecure PRNG fallbackby ww3512687 · 17c78e30 · Aug 4, 2026 · 3 filesMessage 80 · StrongModerate 64Details
Commit message · ww3512687

fix: remove insecure PRNG fallback

Remove trezor-crypto's unused LCG and weak fallback so device builds must link the platform random_buffer implementation. Keep a simulator-only standard library stub.

Co-authored-by: Nikolaus Heger <nheger@gmail.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
entropy or randomnesscryptography-sensitive pathseed or entropy path
AI analysis · Moderate 64/100

This commit removes a weak, predictable random-number generator that was bundled as a backup inside the firmware's SLIP-39 code. Previously, if the device's proper hardware random source was accidentally left out of a build, the firmware could silently fall back to the weak generator, which would make wallet backup seeds predictable. Now the weak generator is gone for hardware builds, so a missing proper random source causes the build to fail instead of silently producing insecure seeds. The simulator still keeps a simple software-only stub for testing.

Security candidatechore: update ciby soralit · 39cfff13 · Jul 31, 2026 · 1 fileMessage 40 · ThinInformational 10Details
Commit message · soralit

chore: update ci

40/100 · ThinMessage clarity
✓ Subject identifies a change✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
boot or update path
AI analysis · Informational 10/100

This commit is described as a routine CI (continuous integration) update with only one line changed in a release-related file. No code changes affecting wallet security, cryptography, or user funds are visible, and no security relevance is stated.

Security candidatechore: upgrade rust versionby soralit · 82a48133 · Jul 28, 2026 · 21 filesMessage 47 · ThinInformational 15Details
Commit message · soralit

chore: upgrade rust version

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

This commit upgrades the Rust compiler toolchain from one nightly version to a newer one and adjusts code to keep the project building and tests passing. It does not fix a known security bug or change how user funds are protected. Most of the file changes are new unit tests and small formatting fixes needed for the newer compiler.

Security candidatechore: update ciby soralit · 7f2c4423 · Jul 21, 2026 · 1 fileMessage 40 · ThinInformational 10Details
Commit message · soralit

chore: update ci

40/100 · ThinMessage clarity
✓ Subject identifies a change✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
boot or update path
AI analysis · Informational 10/100

This commit is described as a routine CI (Continuous Integration) update with only one line changed in one file. No diff content is available, and there are no verified references suggesting any security relevance. It appears to be a mundane build or release pipeline tweak.

Security candidatefix(zcash): defer checked batch cleanup after signingby Adam Tucker · 3b8995fa · Jul 20, 2026 · 1 fileMessage 62 · AdequateLow 42Details
Commit message · Adam Tucker

fix(zcash): defer checked batch cleanup after signing

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing boundary
AI analysis · Low 42/100

This patch changes when a Zcash batch signing screen frees a sensitive internal data structure. Instead of destroying the data immediately when the page is cleared, it now schedules the cleanup to run after the signing operation has finished. The comment in the code says this prevents the destructor from 'overtaking' the signing task, which suggests the old code could have freed memory while signing still needed it. That kind of use-after-free or premature-free bug can corrupt data or crash the device during a transaction, and in security-sensitive signing code it could theoretically affect signature correctness or leak secrets.

Security candidateRelease Zcash batch review widgets before signingby Adam Tucker · 2982da56 · Jul 18, 2026 · 1 fileMessage 45 · ThinLow 35Details
Commit message · Adam Tucker

Release Zcash batch review widgets before signing

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing boundary
AI analysis · Low 35/100

This commit fixes a potential memory/resource issue in the Zcash batch signing flow on the Keystone 3 hardware wallet. Before opening the signature view, the code now explicitly frees (destroys) the on-screen review widgets. Without this cleanup, the device could run low on memory or leave stale UI objects around while trying to display the signing screen, which might cause a crash or unexpected behavior during a transaction.

Security candidatefix the issue of uvfk not changed if changed passwordby aaron · 6d8e2d9d · Jul 16, 2026 · 4 filesMessage 50 · ThinModerate 64Details
Commit message · aaron

fix the issue of uvfk not changed if changed password

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
cryptography-sensitive path
AI analysis · Moderate 64/100

This commit fixes a bug in the Keystone 3 hardware wallet's Zcash support: when a user changed their login password, the encrypted Zcash 'unified full viewing key' (UFVK) was not re-encrypted with the new password. That meant the stored UFVK could only be decrypted with the old password, which could lock the user out of Zcash functions or, in some edge cases, leave sensitive key material protected by a stale credential. The patch adds a routine to re-derive and re-encrypt the UFVK whenever the password changes, and also repairs stale ciphertext automatically at the next login.

Security candidateReject existing Zcash batch signaturesby Adam Tucker · a50410ac · Jul 14, 2026 · 3 filesMessage 45 · ThinModerate 56Details
Commit message · Adam Tucker

Reject existing Zcash batch signatures

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing boundary
AI analysis · Moderate 56/100

This firmware update changes how Keystone hardware wallets handle Zcash batch signing. Previously, the device might have accepted a transaction request that already contained spend authorization signatures. Now it rejects such requests. The concern is that an attacker could craft a Zcash batch transaction containing signatures from another source and trick the device into including them in its final response, potentially making the device vouch for transactions the user did not actually review and authorize. The patch adds an explicit check to block any incoming Orchard or Ironwood spend authorization signatures in batch mode.

Security candidateScope Zcash shielded signing to selected accountby Adam Tucker · 3d14c7dd · Jul 13, 2026 · 6 filesMessage 45 · ThinModerate 64Details
Commit message · Adam Tucker

Scope Zcash shielded signing to selected account

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Moderate 64/100

This commit fixes a bug in the Keystone 3 hardware wallet's Zcash shielded transaction signing. Previously, when a user reviewed and approved a transaction for one account, the device could accidentally authorize a spend from a different account controlled by the same seed. The patch now checks that every shielded spend belongs to the account the user actually selected, and rejects the transaction if any spend comes from another account. This prevents an attacker or buggy wallet software from tricking the user into signing a spend from an account they did not review.

Security candidatefix(zcash): skip finalized dummy spends during signingby Adam Tucker · 9792998a · Jul 13, 2026 · 3 filesMessage 62 · AdequateLow 43Details
Commit message · Adam Tucker

fix(zcash): skip finalized dummy spends during signing

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Low 43/100

This commit fixes a bug in the Keystone hardware wallet's Zcash signing code. When signing a batch of Zcash transactions that include 'dummy' placeholder spends (zero-value decoy actions used for privacy), the signer could get stuck or fail because it tried to re-sign a dummy spend whose signature had already been finalized and then stripped for transport. The fix tells the signer to skip these finalized zero-value dummy spends, allowing the real spend to be signed normally. The changelog frames it as a fix for batch signing with finalized zero-value dummy spends.

Security candidaterefactor(zcash): rename redacted PCZT signing helperby Adam Tucker · 01bd8e2b · Jul 9, 2026 · 2 filesMessage 62 · AdequateInformational 15Details
Commit message · Adam Tucker

refactor(zcash): rename redacted PCZT signing helper

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

This commit is a simple rename of an internal function from `sign_pczt_to_pczt` to `sign_and_redact_pczt` in the Zcash Rust code. No behavior, logic, or security properties changed; it only makes the function name more descriptive. There is no security issue here.