Ingen Coldcard-enheter ble fysisk stjålet eller manipulert. Angrepet ble gjennomført eksternt ved at angriperen rekonstruerte wallet-seedene som var generert med svak tilfeldighet .
En tidligere, separat bølge av samme utnyttelse tappet rundt 594 BTC, verdt cirka 38 millioner dollar, fra omtrent 500 single-signature-lommebøker i løpet av 25 minutter rundt 01:31 UTC . Galaxy Research, Chainalysis og Blocks teknologiteam har uavhengig knyttet tyveriene til den samme sårbarheten i Coldcard .
Block-teamet, ledet av ingeniøren Clay Garrett, fant ut at angriperen brukte en betalt konto hos en kjent leverandør av blokkjedeinfrastruktur for å identifisere og spørre ut sårbare adresser . Leverandøren er ikke navngitt.
Mønsteret på blokkjeden ga etterforskerne et viktig spor: midler ble flyttet i uvanlig høyt tempo fra adresser som hadde den samme svakheten. Block fant spor som koblet aktiviteten direkte til leverandørens infrastruktur .
Tjenesten fungerte i praksis som et rekognoseringsverktøy. Den gjorde det mulig å kartlegge hvilke adresser som sannsynligvis var opprettet med sårbar firmware, og deretter gå etter de mest verdifulle målene først . Garrett beskrev funnene som «ekstraordinært spesifikke, helt ned på kontonivå» .
Feilen ble introdusert i en firmware-endring fra mars 2021, i forbindelse med overgangen til Bitcoin Cores kryptografibibliotek libsecp256k1 . En feil i byggkonfigurasjonen gjorde at Coldcard ikke brukte den dedikerte maskinvarebaserte generatoren for tilfeldige tall, kalt TRNG, i STM32-brikken. I stedet falt systemet tilbake på MicroPythons deterministiske programvaregenerator Yasmarang .
I produksjonskonfigurasjonen var makroen MICROPY_HW_ENABLE_RNG satt til null fordi Coldcard hadde en egen innpakning for maskinvaregeneratoren. Biblioteket libngu sjekket imidlertid bare om makroen var definert, ikke om den var satt til en verdi som faktisk aktiverte funksjonen .
Dermed tolket biblioteket konfigurasjonen feil. Det koblet seg til MicroPythons programvarebaserte rng_get() i stedet for Coldcards maskinvaregenerator .
Resultatet var at den effektive entropien – altså mengden uforutsigbarhet i en ny seed – ble redusert til omtrent 32–40 bits, mot de tiltenkte 128 eller flere bitene. Det tilsvarer rundt fire milliarder mulige seed-verdier, et søkeområde som moderne maskinvare kan gjennomsøke . Seeds som ble generert uten egne terningkast fra brukeren eller en BIP39-passfrase, var derfor særlig utsatt .
Coinkite-sjef Rodolfo Novak, også kjent som NVK, erkjente senere feilen: «Jeg satte eksplisitt MICROPY_HW_ENABLE_RNG til null fordi jeg trodde vi ikke trengte noen av versjonene, men det er ikke slik den fungerer» .
| Berørt | Ikke berørt i Coinkites første analyse |
|---|---|
| Coldcard Mk3 med firmware 4.0.1 til og med 5.0.3 | Mk4, Q og Mk5 |
| Seeds opprettet uten brukerens egne terningkast eller BIP39-passfrase | Seeds opprettet med egne terningkast eller passfrase |
Etter videre analyse utvidet Coinkite sikkerhetsvarselet til også å omfatte enkelte firmwareversjoner for Mk4, Mk5 og Q. Selskapet lanserte samtidig hasteoppdateringer for alle berørte modeller .
Saken treffer selve kjerneløftet i self-custody: at man kan oppbevare sine egne nøkler og stole på at en hardware-lommebok beskytter dem mot både digitale og fysiske angrep .
Den viser først og fremst at kaldlagring ikke er det samme som feilsikker lagring. Binance-grunnlegger Changpeng Zhao, kjent som CZ, advarte offentlig om at selv luftgapte hardware-lommebøker kan bli usikre som følge av firmwarefeil .
For vanlige investorer handler debatten derfor ikke lenger bare om hvem som kontrollerer nøklene, men også om hvem som har ansvaret for å kontrollere programvaren, oppdage feil og gjennomføre sikre migreringer. Noen analytikere mener hendelsen kan føre flere brukere tilbake til regulerte oppbevaringstjenester og Bitcoin-ETF-er .
At feilen ble liggende i åpen kildekode i mer enn fem år, er samtidig en påminnelse om at åpen kildekode alene ikke er en sikkerhetsgaranti. Enkelte forskere mener automatiserte revisjoner med kunstig intelligens kan supplere menneskelig kodegjennomgang og fange opp subtile feil i integrasjonen av tilfeldighetsgeneratorer .
Hendelsen synliggjør også en systemisk risiko: Når én leverandør gjør en feil i entropien, kan alle lommebøker som ble opprettet med den aktuelle firmwareversjonen bli sårbare samtidig. Depotløsninger forsøker delvis å redusere denne typen risiko gjennom blant annet nøkkeldeling og flerpartsberegning.
For en teknisk gjennomgang, se Blocks ingeniørrapport og Coinkites tekniske bakgrunnsartikkel .