The Code Was Public for Five Years
Coldcard shipped five years of hardware wallets that made guessable keys, with the source code open the whole time. People read it. Nobody tested it on a schedule.
The box that makes the number
A hardware wallet is a small box you buy so the keys to your bitcoin never touch the internet. That is the whole product. You pay for it so you don't have to trust anybody else with the one number that has to stay unguessable.
Coinkite disclosed on 30 Jul 26 that Coldcards built since a firmware update in 2021 were making that number badly. The box has a chip in it whose only job is producing real randomness. A wiring mistake in the software meant the box quietly used a plain software substitute instead, running mostly off predictable stuff like its own clock. A key is only strong because nobody can guess it. Weaken the guessing and the lock is decoration.
Thefts started the same day. Galaxy Research counted more than $130 million gone out of over 5,200 addresses by 7 Aug 26, in four separate waves.
Somebody looked, nobody checked
Coldcard's source code has been public the whole time. Anybody could read it. People did read it. Five years of releases went out the door and the flaw went with every one of them.
That is the part worth sitting with. Openness is supposed to be the safeguard here, and it was sitting there for five years, and it didn't work. Coinkite ran its own review pass over that code a few weeks before this broke and missed it too.
Reading is not testing. The device handed back a working wallet every single time. It never threw an error and it never failed to boot, so nobody had a reason to look twice. A weak key and a strong key look exactly alike from the outside and there is no holding one up to the light to tell.
The reviews have to be systematic. Somebody reading the code when they get around to it is not a review.
Systematic means it runs on a schedule whether anybody feels like it that day or not, and it covers the same ground the same way every time. It also has to be able to come back with a bad answer. A check that can only pass isn't doing anything.
Test it before it ships
The fix Coinkite shipped is small and it makes the case better than any argument I could write. The patch adds a check to the build itself. If the random number wiring is wrong, the build fails. Nobody has to remember or notice. The product can't get out the door in the broken state.
That is what security testing before shipping actually looks like. A gate the thing can't walk through.
Where the machine helps
Coinkite says an automated tool most likely found this flaw. Five years of human eyes on public code did not, and the company's own recent pass did not either. That's a real result and it's worth saying plainly. Machines are good at combing old code for the exact kind of quiet mistake a person skims past at two in the afternoon.
Now the other half of it. 1Password's Off-By-1 Labs reported at Black Hat this month that 54 percent of the AI-generated vulnerability patches they studied did not fix the vulnerability they were aimed at. Better than half of them were wrong.
So put the machine on finding and keep a person on fixing, and verify either way. Run it against your own repositories on a schedule you don't get to skip. For a small shop that is available today and it costs almost nothing, which makes it hard to justify not doing.
If you own one
Updating the firmware doesn't save you. The seed generated under the old software is still weak and it stays weak. Generate a brand new seed on the fixed firmware and build a new wallet. Move the funds over with a small test transaction first.
If you added 50 or more dice rolls when you set the device up, or you put a passphrase on top of the seed, you came through this fine.
And if you ship code or firmware to anybody, go find the one silent failure in your build that nobody would catch, and put a check on it this week that fails loud.
Works Cited
- Technical Deep Dive into the Entropy Issue (Coinkite)
- Predictable RNG Fallback and 32-Bit Reseed in COLDCARD Firmware (Block Engineering)
- A five-year-old Coldcard bug let hackers guess bitcoin wallet keys, Coinkite confirms (Blockhead)
- Coldcard Losses Climb Past $130 Million as a Fourth Wave of Thefts Hits Self-Custody Wallets (Blockhead)
- AI-Generated Patches Fail Half the Time (Dark Reading)