Galaxy Research Report: Mapping the $70M Coldcard PRNG Sweep
Hey everyone,
Just saw the detailed report from Galaxy Research regarding the massive 1,082.65 BTC heist (~$70M) on July 30. It’s a nightmare scenario for any hardware wallet user. The root cause analysis points back to a firmware integration error in March 2021.
The core issue? A routing of seed generation to a deterministic software pseudorandom number generator (PRNG) instead of the hardware TRNG. This effectively made the keys predictable if an attacker could reverse or guess the initial state.
We're talking about 1,196 addresses drained in 41 minutes. That speed suggests the attacker had an automated sweeper already watching the chain for vulnerable addresses.
For those auditing similar devices, checking the entropy source is critical. Here is a basic Python comparison to visualize the risk of relying on standard random vs secrets (analogous to Software PRNG vs Hardware RNG):
import random
import secrets
import time
# Vulnerable: Deterministic Software PRNG
# If the seed is known or time-based, it's game over
random.seed(time.time())
weak_entropy = [random.getrandbits(256) for _ in range(5)]
# Secure: Cryptographically strong (Hardware-like)
strong_entropy = [secrets.randbits(256) for _ in range(5)]
print("Weak (Software PRNG):", weak_entropy)
print("Strong (Hardware TRNG):", strong_entropy)
Has anyone implemented monitoring scripts to detect this specific "sweeping" behavior on legacy wallet clusters? I'm curious about the IOCs associated with the attacker's sweeper logic.
We flagged this activity in our SOC. The sweeper utilized RBF (Replace-By-Fee) aggressively to push transactions through. If you're monitoring, watch for sequential outputs to the same receiving address within minutes.
Here is a KQL query for Sentinel to flag high-velocity outflows:
BitcoinTransactions
| where Timestamp > ago(1d)
| summarize count() by SourceAddress, bin(Timestamp, 1m)
| where count_ > 5
This highlights why I never trust the internal generator alone. I always use 99-dice rolls for manual seed generation on air-gapped machines. If you rely on the device's internal RNG without verification, you're trusting the supply chain implicitly. The Coinkite incident proves that even 'air-gapped' hardware isn't immune to logic bugs.
Verified Access Required
To maintain the integrity of our intelligence feeds, only verified partners and security professionals can post replies.
Request Access