Preventing Bitcoin's Next ColdCard-Style Attack
On July 29th, 594 BTC was stolen. Over 500 wallets were drained. And this is an early estimate, as the situation is still unfolding. Some reports suggest as much as 1,082 BTC may have been stolen.
It appears that the drained wallets were generated on ColdCard Mark 3 devices, though that aspect of the heist is still unfolding.
What’s becoming clear is this: Hackers did not break encryption. They found an exploit in how the firmware for certain devices generated seed phrases which were not truly random.
It’s very likely hackers spent months if not longer generating seed phrases using the same method older ColdCards use, and testing them for wallets with balances.
When the hackers found enough wallets with coins to make it worth exposing their method, they drained all of the wallets in one fell swoop.
On other words, if hackers drained a wallet yesterday, it’s likely they had access to that wallet for weeks, if not months. But they waited to drain the wallets in order to prevent anyone from knowing their wallets might be in danger.
How To Protect Yourself
1. Switch to a fully open source hardware wallet.
When ColdCard switched their code from being open source to “source verifiable” they blocked other developers from being able to legally use their code. This decreased the number of developers regularly reading their code.
Fewer devs reading the code meant fewer experts finding errors in the code, which meant fewer errors being found and fixed.
Hackers found an error and they exploited it to vicious effect. Over 500 wallets were drained.
Fuck ColdCard and their “source verifiable” code.
Never trust your Bitcoin to code that is not fully open source. No exceptions.
If you’re a beginner, Trezor is by far the best choice. Their firmware is fully open source and probably has the most developers’ eyes on it, which means issues are found and fixed.
If your skills are more advanced, I strongly recommend ShieldSigner. ShieldSigner is a fork of SeedSigner that adds encryption features and other advanced security. It is fully open source, but I stress that it is advanced.
2. Move your coins to a seed phrase you generate yourself, but take great care to do this right.
One way to generate your own seed phrase is to print the BIP39 word list. Print the list with a word on each line, and a blank line between. Use scissors to cut the paper into strips with a word on each strip. Put the strips in a giant popcorn bowl.
Pick a word. Write it down. Put the strip back in the bowl and stir them up to scramble ‘em. Pick another word.
Do this 23 times.
Enter those 23 random words in your hardware wallet and let it generate the 24th word for you. The 24th word is a checksum, meaning, it mathematically confirms the seed phrase is valid. It’s safe to let a hardware wallet generate the last word for you. With a 24 word seed phrase, there are usually only 7 or 8 words that can form a valid checksum... meaning... once you enter the first 23 random words, the 24th word will be one of only 7 or 8.
Do not pick words you like. It is very important to use random words. Randomness keeps your Bitcoin safe. The ColdCard hack happened because hackers found an error that prevented seeds generated using certain ColdCard firmware from being random. That meant they could find wallets because they had fewer seeds to search.
Realistically, a truly random seed phrase can’t be hacked.
Non-random seed phrases are hackable. ColdCard just proved it.
Never trust a seed phrase generated by code. Make your own. Do it by hand. But do it right. Make it random. No exceptions.
This method eliminates an entire class of failures that lead to disaster: bugs, backdoors, or implementation mistakes in software RNGs.
The security of a wallet is only as strong as the randomness used to create it. People suck at randomness, but errors in code can lead to flaws in randomness that enable hackers to find wallets.
Make your own seed phrase, but do it right to guarantee randomness.
P.S. What about using dice rolls? Using dice to generate your own entropy is fine IF you use at least 100 dice rolls and IF you check the wallet generated by dice rolls on two different kinds of hardware wallets, to confirm you got the same seed phrase both times.
3. Use a passphrase.
Wallets were drained in the ColdCard exploit because those wallets didn’t use a passphrase. A passphrase prevents someone who finds your seed phrase from finding any coins.
Here’s how.
A wallet is generated using entropy.
If you only use a seed phrase, that seed phrase is the entropy for your wallet. Anyone who finds your seed phrase can steal your wallet. These hackers had to have tested billions of seed phrases to find wallets with coins.
If you use a seed phrase and a passphrase, the seed phrase and passphrase are the entropy for your wallet. If a hacker is hunting for wallets, they won’t find anything when they test your seed phrase, because that wallet isn’t where your coins are.
A seed phrase generates a wallet.
A seed phrase and a passphrase generate a totally different wallet.
Here’s the catch: This wallet is based on every word in your seed phrase and every character in your passphrase. If you change anything, you’ll generate a totally different wallet, which means you could lose your coins.
Here’s how to generate a passphrase safely: Use random words, all in lowercase, with a space between each word. Best practice: Use 6 words or more.
Do not use wacky characters or symbols. You want a passphrase you can easily read and correctly enter every time.
Using a passphrase prevents seed phrase hunters from getting your coins.
4. Create Strong Backups And Store Them Securely.
Through the years, a lot of Bitcoin has been lost because people didn’t write down their seed words. “It’s in the hardware wallet. I’m good.” No, you’re catastrophically wrong. Back in my early days of being a Ledger user (never again!) a borked firmware update wiped out my wallet. I had to restore my wallet from scratch. That was fine since I’d written down my seed words, but anyone who didn’t got hosed, and it was their own fault.
Write your seed phrase on paper. Make a metal backup in case the paper gets damaged. Write your passphrase on paper. Make a metal backup in case the paper gets damaged. Store these items somewhere a thief cannot find them. Best practice: Store them separately.
Believe it or not, Bitcoin has been lost because coffee got spilled. Paper backups aren’t a reliable long term solution. Metal backups are.
5. Test Everything To Avoid Future Disasters.
Before sending coins to a new wallet, save a copy of the first address, Then wipe out the wallet and manually restore it from scratch using the seed phrase and passphrase (or multisig) to confirm you get the same first address. Doing this confirms you can restore your wallet from scratch if anything goes wrong. Do this before sending any coins to your wallet.
Please!
I am literally begging you to take the security of your Bitcoin seriously.
I care so much about this that I literally spent a year writing a novel about a Bitcoin thief in order to encourage people to think about what they tell people and how they secure their seed phrases. That’s an entirely different kind of theft than the exploit we learned about yesterday, but it’s important to understand too.
My novel is titled Five Dollar Wrench, and I encourage you to read it.
It’s up to us to help each other to stay safe.



