Product1 publisher3 min readPublished
Coldcard owners who held their own keys lost over $100 million to a firmware bug
Coinkite's Coldcard firmware skipped its hardware random number generator, letting attackers brute-force seeds and drain over $100 million in bitcoin. Liquid's later $320 million drain adds node software to the code a bitcoin holder has to trust.
The Product Desk · Product desk

What happened
- Coinkite's coding error sat in Coldcard firmware versions going back to March 2021, so seeds made across those releases were affected.
- The attack worked remotely and emptied thousands of addresses whose owners had kept their keys on offline hardware.
- Bridge nodes running the updated Elements software accepted the fake coins as valid, and the federation's automated signers released real bitcoin.
Compiled by The Product DeskSomething wrong?How this is made
Why it matters
- exposure Owners who generated seeds on the affected firmware are exposed however carefully they stored the backup, since the weakness is in how the seed was made.
- constraint Splitting keys across a federation did not contain a bug in the node software its signers relied on, so buyers of federated setups have to vet that software as well.
- precedent After Mt. Gox and FTX, losses could be blamed on trusting a custodian; these two leave self-custody advocates without that explanation.
Take a Coldcard owner who did everything the self-custody advice asks. The coins were off the exchange, and the keys lived on an offline device, the setup Gizmodo calls the gold standard for holding digital assets [9]. Gizmodo describes the people caught by these exploits as diligent users who followed well-established security practices [10].
What that owner actually did at setup was let the device generate a recovery phrase and write it down [4]. What the security model promised was a secure hardware random number generator picking that phrase. In firmware going back to March 2021, a coding error handed the job to a more predictable software generator instead [2][3]. A weak phrase and a strong one look the same on paper. Nothing in the owner's routine would have shown the difference.
Gizmodo lists what a self-custodian still has to trust: that the hardware is secure, that the firmware has no critical bugs, and that nobody tampered with the device in shipping [11]. Its conclusion is that taking custody yourself does not entirely remove third parties from the picture [12]. Star Heartsong was blunter in a September 10 post on X, arguing that the old slogan about holding your own keys to own your coins no longer sounds the same now that people have held their keys and still lost their coins [15].
Liquid is a different case, and the difference matters to anyone comparing custody models. Gizmodo notes the sidechain, designed by Blockstream, is still custodial. Its protection comes from splitting keys across fifteen federation members, eleven of whom must sign [5]. Those keys were never compromised [6]. The attacker used a consensus bug in Liquid's Elements node software to mint unbacked L-BTC, then cashed it out through SideSwap for about 4,000 bitcoin [7]. Bridge nodes on the updated software accepted the fake coins as valid, and the federation's automated signers released real bitcoin [8].
By Gizmodo's count the two exploits moved somewhere near half a billion dollars without authorization [13]. The figures it gives for each, over $100 million from Coldcard owners and about $320 million from Liquid, add to a little over $420 million [14]. Gizmodo says much of the Liquid money has since been returned but does not give an amount [13]. By bitcoin lost, it does not rank either incident among the most serious in crypto's history [1].
I think anyone setting up self-custody for a company or a family should now list the wallet vendor and its firmware as a counterparty, next to the exchange they left. The tradeoff is setup cost. Each extra vendor or manual approval step added to cut reliance on one codebase is another task someone has to get right on Monday, and another thing to explain on Friday.
Sort each holding on two axes. One is who made the key: a single vendor's code, or sources that can be checked against each other. The other is who triggers a signature: a person reviewing the transaction, or software acting on what a node reports. The Coldcard losses came from the single-vendor row [3]. The Liquid losses came from the software-triggered column [8]. A holding that lands in both is the one to move first.
What to watch
- Whether Coinkite publishes the full list of affected firmware versions and a path for owners whose seeds were generated on them.
- How much of the Liquid money is returned, and whether the federation changes how its signers check peg-outs against node validation.
- Whether other hardware wallet makers publish independent reviews of their random number generation code.