AktualnościKryptoBłąd niskiej entropii w Coldcard skłania posiadaczy Bitcoinów do ponownej oceny zaufania do portfeli sprzętowych

Błąd niskiej entropii w Coldcard skłania posiadaczy Bitcoinów do ponownej oceny zaufania do portfeli sprzętowych

Autor: Cointelegraph·

Najważniejsze informacje

  • Atakujący ukradli ponad 100 milionów dolarów w Bitcoinach, wykorzystując podatność niskiej entropii w portfelach sprzętowych Coldcard, która umożliwiała brute-force prywatnych kluczy.
  • Podatność pojawiła się w wersji firmware 4.0.1 wydanej w marcu 2021 roku, gdy sprzętowy generator losowości STM32 został zastąpiony przez generator pseudolosowy MicroPython Yasmarang.
  • Według szacunków Coinkite urządzenia Mk2 i Mk3 generowały seedy z około 40 bitami entropii, a Mk4, Mk5 i Q z około 70 bitami, co jest znacznie poniżej 128 bitów wymaganych dla bezpiecznej 12-wyrazowej frazy seed.
  • Użytkownicy, którzy dodali dodatkową entropię z rzutów kośćmi lub użyli hasła BIP-39 z niestandardową ścieżką wyprowadzania, byli chronieni przed exploitem.
  • Coinkite opublikował oficjalne ostrzeżenie dotyczące generowania seeda dla dotkniętych urządzeń, a jako bezpieczniejsze alternatywy promowane są różne metody fizycznej entropii, w tym rzuty kośćmi i papierowe tabele lookup.
Błąd niskiej entropii w Coldcard skłania posiadaczy Bitcoinów do ponownej oceny zaufania do portfeli sprzętowych

W następstwie ujawnienia poważnej podatności związanej z niską entropią w portfelach sprzętowych Coldcard — powiązanej z publicznie obserwowanymi kradzieżami, które rozpoczęły się 30 lipca — posiadacze Bitcoinów ponownie oceniają założenia dotyczące zaufania leżące u podstaw ich konfiguracji samodzielnej kontroli nad środkami. Atakujący wykorzystali ten błąd do brute-force prywatnych kluczy, co doprowadziło do kradzieży BTC o wartości ponad 100 milionów dolarów.

Coldcard, produkowany przez Coinkite, był powszechnie uznawany za jeden z najbardziej skoncentrowanych na bezpieczeństwie portfeli sprzętowych w ekosystemie Bitcoina, promowany szczególnie ze względu na konstrukcję air-gapped oraz obsługę zaawansowanych funkcji, takich jak multisig i przepływy pracy PSBT. Naruszenie tego wizerunku zwiększyło uwagę poświęcaną temu, w jaki sposób dostawcy portfeli sprzętowych implementują i utrzymują swoje najbardziej krytyczne z punktu widzenia bezpieczeństwa ścieżki kodu.

Jak działał błąd entropii w Coldcard

Urządzenia Coldcard były wyposażone w pozornie działające STM32 „true random number generators” (TRNG), zaprojektowane tak, aby opierać się na procesach fizycznych w celu tworzenia nie do odgadnięcia fraz seed. Jednak istotna podatność miała zostać wprowadzona, gdy twórca Coldcard, NVK, rozpoczął przepisanie firmware w ramach przejścia projektu z modelu wolnego oprogramowania na licencji GPL do modelu tylko do odczytu.

Począwszy od wersji firmware 4.0.1, wydanej w marcu 2021 roku, urządzenia używały generatora pseudolosowego Yasmarang firmy MicroPython zamiast prawidłowo wykorzystywać sprzętowy RNG STM32. To odstępstwo skutecznie ominęło sprzętowe źródło entropii. Generowanie liczb losowych pozostaje fundamentalnie trudnym problemem w informatyce, dlatego tworzenie bezpiecznych, nie do odgadnięcia kluczy prywatnych musi zawsze w pewnym stopniu opierać się na zewnętrznych procesach fizycznych. Odejście od licencji GPL ograniczyło również możliwość bieżącego audytowania zmian firmware przez niezależnych programistów — napięcie, które społeczność open-source portfeli sprzętowych od dawna wskazuje jako ryzyko systemowe.

Analitycy powszechnie określali użycie Yasmarang jako preprogramowany mechanizm awaryjny. Coinkite, producent stojący za Coldcard, zakwestionował tę charakterystykę w niedawnym poście na X.

Możliwość, że Coldcard domyślnie korzystały z oczywiście niebezpiecznej metody generowania seeda, wywołała na X spekulacje, czy błąd był celowo umieszczonym backdoorem. Dziennikarz śledczy zajmujący się Bitcoinem Hodlnaut zasugerował, że błąd wynikał z nieostrożnych praktyk programistycznych i prób tłumienia błędów poprzez arbitralne zmiany kodu.

Według własnych szacunków Coinkite urządzenia Mk2 i Mk3 generowały seedy zaledwie z około 40 bitami entropii, podczas gdy modele Mk4, Mk5 i Q osiągały około 70 bitów. Obie wartości są znacznie poniżej 128 bitów wymaganych dla bezpiecznej 12-wyrazowej frazy seed.

Powiązane: Hakerzy Coldcard transferują 64 BTC i 200 ETH do kryptomixerów

Prawdopodobieństwo przejęcia danego portfela zależało od tego, czy użytkownik dodał dodatkową entropię z rzutów kośćmi, albo użył hasła BIP-39 w połączeniu z niestandardową ścieżką wyprowadzania.

James O’Beirne uruchomił następnie cktripwire, stronę internetową wykorzystującą adresy pułapkowe, aby identyfikować konfiguracje portfeli, które atakujący aktywnie opróżniają.

Coinkite opublikował również oficjalne ostrzeżenie dotyczące generowania seeda dla dotkniętych urządzeń.

Jak entropia fizyczna ochroniła niektóre portfele

Eksploit Coldcard ponownie dobitnie przypomniał jedną z podstawowych zasad społeczności Bitcoina: nie ufaj, weryfikuj.

Użytkownicy, którzy nie polegali na nieprzejrzystym elemencie sprzętowym do generowania entropii w najbardziej krytycznym z punktu widzenia bezpieczeństwa etapie, lecz użyli wystarczającej liczby rzutów kośćmi, całkowicie uniknęli skutków exploita. Rzucanie kośćmi jest prostym, widocznie przejrzystym procesem, który zwykły użytkownik może samodzielnie audytować i intuicyjnie zrozumieć. Weryfikacja TRNG wymagałaby natomiast szczegółowej inspekcji fizycznej elektroniki oraz analizy firmware.

Choć niektórzy komentatorzy wykorzystali ostatnie wydarzenia jako pretekst do ogłoszenia końca samodzielnej kontroli nad środkami, stosowanie najlepszych praktyk w zakresie entropii pozostawia atakującemu zdalnemu bardzo niewiele możliwości. Jeśli fraza seed jest generowana z fizycznej entropii bez polegania na bezpieczeństwie portfela sprzętowego, usuwa się jedyne prawdziwe pojedyncze źródło awarii w procesie tworzenia portfela.

Rozszerzony klucz publiczny (xpub) oraz adresy odbiorcze wyprowadzone z seeda można ponownie zweryfikować, importując seed do wielu niezależnych urządzeń. Wyciek nonce przez airgap można również wykryć, sprawdzając, czy dwa urządzenia generują identyczny podpis zgodny z RFC 6979 podczas przetwarzania tej samej niepodpisanej transakcji.

Bezpieczne generowanie entropii jest zatem absolutnym warunkiem wstępnym bezpiecznego portfela. Od momentu, gdy exploit Coldcard został upubliczniony, na X szeroko krążyły różne metody i propozycje wiarygodnego generowania entropii.

Najpopularniejsze podejście polega na sprawdzeniu, czy urządzenie prawidłowo przekształca ścianki kości w frazę seed BIP-39, stosując skrót SHA-256. Wykorzystanie ponad 100 rzutów kośćmi zapewnia wystarczającą entropię do utworzenia 24-wyrazowego seeda.

Prostsze metody papierowe, takie jak tabela opublikowana przez Bitbox, dzielą przestrzeń słów BIP-39 tak, aby kombinację sześciu rzutów kośćmi i rzutu monetą można było bezpośrednio przypisać do słowa seeda bez użycia elektroniki.

Bardziej zaawansowane narzędzia, takie jak arkusz do usuwania biasu z rzutów kośćmi codex32, wykorzystują ekstraktor von Neumanna — procedurę możliwą do wykonania całkowicie ręcznie — aby wygenerować bezpieczną frazę seed nawet przy stronniczych kościach.

Alternatywą dla kości jest wydrukowanie pełnej listy słów BIP-39, pocięcie ich na równej wielkości małe kartki, dokładne ich wymieszanie, a następnie wylosowanie 24 słów. Produkty takie jak Seedsticks lub Entropia oferują wygodniejsze i trwalsze wdrożenia tej metody.

Specjalizowany sprzęt, taki jak Frostsnap, próbuje weryfikowalnie rozdzielać generowanie entropii pomiędzy wiele urządzeń. Niektórzy użytkownicy zaczęli nawet projektować własne fizyczne urządzenia entropijne, zdolne tworzyć frazy seed niemal tak szybko jak dedykowany portfel elektroniczny.

Magazyn: Czy ataki na Coldcard oznaczają, że wszystkie portfele sprzętowe są teraz niebezpieczne?