Egy firmware hiba miatt egyes COLDCARD hardveres tárcák előrejelezhető Bitcoin tárca helyreállító kifejezéseket generálhattak, ami akár évekkel a tárcák létrehozása után is veszélybe sodorhatta a felhasználók pénzét.
Ha nem ismernéd: a COLDCARD egy kizárólag Bitcoinra fókuszáló hardveres tárca, amelyet a kanadai Coinkite biztonsági cég gyárt. A készüléket úgy tervezték, hogy a privát kulcsokat távol tartsa az internetre kapcsolt számítógépektől, és támogatja az air-gapped aláírást, a MicroSD-s tranzakciókat, a multisig tárcákat, a biztonsági elemeket és a kockadobáson alapuló helyreállító kifejezés létrehozást.
Mindez azonban csak akkor véd, ha a tárca eleve biztonságos helyreállító kifejezéseket hoz létre. A Block Bitcoin Engineering és Security csapatai, névtelen kutatókkal együttműködve, súlyos véletlenszám-generálási problémát vezettek vissza a COLDCARD firmware-re. A Block technikai elemzése szerint az érintett firmware a STM32 processzor hardveres véletlenszám-generátora helyett determinisztikus szoftveres generátort használt.
A Bitcoin helyreállító kifejezés az a mesterkulcs, amelyből a tárca privát kulcsai és címei származnak. Aki képes ezt újra előállítani, az a COLDCARD birtoklása, a PIN ismerete vagy a visszaállító szavak látása nélkül is hozzáférhet a kapcsolódó pénzhez.
Coinkite: a Mk3 tulajdonosok mozgassák a Bitcoinjaikat
A Coinkite közzétett egy Mk3 biztonsági közleményt, amelyben figyelmezteti azokat a felhasználókat, akik COLDCARD Mk3 eszközön, 4.0.1-es vagy újabb firmware-verzióval hozták létre a helyreállító kifejezést.
A cég szerint a probléma egészen az 5.0.3-as firmware-verzióig jelen volt, ez volt az utolsó kiadás, amely még támogatta a Mk3-at. A kitettség attól a firmware-től függ, amely a helyreállító kifejezés létrehozásakor futott, nem pedig a gyártás időpontjától.

A Coinkite azt javasolja az érintett felhasználóknak, hogy költözzenek át egy új helyreállító kifejezésre, amelyet már nem érintett eszközön generálnak. A cég szerint érdemes az új mentést feljegyezni és ellenőrizni, a COLDCARD kijelzőjén megnézni egy fogadó címet, elküldeni egy kis teszttranzakciót, és csak azután áthelyezni a teljes összeget, ha minden rendben működik.
Újabb firmware telepítése nem javítja visszamenőleg a már létrehozott helyreállító kifejezést. Az sem segít, ha ugyanazt a visszaállító mondatot egy másik hardveres vagy szoftveres tárcába importáljuk, mert az új eszköz ugyanarra az alap titokra épít. Teljesen új helyreállító kifejezést kell létrehozni, és a pénzt az ebből származó címekre kell átküldeni.
Állítólag rossz véletlenszám-generátort használt a firmware
A Block szerint a regresszió 2021 márciusában került be a COLDCARD firmware-be, amikor a tárcagenerálás eltávolodott a külön hardveres véletlenszám-generátortól, és egy olyan függvényt kezdett használni, amely végül a Yasmarang nevű szoftveres tartalékmegoldáshoz futott le.
Ez a generátor a készülék fix azonosítójának egy részéből és időzítő értékekből inicializálta magát. Ezek az adatok ugyan változhatnak, de kriptográfiai szempontból nem számítanak megfelelő véletlen forrásnak.
A Block szerint a tárcagenerálás determinisztikussá válhat, ha az eszközazonosító, az időzítő állapota és a korábbi véletlenszám-hívások ismertek vagy kellően leszűkíthetők. Egy támadó ezután offline módon le tudná gyártani a lehetséges helyreállító kifejezéseket, majd az ezekből származó címeket vagy publikus kulcsokat össze tudná vetni az áldozat tárcájával.
Az ilyen támadás valós költsége attól függ, mennyi információja van a támadónak az eszközről és annak állapotáról. A Block azt is közli, hogy még nem végzett el minden, a jelentésben leírt támadási módszer teljes empirikus tesztelését. Ennek ellenére idő előtt nyilvánosságra hozta az eredményeket, mert a kutatók szerint a sebezhetőséget már aktívan kihasználják.
Block és Coinkite vitázik az újabb modellekről
A Coinkite előzetes elemzése alapján a COLDCARD Mk4, Q és Mk5 nem érintett. A cég vizsgálata még tart, és hivatalos technikai áttekintést tervez közzétenni.
A Block óvatosabban ítéli meg ezeket az újabb eszközöket. A kutatók szerint az Mk4, Q és Mk5 indításkor ugyan biztonságos forrásból származó információt is felhasznál, de ezt az adatot mindössze négy bájtra csökkenti, mielőtt helyreállító kifejezést készít a szoftveres generátor.
Négy bájt legfeljebb 32 bitnyi biztonságos bemenetet jelent. Rögzített generátorállapot és hívástörténet mellett a Block szerint így legfeljebb 2^32 egymástól biztonságosan megkülönböztethető kimeneti sorozat marad, azaz egy támadónak átlagosan körülbelül 2^31 jelöltet kellene kipróbálnia.
Ez messze elmarad attól a védelmi szinttől, amit egy megfelelően generált 256 bites tárcatitoktól elvárnánk. Az utólagos hash-elés nem pótolja azt a véletlenszerűséget, ami eleve hiányzott.
Egyelőre a Mk4, Q és Mk5 modellekkel kapcsolatos állításokat a Blockhoz kell kötni. A Coinkite vitatja, hogy ezek a modellek érintettek lennének, miközben a Block még nem mutatott be minden jelenlegi eszközre kiterjedő, teljes helyreállító kifejezés-visszanyerési támadást.
A passphrase-ek csökkenthetik a kockázatot

A Coinkite szerint azok a Mk3 felhasználók, akik az érintett helyreállító kifejezést erős BIP39 passphrase-zel védték, előzetes elemzés alapján minimális kockázattal néznek szembe. Itt egy, a visszaállító szavakhoz társított extra passphrase-ről van szó, nem a COLDCARD PIN-ről.
Minden BIP39 passphrase külön tárcát hoz létre, beleértve az elgépeléssel megadott passphrase-t is. A Coinkite azt tanácsolja, hogy a passphrase-t a helyreállító kifejezéstől elkülönítve tároljuk, a bevitel után ellenőrizzük a tárca ujjlenyomatát, és soha ne írjuk be weboldalra vagy untRusted eszközre.
Akik nem tudnak azonnal újabb eszközre váltani, azoknak a Coinkite azt javasolja, hogy hozzanak létre egy erős és egyedi BIP39 passphrase-t a Mk3-on, majd utalják át a pénzt az eredeti tárcából a passphrase-zel védett tárcába. A cég ezt átmeneti megoldásnak tekinti, nem pedig a frissen generált helyreállító kifejezésre való átállás végleges alternatívájának.
Haladó felhasználók egy üres Mk3-on, 4.1.9-es firmware-rel, kizárólag kockadobással is létrehozhatnak helyreállító kifejezést. A Coinkite szerint legalább 99 független dobás bevitele egy szabályos hatoldalú kockával, a dedikált importálási opciót használva, megkerüli az érintett véletlenszám-generátort.
Ez az eljárás alig hagy teret a hibáknak. A felhasználóknak ellenőrizniük kell a mentéseket, a tárca ujjlenyomatait és a fogadó címeket, mielőtt bármilyen helyreállító kifejezést törölnének vagy lecserélnének.
Nem csak a tárca helyreállító kifejezések érintettek
A Block szerint ugyanaz a véletlenszám-folyam használhatták papírtárcák privát kulcsaihoz, Seed XOR maszkokhoz, klónozási titkosításhoz, ideiglenes titkosítási kulcsokhoz, Web2FA titkokhoz és generált jelszavakhoz is. A hatás funkciónként eltér, de az alapvető probléma ugyanaz: olyan értékek származhattak jóval kisebb és előrejelezhetőbb halmazból, mint amit a felhasználók feltételeztek.
A hardveres tárcáknak éppen az a feladatuk, hogy megvédjék a privát kulcsokat a támadóktól. A secure elementek, az air gap és az elszigetelt tranzakció-aláírás semmit sem ér, ha a kulcs már a létrejöttekor előrejelezhető volt.
A Coinkite elismerte a Mk3-mal kapcsolatos kockázatot, és arra kéri az érintett felhasználókat, hogy költözzenek át új helyreállító kifejezésre. A nyitott kérdés az, hogy a probléma valóban véget ér-e ezzel a már kifutott modellel, vagy a Block kutatói által állított módon az újabb COLDCARD hardverekre is kiterjed.

