Attackers have now drained nearly $114 million in bitcoin from more than 709 addresses, exploiting a Coldcard firmware flaw that generated wallet seeds with a fraction of their promised randomness. The first sweep emptied roughly 500 wallets in 25 minutes. The bug entered the codebase in March 2021 and sat in public, open-source view for more than five years. Plenty of people are explaining what happened. The harder question is why nobody caught it, and the answer implicates far more than one line of code.
The bug sat in public for five years
Coldcard’s source code was always available for inspection. “Don’t trust, verify” only works when qualified people actually look, and for five years, effectively nobody did. The timeline around the bug’s introduction deserves attention. In 2020, Coldcard’s firmware carried a GPL open-source license. Two days after a competitor revealed a device building on that GPL code, Coinkite CEO Rodolfo Novak, known as NVK, stated publicly (in a since-deleted tweet) that he regretted choosing GPL. That November, Coldcard adopted a new license with the Commons Clause, whose own FAQ states plainly that the resulting software is no longer open source. A sweeping rewrite followed, and the March 2021 commit that stripped out the last GPL code is the same commit that broke seed generation.