Luka w Coldcard: 594 bitcoiny wyprowadzone z 500 portfeli w 25 minut
Ustawienie kompilacji w firmwarze Coldcard Mk3 sprawiało, że urządzenie pomijało własny układ losowości, przez co klucze prywatne dawały się odgadnąć. Napastnicy zabrali 594 bitcoiny, około 38 milionów dolarów (około 33,3 miliona euro), z blisko 500 portfeli. Modele Mk4, Q i Mk5 pozostały nietknięte.
Między 01:31 a 01:56 UTC w miniony piątek 594 bitcoiny opuściły około 500 portfeli sprzętowych. To mniej więcej 38 milionów dolarów (około 33,3 miliona euro) w dwadzieścia pięć minut. Przyczyną nie był phishing ani skradzione urządzenie, lecz ustawienie kompilacji w firmwarze jednego z najczęściej polecanych portfeli sprzętowych w środowisku bitcoina.
Co dokładnie się wydarzyło
Dotknięte urządzenia to Coldcard w wersji Mk3 z firmwarem 4.0.1 lub nowszym. Błąd trafił do kodu wraz z wersją 4.0.0, wydaną w marcu 2021 roku. Przez pięć lat nikt go nie zauważył.
Analizę opublikowały zespoły inżynierii bitcoinowej i bezpieczeństwa firmy Block. Coinkite, producent Coldcard, ostrzegł użytkowników. Atak jest nietypowy dlatego, że nie wymagał żadnego fizycznego dostępu do urządzenia: wszystko odbyło się z poziomu blockchaina, samym obliczeniem.
Błąd tkwi w losowości
Portfel sprzętowy jest w istocie maszyną, która wytwarza jedną tajną liczbę. Ta liczba to twój klucz prywatny. Całe bezpieczeństwo zależy od tego, czy jest ona naprawdę nieprzewidywalna. Dlatego w każdym poważnym portfelu sprzętowym siedzi fizyczny generator losowości: układ zamieniający szum świata rzeczywistego na bity.
Przez źle ustawioną flagę kompilacji Coldcard Mk3 pomijał ten układ. Zamiast niego urządzenie sięgało po generator programowy zasilany dwiema wartościami: numerem seryjnym układu i stanem jego rejestrów zegara. Żadna z nich nie jest tajna. Numer seryjny jest stały, a stan zegara w chwili tworzenia mieści się w wąskim przedziale. Przestrzeń możliwych kluczy kurczy się przez to z astronomicznej do takiej, którą napastnik może po prostu przejść po kolei.
Gdy ktoś już wpadnie na ten trop, reszta jest księgowością. Wygenerować klucze kandydujące, wyprowadzić z nich adresy, sprawdzić na blockchainie, które adresy mają saldo, i podpisać transakcje.
Które urządzenia są zagrożone, a które nie
Podatny jest wyłącznie Mk3, i to tylko z firmwarem 4.0.1 lub nowszym. Mk4, Q i Mk5 działają na innym firmwarze i nie są zagrożone.
Jest tu szczegół, który łatwo źle zrozumieć. Liczy się nie to, jaki firmware masz na urządzeniu dziś, ani kiedy je kupiłeś. Liczy się to, jaki firmware działał w chwili tworzenia portfela. Słaby klucz pozostaje słaby także po aktualizacji. Aktualizacja naprawia generator, a nie klucz, który wcześniej z niego wyszedł.
Ważne również: chodziło o portfele z pojedynczym podpisem. Układów multisig, w których Coldcard trzyma tylko jeden z kluczy, nie da się w ten sposób opróżnić automatycznie, bo napastnik potrzebowałby też pozostałych kluczy.
Dwadzieścia pięć minut, 500 transakcji
Wykonanie było wyraźnie przygotowane. W dwadzieścia pięć minut przez sieć przeszło około 500 transakcji, które zebrały łup w 1324 kawałkach. Następnie 562 z 594 bitcoinów skonsolidowano na jednym adresie.
Ta oś czasu coś mówi. Obliczenia potrzebne do znalezienia kluczy były już wykonane; to, co widać na blockchainie, jest wyłącznie żniwem. Kto domyka taką operację w pół godziny, wcześniej rozrysował cele i czekał, aż wszystko będzie gotowe.
Dlaczego to nie pogrąża portfeli sprzętowych
Kusi, by wyciągnąć wniosek, że portfel sprzętowy nic nie daje. To zła lekcja. Model się obronił: klucz nigdy nie opuścił urządzenia, PIN zrobił swoje, nikogo nie wyłudzono. Zawiodło ustawienie w procesie kompilacji, dokładnie ten rodzaj błędu, który otwarty kod i zewnętrzna analiza mają wyłapywać, i który tutaj rzeczywiście wyłapał zespół z zewnątrz.
Prawdziwa lekcja brzmi tak: zaufanie do urządzenia zawsze jest zaufaniem do łańcucha produkcyjnego. Firmware, środowisko kompilacji i losowość są częścią produktu, choć nigdy ich nie widzisz. To przemawia za urządzeniami, których firmware da się zbudować w sposób powtarzalny i których kod czyta więcej niż jedna strona.
Co to oznacza dla ciebie
Jeśli masz Coldcard Mk3, a twój portfel powstał na firmwarze 4.0.1 lub nowszym, załóż, że klucz jest słaby, i przenieś swoje bitcoiny. Nie na nowy adres z tego samego seeda, bo wywodzi się z tego samego słabego klucza, lecz do portfela z całkiem nowym seedem wygenerowanym na sprawnym urządzeniu.
Jeśli nie pamiętasz, jaki firmware był wtedy zainstalowany, potraktuj urządzenie jak skompromitowane. Alternatywą jest trafne zgadywanie z własnymi pieniędzmi na stole.
Jeśli używasz Mk4, Q lub Mk5, nie musisz robić nic. Jeśli twój Coldcard należy do układu multisig, pilność jest mniejsza, ale i tak wymień ten klucz przy najbliższej planowanej rotacji.
Szerzej: to dobry moment, żeby sprawdzić, czy twoja fraza odzyskiwania leży w miejscu, w którym ty ją znajdziesz, a nikt inny nie. Atak sprzed tygodnia zadziałał, bo klucze były przewidywalne. Większość pozostałych działa dlatego, że ludzie fotografują swoją frazę odzyskiwania.
Źródła: CoinDesk, Coinkite, Block, FinanceFeeds, Crypto Economy, Cybernews. Ostatnia weryfikacja: 1 sierpnia 2026.
