Obsługiwane przez
Featured

Wyjaśnienie luki w zabezpieczeniach Coldcard: kto stracił bitcoiny i kto jest zagrożony

30 lipca haker wykorzystał słabe frazy początkowe wygenerowane przez niektóre portfele sprzętowe Coldcard, aby ukraść bitcoiny o wartości około dziesiątek milionów z setek adresów.

NAPISAŁ
UDOSTĘPNIJ
Wyjaśnienie luki w zabezpieczeniach Coldcard: kto stracił bitcoiny i kto jest zagrożony

Najważniejsze wnioski

  • Kradzieże związane z Coldcard doprowadziły 30 lipca do opróżnienia setek portfeli z bitcoinów.
  • Według Coinkite klucze początkowe Mk3 miały entropię na poziomie około 40 bitów zamiast 128.
  • Użytkownicy Coldcard muszą zainstalować poprawione oprogramowanie sprzętowe i wygenerować nowe klucze początkowe przed przeniesieniem środków.

Według dogłębnej analizy przeprowadzonej przez Galaxy Research główna część kradzieży miała miejsce w ramach ściśle skoordynowanej akcji trwającej około 25 minut, natomiast szersza analiza pozwoliła później powiązać około 1 196 adresów i aż 1 083 bitcoinów o wartości prawie 70 milionów dolarów z aktywnością trwającą około 41 minut. Ostateczne dane mogą ulec zmianie, ponieważ śledczy nadal śledzą transakcje w publicznym łańcuchu bloków Bitcoin.

Pięcioletni błąd atakuje portfele Bitcoin na całym świecie

Portfele, których dotyczyła kradzież, należały w większości do długoterminowych posiadaczy, którzy wygenerowali swoje nasiona odzyskiwania za pomocą urządzeń Coldcard z podatnym na ataki oprogramowaniem sprzętowym, wydanym od marca 2021 r. Coldcard to portfel sprzętowy typu air-gapped, wyprodukowany przez kanadyjskiego producenta Coinkite i zaprojektowany w celu izolowania kluczy bitcoin (BTC) od urządzeń podłączonych do Internetu.

Wiele z opróżnionych adresów pozostawało nieaktywnych od lat. Atakujący działał błyskawicznie, płacił podwyższone stałe opłaty transakcyjne i nie pozostawiał żadnych wyjść resztowych, co oznacza, że każdy adres został całkowicie opróżniony. Ten schemat sugerował zautomatyzowaną operację z wykorzystaniem przygotowanej listy kluczy prywatnych, a nie samodzielne przenoszenie środków przez klientów.

Kradzież nie była spowodowana phishingiem, złośliwym oprogramowaniem na komputerze użytkownika, fizyczną kradzieżą urządzenia ani konwencjonalnym zdalnym włamaniem. Przyczyną był błąd oprogramowania sprzętowego, który osłabił losowość stosowaną podczas generowania nasion portfela przez niektóre urządzenia Coldcard. Nasiona te wyglądały normalnie, ale pochodziły ze znacznie węższego zakresu możliwych kombinacji niż obiecano użytkownikom.

Generator liczb losowych Coldcard po cichu zawiódł

Klucz początkowy portfela Bitcoin to tajny ciąg, zazwyczaj wyświetlany jako 12 lub 24 słowa, na podstawie którego portfel generuje swoje adresy i klucze prywatne. Prawidłowo wygenerowany 12-słowny klucz początkowy zawiera 128 bitów entropii – miary technicznej opisującej ogromną liczbę możliwych kombinacji, co sprawia, że odgadnięcie klucza początkowego jest praktycznie niemożliwe.

Urządzenia Coldcard miały uzyskiwać tę losowość z sprzętowego generatora liczb losowych umieszczonego w mikrokontrolerze urządzenia. Komponent ten czerpie z fizycznego szumu elektrycznego, którego zewnętrzny obserwator nie powinien być w stanie przewidzieć.

Jednak podczas migracji bibliotek oprogramowania w 2021 roku firma Coinkite ujawniła, że doszło do pomylenia dwóch funkcji generowania liczb losowych o identycznych interfejsach. Jedna z nich korzystała z właściwego generatora sprzętowego urządzenia. Druga stanowiła słabe oprogramowanie zastępcze przeznaczone dla płyt bez odpowiedniego sprzętu.

Ustawienie konfiguracyjne wyłączało domyślną ścieżkę sprzętową MicroPython, ponieważ firma Coinkite dostarczyła własną nakładkę sprzętową. Oprogramowanie sprawdzało jedynie, czy to ustawienie istnieje, a nie czy jest włączone. Ponieważ ustawienie to istniało, ale miało przypisaną wartość zero, kompilacja zakończyła się pomyślnie, podczas gdy generowanie nasion po cichu przełączyło się na słabszy generator programowy.

Dane fabryczne i synchronizacja zastąpiły prawdziwą losowość

To rozwiązanie awaryjne opierało się w dużej mierze na przewidywalnych informacjach o urządzeniu, w tym na identyfikatorze układu podobnym do numeru seryjnego oraz wartościach zegara wewnętrznego związanych z czasem uruchomienia. Atakujący, który zdołałby zawęzić te dane wejściowe, musiałby przeszukiwać znacznie mniejszy zakres niż 128-bitowy, jakiego można by oczekiwać w przypadku bezpiecznie wygenerowanego nasiona.

Firma Coinkite oszacowała efektywną przestrzeń poszukiwań dla podatnych na atak nasion Mk3 na około 40 bitów przy obecnych założeniach. To wciąż duża liczba możliwości, ale można ją przeszukać za pomocą specjalistycznego sprzętu obliczeniowego, zwłaszcza gdy atakujący może porównać potencjalne nasiona z adresami bitcoinowymi widocznymi w łańcuchu bloków.

Screenshot of the Coldcard Mk3 model.
Zdjęcie modelu Coldcard Mk3.

Późniejsze modele Coldcard, w tym Mk4, Q i Mk5, wprowadziły element losowości pochodzący z modułu bezpieczeństwa. Jednak tylko ograniczona część tej losowości docierała do podatnego na atak generatora, pozostawiając szacunkowo 72 bity efektywnej entropii w nasionach utworzonych przed zainstalowaniem poprawionego oprogramowania układowego. Była to wartość wyższa niż w przypadku modelu Mk3, ale nadal poniżej zamierzonego standardu 128 bitów.

Różnica ta jest podobna do zastąpienia prawdziwie losowej kombinacji zamka kombinacją wyprowadzoną z numeru seryjnego zamka i czasu jego pierwszego włączenia. Wynikowa kombinacja może wyglądać na losową, ale osoba znająca wzór i potrafiąca oszacować informacje początkowe może ją odtworzyć. Wielu użytkowników przechodzi na inne urządzenia, nie tylko z modeli Mk3, ale również z modeli Mk4, Q i Mk5.

Coinkite zaleca użytkownikom utworzenie zupełnie nowych seedów

Firma Coinkite opublikowała zalecenia dotyczące bezpieczeństwa i udostępniła poprawione oprogramowanie sprzętowe po stwierdzeniu aktywnego zagrożenia. Firma poinformowała, że użytkownicy, którzy wygenerowali nasiona na podatnym oprogramowaniu sprzętowym, powinni utworzyć całkowicie nowe nasiona przy użyciu poprawionej wersji i przenieść swoje bitcoiny na adresy kontrolowane przez te nasiona.

Sama instalacja aktualizacji nie wystarczy. Klucz generujący utworzony w wadliwym systemie pozostaje trwale podatny na ataki, ponieważ aktualizacja oprogramowania nie może dodać losowości do już istniejących słów.

Coinkite zaleciło użytkownikom zaktualizowanie urządzenia, wygenerowanie nowego klucza, zweryfikowanie kopii zapasowej i odcisku palca portfela, potwierdzenie adresu odbiorcy, wysłanie niewielkiej transakcji testowej, a następnie przeniesienie pozostałego salda. Użytkownicy powinni zachować starą kopię zapasową do momentu potwierdzenia transferu, ale nie powinni już traktować starego klucza jako bezpiecznego.

Firma wskazała poprawione wersje, w tym Mk3 w wersji 4.2.0 lub nowszej, Mk4 i Mk5 w wersji 5.6.0 lub nowszej oraz Q w wersji 1.5.0Q lub nowszej, wraz z odpowiadającymi im wersjami Edge. Produkty Tapsigner, Opendime i Satscard wykorzystują inny kod i według doniesień nie zostały dotknięte tym problemem.

Dodatkowe zabezpieczenia chroniły niektórych posiadaczy kart Coldcard

Użytkownicy, którzy podczas generowania klucza początkowego dodali wystarczającą liczbę niezależnych rzutów kostką, byli w znacznym stopniu chronieni, ponieważ ich własna losowość przeważyła nad wadliwym wejściem oprogramowania. Coinkite stwierdziło, że co najmniej 50 prywatnych rzutów uczciwą kostką zapewniało odpowiednią ochronę przed tym problemem, choć dodatkowe rzuty mogą zapewnić większy margines bezpieczeństwa.

Silne hasło zgodne ze standardem BIP-39 tworzy również oddzielny portfel, którego nie da się odtworzyć wyłącznie na podstawie słów nasiennych. Portfele z wielokrotnym podpisem, które wymagają kluczy z wielu urządzeń lub lokalizacji przed dokonaniem transakcji bitcoinowej, były w dużej mierze lub całkowicie chronione, gdy podatne na atak nasienie Coldcard stanowiło jedynie jedną część schematu podpisywania.

Środki te były jednak opcjonalne. Wydaje się, że wiele ofiar postępowało zgodnie ze standardowymi zaleceniami dotyczącymi bezpieczeństwa dostępnymi w tamtym czasie: kup renomowany portfel sprzętowy, wygeneruj seed w trybie offline, zabezpiecz kopię zapasową i nigdy nie wprowadzaj jej do urządzenia podłączonego do Internetu.

Coinkite przyjmuje na siebie winę, a debata skupia się na sztucznej inteligencji

Dyrektor generalny Coinkite, Rodolfo Novak, powszechnie znany jako NVK, publicznie przeprosił 31 lipca i oświadczył, że firma przyjmuje pełną odpowiedzialność za awarię oprogramowania układowego. „Przepraszam i jestem zdruzgotany. Nasz zespół jest załamany wczorajszymi wiadomościami” – napisał Novak. Przyznał, że poprawka zabezpiecza nowo utworzone klucze seed, ale nie jest w stanie naprawić kluczy wygenerowanych przy użyciu podatnego na ataki oprogramowania.

Coinkite CEO Rodolfo Novak's article screenshot.
Artykuł z przeprosinami dyrektora generalnego Coinkite, Rodolfo Novaka. Źródło zdjęcia: X.

Novak wyjaśnił, że firma Coinkite opublikuje pełny raport techniczny po zweryfikowaniu szczegółów oraz pomoże poszkodowanym użytkownikom w sporządzeniu zgłoszeń policyjnych, wniosków ubezpieczeniowych lub przeprowadzeniu niezależnych dochodzeń. Ostrzegł również programistów, że narzędzia sztucznej inteligencji (AI) mogą obecnie skanować stare, publicznie dostępne kody w poszukiwaniu ukrytych słabych punktów szybciej, niż są w stanie je wykryć tradycyjne procesy weryfikacyjne.

Coinkite podkreśliło, że musi założyć, iż atakujący wykorzystał AI do zbadania oprogramowania układowego typu open source, choć nie ma dowodów potwierdzających, w jaki sposób luka została odkryta. Firma przyznała również, że niedawny przegląd przeprowadzony przy użyciu wiodącego modelu AI nie wykrył tego problemu. Kilku konkurencyjnych producentów portfeli sprzętowych zwróciło uwagę w mediach społecznościowych, że ich produkty nie są narażone na ten problem.

„Opublikowany niedawno komunikat dotyczący Coldcard Mk3 nie dotyczy firmy Ledger” – poinformowała firma użytkowników serwisu X po incydencie związanym z Coldcard. „Urządzenia Ledger wykorzystują certyfikowany generator prawdziwych liczb losowych (TRNG) wbudowany bezpośrednio w nasz układ Secure Element, generujący pełną entropię 256 bitów dla każdej 24-słowowej tajnej frazy odzyskiwania”.

„Użytkownicy Trezor: wasze środki są bezpieczne” – wyjaśnił w piątek producent portfeli sprzętowych Trezor. „Niedawny problem z Coldcard ogranicza się do ich własnego, niestandardowego oprogramowania układowego oraz sposobu, w jaki niektóre z ich urządzeń generowały losowość. Trezor nie korzysta z tego kodu”.

Konto Trezor X dodało:

„Zawsze łączyliśmy ze sobą wiele niezależnych źródeł losowości (sprzęt urządzenia + host + elementy zabezpieczające w nowszych modelach). Bardzo przepraszamy wszystkich, którzy stracili bitcoiny”.

Na co powinni zwrócić uwagę użytkownicy Coldcard

Tożsamość atakującego pozostaje nieznana, a skradzione bitcoiny mogą w każdej chwili zostać przeniesione z adresów konsolidacyjnych. Śledczy nadal pracują nad ustaleniem, ile podatnych na atak kluczy początkowych zostało faktycznie wygenerowanych, jaka ilość bitcoinów pozostaje narażona oraz czy atakujący zidentyfikował już dodatkowe portfele o dużej wartości. Jednak Coinkite może nie dysponować zbyt wieloma informacjami na temat dawnych właścicieli.

„Zabawna broń obosieczna: Coinkite usuwa wszystkie dane klientów po 120 dniach, aby zabezpieczyć się przed wyciekami danych” – poinformował na X współzałożyciel Casa, Jameson Lopp. „Oznacza to, że nie są w stanie skontaktować się z klientami, którzy w ciągu ostatnich 5 lat kupili podatne na atak karty Coldcard, aby ostrzec ich o tej luce”.

X screenshot of the pseudonymous open-source bitcoin developer calle.
Pseudonimowy programista bitcoinowy zajmujący się oprogramowaniem open source, znany jako calle, podzielił się swoimi przemyśleniami na ten temat. „Jest mi naprawdę przykro z powodu wszystkich poszkodowanych, zwłaszcza tych, którzy być może właśnie stracili oszczędności całego życia. Najgorsze jest to, że zrobili wszystko jak należy” – napisał calle na X.

Incydent ten będzie również sprawdzianem dla firmy Coinkite – czy uda jej się przywrócić zaufanie do Coldcard oraz czy producenci portfeli sprzętowych wprowadzą bardziej rygorystyczne, niezależne kontrole procesu generowania fraz seed. Dla użytkowników priorytet jest prostszy: każdy, kto wygenerował klucz seed na podatnym oprogramowaniu sprzętowym bez silnej, niezależnej entropii generowanej przez kostki, hasła lub ochrony wielopodpisowej, powinien uznać go za naruszony i ostrożnie przenieść środki do nowo wygenerowanego portfela.

Poza tą druzgocącą kradzieżą użytkownicy bitcoina w całej społeczności biją na alarm i zachęcają innych do rozpowszechniania tej informacji, zanim kolejne podatne na ataki portfele zostaną opróżnione.

Ten artykuł został przetłumaczony z języka angielskiego przy użyciu sztucznej inteligencji. Oryginalna wersja angielska jest źródłem autorytatywnym; tłumaczenia automatyczne mogą zawierać nieścisłości, zwłaszcza w terminologii prawnej i regulacyjnej.