Retroactive Grant Application - Ledger Zcash App Vulnerability Disclosure: Memo Crash and Device Wipe (GHSA-376f-cc2v-g94c)

GitHub application: Retroactive Grant Application - Ledger Zcash App Vulnerability Disclosure: Memo Crash and Device Wipe (GHSA-376f-cc2v-g94c) · Issue #106 · Financial-Privacy-Foundation/ZcashCoinholderGrantsProgram · GitHub
Hi all, I’m Rowan (piatoss3612 on GitHub). I’m asking coinholders for $37,500 for a completed vulnerability disclosure in Ledger’s official Zcash app.

Summary

In September I found that the Zcash app on Ledger devices (version 3.9.3) crashed whenever a shielded transaction carried a memo with any character outside plain ASCII: an emoji, Korean text, an accented letter, even a line break. The crash happened before the review screen, so there was nothing for the user to reject. On my own Ledger Stax it did more than crash. The device rebooted into factory setup and had to be restored from the recovery phrase.

I traced the root cause, verified a fix and reported it privately to Ledger on Sep 21. About 13 hours later Ledger shipped the fix in 3.9.4 for all five device models and published the advisory, GHSA-376f-cc2v-g94c, at Critical severity, crediting me as the reporter. That was two days before Ledger announced native shielded Zcash support, so users arriving with the launch installed the fixed app.

Why it mattered

  • Ordinary input triggered it. Anyone writing a memo in a non-Latin script, adding an emoji or pressing Enter would hit it.
  • Someone else could trigger it. A payment request (a zcash: URI or QR code) carries a memo chosen by the payee, and wallets prefill it for the payer.
  • Funds were at stake. A user without a tested recovery-phrase backup would have lost access to their funds.

Ledger’s regression test for the memo I reported now carries the comment “These five bytes are what wiped the reporter’s device” (source).

Why I’m asking coinholders

The Zcash app is not among the apps covered by Ledger’s bug bounty program, and Ledger told me that no separate reward process applies. ZCG’s bounty program did not cover Ledger apps and had already closed.

Why $37,500

I used the payout table of the former ZCG Security & Vulnerability Disclosure Initiative as a reference, as earlier security applications here have. A Ledger device app is outside that table’s categories. The closest one is Supporting Infrastructure, which is capped at High with a base payout of $37,500, and the table lists “Non-distributed denial of service against an individual node or wallet” among its High examples. I am not asking for the table’s optional bonus.

Disclosure

I work as a frontend engineer at Vizor, a Zcash wallet that supports Ledger signing. I’m applying as an individual, with Vizor’s knowledge and support, and the award would go to me personally. Any application Vizor submits to this program for its wallet work is separate and does not cover this finding.

3 Likes

I wanna personally vouch for @piatoss3612 grant.

This could have been catastrophic bug where all it took to completely wipe a user’s hardware wallet is:

  1. Ask users to connect a hardware wallet (Multiple ways to make this look benign, as connecting the wallet tends to be a low-risk action)
  2. Ask user to sign a malicious payload

The factory reset of the device did NOT require user action beyond connecting the wallet. Simply requesting a signature from the user was sufficient.

I consider this high risk because the vulnerability does not predicate on any form of remote access to user’s computer, user installing a malicious software, or other typical assumptions and guaratees users expect when using a hardware wallet.

This appeared to have slipped through both the development and the third party security audit, which was part of the $300,000 + $80,000 that Ledger has received to build out the official Zcash app.

We’re very lucky that @piatoss3612 spent the extra time to manually verify all the edge cases, and caught the bug very early into the release. I believe that 10% of the Ledger app development cost as a retroactive grant is extremely reasonable given the potential impact of the bug.

1 Like