
Co znajdziesz w tym artykule?
Wprowadzenie do problemu / definicja
Bezpieczeństwo portfeli sprzętowych dla kryptowalut zależy nie tylko od fizycznej izolacji kluczy prywatnych, ale również od jakości procesu ich tworzenia. Kluczowym elementem jest generator liczb losowych wykorzystywany podczas tworzenia seeda, czyli zestawu danych stanowiących podstawę do odtworzenia całego portfela. Jeśli źródło losowości jest przewidywalne lub błędnie zaimplementowane, atakujący może odtworzyć klucze prywatne bez potrzeby przejmowania samego urządzenia.
Właśnie taki scenariusz dotyczy ujawnionego problemu w wybranych wersjach firmware portfeli COLDCARD. Według analiz badaczy oraz komunikatów producenta, wada w obsłudze RNG mogła sprawić, że część seedów była generowana z użyciem przewidywalnych danych, co otworzyło drogę do masowej kompromitacji środków użytkowników.
W skrócie
Ujawniona podatność została powiązana z falą kradzieży bitcoinów szacowaną na około 88,6 mln USD. Problem nie polegał na klasycznym zdalnym włamaniu do portfeli, lecz na osłabieniu mechanizmu tworzenia seedów. W praktyce oznacza to, że napastnicy mogli odtwarzać możliwe kombinacje danych wejściowych, wyliczać odpowiadające im klucze i porównywać je z adresami widocznymi w blockchainie.
- problem dotyczył procesu generowania seeda, a nie samego podpisywania transakcji,
- atak mógł być prowadzony całkowicie offline aż do momentu transferu środków,
- sama aktualizacja firmware nie wystarczała, jeśli seed powstał wcześniej w podatnym środowisku,
- najbezpieczniejszym działaniem była pełna migracja aktywów do nowo utworzonego portfela.
Kontekst / historia
Sprawa zyskała rozgłos po zaobserwowaniu serii niemal jednoczesnych transakcji opróżniających portfele w zautomatyzowany sposób. Badacze zwrócili uwagę na charakterystyczny wzorzec działania: identyczne parametry opłat, szybkie przenoszenie środków oraz brak typowych oznak ręcznej obsługi. Tego rodzaju aktywność wskazywała, że przestępcy nie zdobywali dostępu do pojedynczych urządzeń jeden po drugim, lecz korzystali z wcześniej przygotowanego narzędzia umożliwiającego hurtowe przejmowanie środków.
W toku dalszych analiz źródło problemu powiązano z błędem integracyjnym w firmware portfeli COLDCARD. Producent opublikował komunikat bezpieczeństwa, wskazując zakres podatnych wersji oraz zalecane działania naprawcze. Równolegle niezależni analitycy zaczęli łączyć techniczne szczegóły błędu z obserwowanymi wcześniej kradzieżami bitcoinów.
Analiza techniczna
Sednem problemu był błąd powodujący, że oprogramowanie w określonych warunkach nie korzystało z właściwego sprzętowego generatora liczb losowych mikrokontrolera, lecz przełączało się na deterministyczny mechanizm programowy. Taki fallback nie zapewniał poziomu entropii wymaganego do bezpiecznego tworzenia seedów kryptograficznych.
Jeżeli seed powstaje na podstawie danych przewidywalnych, takich jak identyfikatory sprzętowe czy wartości związane z czasem działania urządzenia, napastnik nie musi łamać kryptografii Bitcoina. Wystarczy, że odtworzy możliwą przestrzeń seedów, wygeneruje odpowiadające im klucze i adresy, a następnie porówna wyniki z publicznie dostępnymi danymi blockchain. Po odnalezieniu zgodności może podpisać transakcję i przejąć środki.
- wygenerowanie możliwych seedów na podstawie przewidywalnego wejścia,
- wyliczenie kluczy prywatnych i adresów dla każdej kombinacji,
- porównanie rezultatów z adresami obserwowanymi w sieci Bitcoin,
- potwierdzenie poprawnego dopasowania,
- automatyczne przeniesienie środków na adresy kontrolowane przez napastnika.
Istotne jest, że wada nie dotyczyła wyłącznie bieżącego stanu urządzenia, lecz momentu jego inicjalizacji. Oznacza to, że użytkownik mógł zaktualizować firmware i nadal pozostawać zagrożony, jeśli jego seed został wygenerowany wcześniej w podatnej wersji oprogramowania. W takim przypadku jedynym skutecznym środkiem zaradczym pozostaje utworzenie nowego seeda w bezpiecznym środowisku i migracja aktywów.
Z opublikowanych informacji wynika, że problem obejmował wybrane wersje firmware dla modeli Mk2, Mk3, Mk4, Mk5 oraz Q. Producent zaznaczył również, że seedy generowane z dodatkową, niezależną entropią, na przykład przy użyciu prawidłowo wykonanego rzutu kośćmi, nie są uznawane za zagrożone wyłącznie tym konkretnym błędem. Podobnie dodatkowa fraza BIP-39 może utrudnić skuteczną eksploatację, jednak nie zastępuje konieczności oceny ryzyka związanego z samym seedem bazowym.
Konsekwencje / ryzyko
Najpoważniejszym skutkiem podatności jest pełna utrata kontroli nad aktywami. W przeciwieństwie do incydentów polegających na wycieku danych lub lokalnym obejściu zabezpieczeń, tutaj potencjalny skutek jest bezpośredni: osoba trzecia może odzyskać klucz prywatny i legalnie z perspektywy sieci podpisać transakcję opróżniającą portfel.
Ryzyko ma charakter systemowy i wyjątkowo niebezpieczny. Blockchain jest publiczny, więc przestępcy mogą potwierdzać poprawność odtworzonych seedów bez kontaktu z ofiarą i bez wzbudzania alarmu. Atak jest również łatwy do automatyzacji, a jego skala może obejmować tysiące portfeli. To sprawia, że nawet pojedynczy błąd w implementacji losowości może przełożyć się na wielomilionowe straty.
Z perspektywy użytkownika szczególnie groźne jest fałszywe poczucie bezpieczeństwa. Portfel sprzętowy kojarzy się z odpornością na zdalne ataki, jednak bezpieczeństwo takich urządzeń zależy również od jakości firmware, procesu inicjalizacji oraz prawidłowości użytej entropii. Jeśli którykolwiek z tych elementów zawiedzie, fizyczna izolacja kluczy nie zapewni pełnej ochrony.
Rekomendacje
Użytkownicy i organizacje korzystające z portfeli sprzętowych powinni potraktować ten incydent jako wyraźne ostrzeżenie dotyczące znaczenia jakości RNG i procedur inicjalizacji. W praktyce najważniejsze jest nie tylko usunięcie podatnej wersji firmware, ale również ocena, czy aktualnie używany seed nie został wygenerowany w warunkach obniżonej entropii.
- zidentyfikować model urządzenia oraz używaną wersję firmware,
- sprawdzić, czy seed został utworzony w okresie objętym podatnością,
- zaktualizować urządzenie do wersji naprawczej wskazanej przez producenta,
- wygenerować nowy seed po aktualizacji, najlepiej z dodatkową niezależną entropią,
- utworzyć i bezpiecznie przechować nową kopię zapasową,
- wykonać testową transakcję przed pełną migracją środków,
- przenieść wszystkie aktywa ze starego portfela do nowego,
- rozważyć używanie silnej i unikalnej frazy dodatkowej tam, gdzie jest to uzasadnione operacyjnie,
- wdrożyć procedury audytu obejmujące kontrolę firmware, testy RNG i przegląd procesu inicjalizacji.
Dla producentów sprzętu kryptograficznego jest to także ważna lekcja projektowa. Mechanizmy fallback związane z losowością powinny być traktowane jako obszar krytyczny i objęte rygorystycznym code review, testami bezpieczeństwa oraz analizą skutków awarii. Cicha degradacja z generatora sprzętowego do przewidywalnego generatora programowego nie może być akceptowalnym zachowaniem w systemie odpowiedzialnym za ochronę kluczy prywatnych.
Podsumowanie
Incydent związany z portfelami COLDCARD pokazuje, że nawet dobrze zaprojektowane rozwiązania sprzętowe mogą zostać osłabione przez pojedynczy błąd w implementacji firmware. Problem nie wynikał ze złamania kryptografii Bitcoina, lecz z osłabienia procesu generowania seedów, co w praktyce mogło umożliwić napastnikom odzyskiwanie kluczy prywatnych i zautomatyzowaną kradzież środków.
Najważniejszy wniosek jest jednoznaczny: aktualizacja oprogramowania to tylko pierwszy etap reakcji. Jeśli seed powstał w podatnym środowisku, konieczna może być pełna migracja do nowego portfela utworzonego po usunięciu błędu. W świecie bezpieczeństwa kryptowalut jakość entropii pozostaje fundamentem całego modelu zaufania.
Źródła
- https://www.bleepingcomputer.com/news/security/coldcard-wallet-rng-flaw-likely-linked-to-88-million-bitcoin-theft/
- https://blog.coinkite.com/rng-vulnerability-and-security-notice/
- https://engineering.block.xyz/blog/understanding-the-coldcard-rng-vulnerability
- https://x.com/GalaxyHQ/status/1951117725674105209
- https://www.chainalysis.com/blog/coldcard-wallet-rng-vulnerability-bitcoin-theft/