Security

A Firmware Bug Hidden for Five Years? The COLDCARD Scare Puts Seed Phrase Randomness in the Spotlight

A seed phrase of 12 or 24 words should be practically impossible to guess. But if the random numbers behind it aren't really random, even a long seed phrase can be cracked in hours. Bugs like this can hide for years, until the coins start disappearing.

Discussion of randomness in COLDCARD firmware has been building across crypto communities lately. Some holders worry their seed phrases aren't random enough, some have switched wallets overnight, and others think it's an overreaction.

The technical details and the scope of any impact should come from manufacturer Coinkite's official announcements and independent security research, so this article doesn't repeat unverified claims. But the scare has pushed a long-neglected question to the front: a seed phrase is only as safe as the randomness used to create it.

And history shows that randomness bugs can hide for years without holders noticing.

Key takeaways

  • A seed phrase is essentially a random number translated into words: 12 words carry 128 bits of entropy, and 24 words carry 256 bits.
  • If the random number generator is flawed, the real entropy can be far lower than it looks, letting attackers brute-force wallets in bulk.
  • Real cases such as Milk Sad, the Trust Wallet browser extension and Profanity caused real losses.
  • When an advisory appears, check the official notice first: which models, firmware versions and creation dates are affected. Then decide whether you need a new seed phrase.

Why a seed phrase must be truly random

Seed phrase security is ultimately a game of probability
Seed phrase security is ultimately a game of probability

When a wallet creates a seed phrase, it first produces a random number (the "entropy") and then converts it into words using the BIP39 standard.

Seed phrase lengthBits of entropyPossible combinations
12 words128 bitsAbout 3.4 × 10^38
24 words256 bitsAbout 1.2 × 10^77
Flawed generator (example)32 bitsAbout 4.3 billion

With 128 bits of entropy, even every computer on Earth working together could practically never guess a seed phrase. For the full math, read can someone guess your 12-word seed phrase?

That all depends on one condition: the randomness has to be real. If the generator is flawed, for example seeded with only 32 bits, then however long the resulting seed phrase looks, there are only about 4.3 billion possibilities. An ordinary computer may be able to try them all in hours or a day.

Randomness bugs that really happened

WhenIncidentThe flawConsequence
2022Profanity vanity address generatorToo small a random seed space when creating keysMarket maker Wintermute lost about $160 million
2022–2023Trust Wallet browser extensionA flawed random number method in one versionSome wallets created during that window were drained; about $170,000 lost
2023Milk Sad (Libbitcoin Explorer)A command-line tool seeded randomness with 32-bit system timeThe bug existed for years; losses topped $900,000 once it was exploited at scale
2023Randstorm (early BitcoinJS)Weak randomness in some web wallets from 2011 to 2015Researchers warned that wallets created then may be at risk

Note: figures come from public security research and reporting, and losses are approximate as reported at the time.

Milk Sad is the classic "sleeper" bug. The faulty code dated back to around 2016, and researchers traced the root cause only after attackers began draining wallets at scale in 2023. For years, users believed their seed phrases were perfectly safe.

What these cases share: the flaws were in software randomness, not in the seed phrase standard itself. Users couldn't see the problem, and words that "look random" tell you nothing about safety.

How hardware wallets generate randomness

One flawed line of code can put countless seed phrases at risk
One flawed line of code can put countless seed phrases at risk

Mainstream hardware wallets usually rely on a true random number generator built into the chip, and some mix entropy from multiple sources to reduce the risk of one source failing.

Devices like COLDCARD also offer dice-roll seed generation: you roll physical dice and enter the results as a source of entropy. Even if the device's generator had a flaw, enough rolls would still make your seed phrase sufficiently random.

Entropy sourceStrengthLimitation
Chip true random number generatorConvenient, nothing to doYou can't verify it; you rely on the manufacturer
Mixed sourcesStill protected if one source failsStill depends on correct firmware
Your own dice rollsYou control the randomness and can verify it independentlyTedious; too few rolls means too little entropy

Tip: each roll of a six-sided die adds about 2.58 bits of entropy. Reaching 256 bits takes about 99 rolls. A dozen rolls is nowhere near enough.

What to do when you hear about a bug

  1. Read the official advisory first. Confirm which models, firmware versions and seed creation dates are affected. Don't rely on screenshots and secondhand summaries.
  2. Work out whether you're in scope. When was your wallet created, on what device and with which firmware?
  3. If you're affected, generate a brand-new seed phrase on a device you trust and move your funds promptly. Don't import the old seed phrase onto the new device.
  4. Watch for opportunistic scams. Fake "urgent migration" emails and lookalike websites follow every advisory. Any "fix tool" that asks for your seed phrase is a scam.
  5. Add a passphrase. A passphrase isn't part of the seed phrase, so even if the seed's randomness were flawed, an attacker would also have to crack the passphrase.

FAQ

How do I know whether my seed phrase is random enough?

You can't tell by looking. Even a jumble of words can come from a flawed generator. The reliable approach is to follow official advisories and independent security research and check whether your device and firmware version are affected.

Isn't it more random to pick 12 words myself?

The opposite. Human-chosen words follow patterns, carry far less entropy than generated seed phrases and usually fail the checksum. Never invent your own seed phrase.

Is generating a seed phrase with dice safe?

If your device supports it, you do it correctly and you roll enough times, dice let you control randomness independently. Do it somewhere private, never photograph or record it, and dispose of any notes carefully.

After switching wallets, are coins in the old wallet still safe?

If the old seed phrase really has a randomness flaw, those funds could be stolen at any moment. Once you confirm you're affected, move everything to the new wallet promptly, including assets on other chains.

Summary

A randomness bug can hide for years because you can never judge a seed phrase's safety by how it looks. The COLDCARD scare is less about one brand than a reminder to every holder: follow official security advisories, understand where your entropy comes from, add dice-roll randomness when it makes sense and protect your seed phrase with a passphrase.

To learn how a passphrase adds protection, read can a 25th word save you? For the risk of tampered devices, read a hardware wallet with a hidden extra circuit board. This article is for education only and isn't investment advice.

Related reading