Hyökkäys eteni järjestelmällisesti. Ensimmäisten kymmenen minuutin aikana katosi noin 30 miljoonaa dollaria, kun suurimmat lompakot otettiin ensin kohteiksi. Yksi varastetuista lompakoista sisälsi noin 1,8 miljoonan dollarin arvosta bitcoinia . Fyysisiin Coldcard-laitteisiin ei tarvinnut koskea lainkaan: hyökkääjä rekonstruoi lompakoiden siemenet etänä .
Erillisessä, aiemmin raportoidussa hyökkäysaallossa noin 594 BTC:tä, arvoltaan lähes 38 miljoonaa dollaria, siirrettiin noin 500 yhden allekirjoituksen lompakosta 25 minuutin aikana . Galaxy Research, Chainalysis ja Blockin tekniset tiimit yhdistivät tapahtumat samaan Coldcard-haavoittuvuuteen .
Blockin Bitcoin Engineering and Security -tiimi, jota johti insinööri Clay Garrett, havaitsi, että hyökkääjä käytti maksullista tiliä tunnetulla lohkoketjupalveluiden tarjoajalla. Tilin avulla hän pystyi hakemaan tietoja haavoittuvista osoitteista ja tehostamaan varojen tyhjennystä .
Ketjussa näkyi poikkeuksellinen toimintamalli: saman heikkouden jakaneita osoitteita tyhjennettiin epätavallisen nopeasti ja peräkkäin. Tämä antoi tutkijoille vihjeen siitä, että hyökkääjä oli ensin kartoittanut sopivat kohteet ja käyttänyt palveluntarjoajan infrastruktuuria niiden kyselyyn. Block kertoi löytäneensä jälkiä, jotka yhdistivät operaattorin toiminnan suoraan kyseiseen infrastruktuuriin .
Garrett kuvasi havaintoa poikkeuksellisen tarkaksi, jopa tilitasolle ulottuvaksi . Käytännössä analyysipalvelu tarjosi hyökkääjälle tehokkaan tiedustelukanavan: sen avulla voitiin selvittää, mitkä osoitteet oli luotu haavoittuvalla firmwarella, ja asettaa varakkaimmat lompakot etusijalle .
Haavoittuvuus sai alkunsa maaliskuussa 2021 tehdystä firmware-muutoksesta, joka tuli käyttöön Coldcard Mk3:n firmwareversiossa 4.0.1 osana siirtymää Bitcoin Coren libsecp256k1-kirjastoon .
Virheen ydin oli build-konfiguraatiossa käytetty makro MICROPY_HW_ENABLE_RNG. Coldcardin tuotantokokoonpanossa makron arvoksi asetettiin nolla, koska laitteella oli oma erillinen laitteistopohjainen satunnaislukugeneraattorin eli TRNG:n toteutus. libngu-kirjasto ei kuitenkaan tarkistanut, oliko makron arvo nollasta poikkeava. Se tarkisti vain, oliko makro ylipäätään määritelty .
Koska makro oli olemassa, kirjasto oletti laitteistopolun olevan käytössä. Todellisuudessa satunnaisuus haettiin MicroPythonin ohjelmallisesta, deterministisestä Yasmarang-generaattorista rng_get()-funktion kautta . Laitteen tarkoitettu TRNG jäi siis käytännössä pois siementen luonnista.
Seurauksena siementen tehokas entropia putosi arviolta 32–40 bittiin, vaikka tarkoitus oli tarjota vähintään 128 bitin turvallisuustaso. Tämä tarkoitti noin neljän miljardin mahdollisen siemenen hakutilaa – määrää, joka on nykylaitteistolla käytännössä läpikäytävissä . Ilman käyttäjän itse lisäämiä nopanheittoja tai BIP39-salasanaa luodut siemenet olivat erityisen alttiita rekonstruoinnille .
Coinkiten toimitusjohtaja Rodolfo Novak, joka tunnetaan myös nimellä NVK, myönsi myöhemmin virheen: ”Asetin MICROPY_HW_ENABLE_RNG-arvoksi nollan, koska ajattelin, ettemme tarvitse kumpaakaan versiota, mutta se ei toimi niin” .
| Haavoittuvat | Alustavan analyysin mukaan suojaavat |
|---|---|
| Coldcard Mk3, firmware 4.0.1–5.0.3 | Mk4, Q ja Mk5 |
| Siemenet, jotka luotiin ilman käyttäjän omia nopanheittoja tai BIP39-salasanaa | Siemenet, joissa käytettiin käyttäjän lisäämiä nopanheittoja tai salasanaa |
Coinkite laajensi myöhemmin varoitustaan lisäanalyysin jälkeen koskemaan myös tiettyjä Mk4-, Mk5- ja Q-laitteiden firmwareversioita. Yhtiö julkaisi hätäpäivityksiä kaikille vaikutuksen piirissä oleville malleille . Käyttäjien kannattaa siksi tarkistaa oman laitteensa tarkka malli ja firmwareversio suoraan Coinkiten ajantasaisesta turvallisuusohjeesta.
Tärkein huomio on, että firmware-päivitys ei yksin riitä. Jos siemen luotiin haavoittuvalla firmwarella, se on edelleen vaarantunut myös päivityksen jälkeen .
Käyttäjän tulee:
Jo varastetut bitcoin-varat ovat käytännössä mennyttä. Tutkijoiden mukaan varoja on koottu yhteen ja niitä saatetaan pestä tavanomaisten sekoituspalveluiden kautta .
Käyttäjän itse lisäämät nopanheitot tai BIP39-salasana saattoivat estää siemenen rekonstruoinnin ja suojata osan muuten haavoittuvalla firmwarella luoduista lompakoista . Tämä ei kuitenkaan poista tarvetta tarkistaa lompakon tila ja noudattaa valmistajan ajantasaista ohjetta.
Coldcard-tapaus ei ollut Bitcoinin kryptografian murtuminen. Se oli muistutus siitä, että lompakon turvallisuus riippuu myös siitä, miten laite luo ja käsittelee salaiset avaimet. Vahva laitteisto ei auta, jos ohjelmistovirhe ohjaa avainten luonnin heikkoon satunnaislähteeseen.
Tapaus horjuttaa yhtä itsehallinnan eli self-custodyn keskeistä lupausta: käyttäjä voi hallita omia avaimiaan ilman ulkopuolista säilyttäjää. Samalla se osoittaa, ettei ”kylmäsäilytys” ole aukoton turvakerros. Binance-perustaja Changpeng Zhao eli CZ varoitti julkisesti, että jopa verkosta eristetty laitteistolompakko voi muuttua turvattomaksi firmware-virheen vuoksi .
Tämä voi voimistaa keskustelua siitä, onko itsehallinnan tekninen ja operatiivinen vastuu kohtuullinen keskivertosijoittajalle. Osa analyytikoista on arvioinut, että vastaavat tapaukset voivat ohjata sijoittajia takaisin säänneltyjen säilyttäjien ja Bitcoin-ETF-rahastojen pariin .
Virhe pysyi avoimessa lähdekoodissa yli viisi vuotta. Se osoittaa, että avoimuus helpottaa riippumatonta tarkastusta, mutta ei itsessään takaa, että jokainen kriittinen integraatiovirhe havaitaan ajoissa. Osa tutkijoista onkin nostanut esiin tekoälyavusteisen automaattisen auditoinnin mahdollisena lisäkeinona ihmisten tekemän koodikatselmoinnin rinnalle – erityisesti hienovaraisten satunnaislukugeneraattorin integraatiovirheiden löytämiseksi .
Coldcardin tapaus paljasti myös itsehallinnan yhden keskitetyn riskipisteen. Jos laitevalmistajan yksi firmware-versio tuottaa heikkoja siemeniä, kaikki kyseisellä versiolla luodut lompakot voivat joutua samanaikaisesti vaaraan. Säilytyspalvelut voivat osittain hajauttaa tällaista riskiä avainten jakamisella ja monen osapuolen laskennalla eli MPC:llä, mutta ne tuovat mukanaan omat vastuu- ja luottamusriskinsä.
Teknisen yksityiskohtaisen kuvauksen tarjoavat Blockin insinööriraportti ja Coinkiten tekninen taustaselvitys .