Coldcard-exploit: Deterministische PRNG Leegde $88M aan BTC

Op 1 augustus 2026 werden ongeveer 1.196 bitcoin-adressen in een gecoördineerde sweep leeggehaald. Geen phishing. Geen ondertekende kwaadaardige PSBT. Geen gebruikersfout in de traditionele zin. De Coldcard-exploit die ongeveer $88 miljoen aan BTC wegsloot, heeft op het moment van de diefstal geen enkel apparaat aangeraakt, aldus de berichtgeving van CoinDesk over het incident.
De oorzaak is erger dan welke analyse ik ook in de eerste 24 uur voorbij zag komen. Het betrof een firmware-fout in een hardware wallet die in 2021 werd uitgebracht en stilletjes de hardware true-random-number generator verving door een softwarematige pseudo-willekeurige routine. Elke seed die onder die build werd gegenereerd, was deterministisch. Elk adres dat van die seeds was afgeleid, was in principe vooraf berekbaar voor iedereen die de bug reverse-engineerde.
Dat is geen hack. Dat is een vertraging van vijf jaar tussen commit en gevolg.
Wat de Coinkite-firmwarebug eigenlijk deed
De defecte build, zoals uitgebreid beschreven door The Hacker News, routeerde entropie-aanroepen via een software-PRNG die werd gevoed door een kleine, makkelijk te raden toestand in plaats van de hardware-RNG van de SE-chip. Gebruikers hadden geen manier om de omwisseling te detecteren. Het apparaat startte op, toonde de verwachte instellingsschermen, produceerde een seed van 24 woorden en zag er identiek uit aan een correct gegenereerde wallet.
De seeds die het produceerde, lagen binnen een doorzoekbare ruimte van misschien een paar miljard mogelijkheden. Dat is geen wallet. Dat is een loterijbriefje.
Toen de aanvaller (of, waarschijnlijker, de onderzoeker die dit ontdekte zonder verantwoorde openbaarmaking) op 1 augustus begon de ruimte af te speuren tegen de UTXO-set, duurde de leeghaaloperatie uren, niet maanden.
Waarom het getal van 1.196 leeggemaakte bitcoin-adressen ertoe doet
1.196 is klein in absolute zin en enorm in signaalkracht. Het bakent de populatie af van gebruikers die een seed hebben aangemaakt in dat specifieke firmware-venster en deze nooit hebben geroteerd. Dat is een toetsbare, falsifieerbare bewering over de omvang van de schade, en de analyse van TechSpot bevestigt dat de getroffen apparaten teruggaan op een korte leveringsperiode.
Als je je seed hebt aangemaakt op andere firmware, of als je hebt geroteerd na een firmware-update, is er hoogstwaarschijnlijk niets aan de hand. Als je je seed op die versie hebt aangemaakt en nooit hebt verplaatst, was je al uitgegeven, je wist het alleen nog niet.
Een stille bijzonderheid: sommige geleegde UTXO's stonden al sinds 2021 onaangeroerd. Vijf jaar lang "mijn sleutels, mijn munten," en de sleutels waren nooit echt van jou.
Het deterministische PRNG Bitcoin-probleem is oud en blijft terugkeren
Deze klasse bugs heeft een lange, beschamende geschiedenis. Android's SecureRandom kostte mensen in 2013 op dezelfde manier BTC. De Debian OpenSSL PRNG-bug uit 2008 lamlegde SSH-sleutels twee jaar lang voordat iemand het opmerkte. Elke generatie leren we opnieuw dat entropie het enige is wat je niet kunt controleren door naar de uitvoer te staren.
Een goed gevormd willekeurig 256-bits getal en een deterministisch 256-bits getal zien er bij inspectie identiek uit. Je moet de bron controleren, niet het voorbeeld. Dat is het hele spel.
Hardware wallets verkopen het idee dat het secure element dit voor jou regelt. Wanneer de firmware het SE omzeilt, heb je alle frictie van cold storage zonder enige garanties. Het slechtste van beide werelden.
Self-custody vs ETF is niet het debat dat mensen denken
Dit is mijn mening, en ik sta er volledig achter: de discussie over self-custody versus ETF is geframed als ideologie, terwijl het eigenlijk een toeleveringsketenvraag is.
Een spot BTC ETF heeft één aanvalsoppervlak waar ik me zorgen over maak: de operationele beveiliging van de bewaarder. Dat oppervlak is controleerbaar door toezichthouders, verzekerbaar, en bemand door mensen wier fulltime taak het is om geen munten te verliezen. Als het misgaat, schrijft iemand een cheque.
Self-custody heeft een langere keten: chipfabrikant, firmware-buildpijplijn, release-ondertekening, aanvoerroute, OPSEC van de eindgebruiker, back-uphygiëne. Als een schakel faalt, is er geen cheque. De Coldcard-leegloop is het Terra-moment voor die these, niet omdat self-custody dood is, maar omdat het maximalistische "bewaar gewoon je eigen sleutels"-verhaal volwassen moet worden.
Beide modellen kennen echte risico's. Doen alsof een van beide risicovrij is, dat is wat 1.196 adressen heeft leeggetrokken.
Wat er na het Coldcard-exploit daadwerkelijk verandert
Een paar dingen waarvan ik denk dat ze zullen (en moeten) verschuiven:
- Reproduceerbare firmware-builds worden een basisvereiste. Als je de binary niet vanuit de broncode kunt herbouwen en byte-voor-byte kunt vergelijken, vertrouw je op een handtekening, niet op een codebase.
- Entropie-attestatie na generatie. Het apparaat zou een bewijs moeten ondertekenen dat een bepaalde seed afkomstig is van de SE, niet van software. Dit is niet moeilijk. Coinkite zou het binnen een kwartaal kunnen uitbrengen.
- Onafhankelijke seed-validatiechecks. Tools van derden die, zonder je seed te zien, kunnen verifiëren dat het afleidingspad uitkomt in een verdeling die consistent is met echte willekeur.
- Verzekeringsproducten voor self-custody. Niet de parodievorm. Echte acceptatie die gecertificeerde firmware vereist en de dekking bijwerkt naarmate builds verouderen.
Niets hiervan maakt hardware wallets overbodig. Het maakt ze enterprise-grade, wat ze altijd beweerd hebben te zijn.
De ongemakkelijke parallel voor de rest van ons
Bij LCX besteden we een onevenredig grote hoeveelheid engineeringtijd aan zaken die voor gebruikers onzichtbaar lijken: HSM-sleutelceremoniën, deterministische buildpijplijnen, entropie-audits op elk codepad dat een privésleutel aanraakt. Het is saai werk. Het is ook het verschil tussen een krantenkop en een gewone dinsdag.
Het Coldcard-incident komt op dezelfde manier binnen als de uitspraken van de OpenZeppelin-CEO over DeFi-audits eerder dit jaar. De audit-infrastructuur die we hebben geërfd, was ontworpen voor een wereld waarin de code die je uitrolde ook de code was die je draaide. Dat is niet langer de wereld waarin we leven, als dat ooit zo was.
Cold storage zou het saaie, correcte antwoord zijn. Het blijkt dat saai veel meer onderbouw vereist dan we hebben toegegeven.