Horké drama studené karty
Když jsem se v roce 2018 na Hackers Congressu dnes již neexistující Paralelní Polis bavil s bitcoinovým analytikem, maximalistou a bývalým derivátovým obchodníkem Tone Vaysem (možná to bylo ještě o něco dříve na jednom z jeho školení, ale na tom teď koneckonců moc nezáleží), doporučoval mi tehdy přechod na tehdejší novinku mezi pokročilými hardwarovými peněženkami. Jmenovala se Coldcard (model dnes označovaný jako Mk1) a stála za ní prakticky neznámá kanadská společnost Coinkite.
Vcelku nevzhledná hardwarová peněženka měla něco, co tehdy mezi výrobci HW krypto peněženek nenabízel nikdo jiný, ani český Trezor. Byla takzvaně air-gapped, tedy zcela izolovaná od internetu, s malou hardwarovou numerickou klávesnicí, LED obrazovkou s nízkým rozlišením a s doslova transparentním designem, takže bylo perfektně vidět, co vše se skrývá uvnitř. Uživatel tak mohl podepisovat transakce, aniž by musel zařízení spojit s počítačem přes USB, což je u počítače připojeného k internetu vždy potenciální bezpečnostní risk.
Krom toho peněženka obsahovala jeden secure element čip, což v té době ještě nebylo vůbec samozřejmé, a jeden zdroj entropie (náhodnosti) pro bezpečné vygenerování seedu. Tehdy jsem odolal a zůstal u dnes podobně zastaralé a ještě mnohem nedokonalejší (například bez vlastního secure element čipu) hardwarové peněženky KeepKey a později se vydal jinou cestou. Kdybych tak neučinil, možná dnes používám pozdější modely Coldcard a v těchto chvílích hořce lituji.
Je každopádně trochu ironie, že dnes je právě zastaralý model Mk1 dost možná jediným modelem Coldcard peněženek, u kterého mohou jeho uživatelé mít relativně klidný spánek. Netýká se jej totiž kritická chyba v ne tak úplně náhodném generátoru náhody při generování seedu, která vedla k dost zásadní zranitelnosti a k dnešnímu dni ukradeným bitcoinům za více než 130 milionů dolarů, pokud můžeme věřit odhadům společnosti Galaxy Research.
Co se přesně stalo?
Minulý čtvrtek společnost Coinkite upozornila na „přetrvávající problém ovlivňující seedy generované na zařízeních Coldcard model Mk3“ a varovala uživatele, kteří vygenerovali seed pomocí Mk3 ve verzi 4.0.1 nebo jakékoli následné verze, že jejich finanční prostředky mohou být ohroženy, a doporučila migraci. Nic ale ještě nenasvědčovalo, že je tu ve skutečnosti masivní bezpečnostní průšvih daleko přesahující tento konkrétní model peněženky.
Společnost, která si od začátku zakládá na hardcore bezpečnostních přístupech, dokonce obrušovala hrany svého prohlášení tvrzením, že na problém upozorňuje jen „z důvodu mimořádné opatrnosti“.
Později firma své varování rozšířila na další verze firmwaru Mk4, Mk5 a Coldcard Q a vydala nouzové aktualizace pro všechny uvedené modely. Mezitím v pátek 31. 7. analytická společnost Galaxy Research přišla s tvrzením, že z téměř 1200 adres uživatelských peněženek zmizelo více než 1000 BTC v hodnotě přibližně 70 milionů dolarů, a spojila událost se zranitelností ovlivňující hardwarové peněženky Coldcard.
Rodolfo „NVK“ Novak, generální ředitel Coinkite, se následně omluvil a uvedl, že společnost převzala „plnou odpovědnost za chybu firmwaru“. Počet úspěšných útoků na peněženky nicméně od té doby narůstá a vše nasvědčuje tomu, že vícero hackerů zneužívá stejné zranitelnosti.
Novak dále zmínil, že zranitelnost mohla být odhalena pomocí AI, a označil incident za „střízlivou realitu nového paradigmatu umělé inteligence“. Varoval, že kontrola kódu pomocí AI dokáže identifikovat skryté chyby mnohem rychleji než zkušení bezpečnostní experti, což útočníkům umožňuje zneužívat slabiny, zejména ve veřejně dostupném kódu. U společnosti, která si u svých produktů tolik zakládala na doslova paranoidním bezpečnostním přístupu, je to ale stejně docela ironie.
Problém lze dostopovat až do roku 2021, kdy se do firmware Coldcard peněženek dostala chyba v procesu generování seedové fráze. Spočíval v tom, že výsledná entropie (náhodnost) byla mnohem slabší, než se myslelo, což teoreticky (a jak se nyní ukazuje, také prakticky) umožňovalo zpětné odvození privátních klíčů.
Trik byl v tom, že zatímco měla peněženka generovat seed za pomoci hardwarového generátoru náhodných čísel, kvůli chybě nebo lajdáctví od března 2021 používala místo tohoto jen náhradní softwarový generátor, který „náhodnost“ stavěl jen na sériovém čísle čipu, časovači od zapnutí a hodinách (jejich oscilátor byl navíc údajně u nejzranitelnějšího modelu, tedy Coldcard Mk3, vypnutý).
Výsledkem bylo, že místo původně předpokládaných 128 až 256 bitů entropie dodávala jen 40 až 72 bitů, a hlavně výrazně snížená náhodnost výstupu. V praxi tak bylo možné na současném výkonném hardwaru projít všechny možné kombinace v řádu několika dnů. A někdo to zjevně zkusil a nebyl sám.
Mezi lety 2021–2026 uživatelé vytvářeli své nové peněženky na problematických verzích. A protože blockchain veřejně ukazuje zůstatky adres, útočníci mohli zpětně identifikovat peněženky se slabším seedem, na které se vyplatí zaútočit. Na samém konci července 2026 pak útočníci začali systematicky útočit na peněženky, přičemž první velká vlna útoků měla proběhnout ve čtvrtek 30. července a měla trvat zhruba 41 minut.
Začátek srpna 2026 pak přinesl pokračování útoků a nárůst škod. Snadné to neměl ale ani nový nouzový firmware, například uživatelé modelu Mk4 si stěžovali na „bricknutí“ (znefunkčnění) peněženky po aktualizaci. Zároveň připomeňme, že ohrožení prostředků závisí na firmwaru, který byl spuštěn v době vytvoření seedu, nestačí tedy provozovat novější verzi firmware, ale je potřeba zranitelné prostředky přemigrovat na nový seed.
Zajímavé je, že prehistorická peněženka Coldcard Mk1 z úvodu článku se katastrofě zcela vyhnula. Trik opět leží v software. Firmware peněženky se totiž přestal aktualizovat někdy v roce 2019 s verzí firmwaru v3.0.6. Díky tomu ji zranitelnost, která se do repozitáře kódu dostala až v březnu 2021 s verzí 4.0.0, nikdy nepotkala. Protože Mk1 tuto aktualizaci nikdy neobdržel, jím generované seedy jsou paradoxně bezpečnější, respektive zůstávají strukturálně v pořádku.
I když jde v daném případě o celkem kuriózní selhání jednotlivců a potažmo celé jedné firmy, hack Coldcard představuje i reputační ránu pro segment self custody hardwarových peněženk pro běžné koncové uživatele jako takový. A prach z něj si bude sedat ještě dlouho. Uživatelé se totiž nyní začnou mnohem více ptát a je možné, že řada z nich tuto dosud doporučovanou praxi self custody alespoň dočasně opustí.
A i když počáteční panika časem pomine, výrobci hardwarových peněženek se budou muset rychle přizpůsobit AI zrychlenému tempu objevování zranitelností.
Selhání Coinkite připomíná způsob, jak se německá armáda za druhé světové války vypořádala se slavným francouzským opevněním, Maginotovou linií. Špičkové opevnění jednoduše obešla, podobně jako dnešní hackeři celý dlouhý seznam paranoidních bezpečnostních postupů výrobce Coldcard, a zaútočila jednoduše tam, kde žádná obrana nebyla, respektive v našem případě byla silně nedostatečná.
Hackeři zneužili slabinu v jediné funkci, kterou měla Coldcard mít dokonale opevněnou, a ani k tomu peněženku nepotřebovali nikdy držet v ruce. Žádný malware ani phishing, jen čistá matematika.