Polowanie na hakera Coldcarda: złodziej z fali 1 może być znany FBI
Najważniejsze informacje
- •Pierwsza fala wypływów z Coldcard przeniosła 1,082.65 BTC 30 lipca 2026 roku, a środki te nadal nie zostały ruszone z adresu atakującego.
- •Block podał, że jego śledztwo powiązało transfery z płatnym kontem u dostawcy usług blockchain, a logi dostawcy miały z niezwykłą precyzją odpowiadać wzorcowi zapytań.
- •Na początku sierpnia potwierdzone i szacowane straty z wielu fal przekroczyły 1,800 BTC z ponad 5,000 adresów, z czego potwierdzono kradzież około $118 million.
- •Podatność wynikała z awarii entropii w generowaniu seedów w firmware Coldcard, dotykającej urządzeń nawet tak starych jak MK2 z firmware 4.0.1 i nowszym.
- •Badacze twierdzą, że niektóre późniejsze fale wykazują inne zachowanie operacyjne, co sugeruje, że kolejne osoby mogły wykorzystać tę samą słabą przestrzeń seedów po ujawnieniu błędu.

Organy ścigania mogą już wiedzieć, kto wyprowadził ponad 1,000 bitcoinów z portfeli Coldcard w pierwszej i największej fali lipcowych wypływów z 2026 roku. Śledztwo Blocka twierdzi, że powiązało on-chainowe transfery atakującego z płatnym kontem u dużego dostawcy danych blockchain, a wewnętrzne logi tego dostawcy miały odzwierciedlać wzorzec kradzieży z „extraordinary specificity”.
PSA: Atak trwa i jest skierowany przeciwko słabym kluczom prywatnym generowanym na urządzeniach nawet tak starych jak MK2 z firmware 4.0.1 i nowszym. Jeśli możesz mieć taki egzemplarz, sprawdź go ponownie i przenieś środki tak szybko, jak to możliwe. Zobacz zalecenia Coinkite oraz stronę statusu.
Monety z tej pierwszej fali — 1,082.65 BTC — wciąż pozostają nietknięte pod adresem atakującego. To pozostawia otwartą możliwość odzyskania przynajmniej części skradzionych środków przez ofiary. Kluczowe pytanie brzmi teraz: kim jest haker i czy ten sam trop wskazuje na wyrafinowanego zewnętrznego sprawcę, czy raczej na coś bliższego insiderowemu „retirement attack”, o którym sam Coinkite kiedyś ostrzegał.
Stawka wykracza poza samych użytkowników Coldcard. Urządzenia Coldcard, produkowane przez Coinkite, należą do bardziej znanych portfeli sprzętowych promowanych do przechowywania bitcoinów w samodzielnej pieczy, z kluczami prywatnymi generowanymi i przechowywanymi offline, a nie na serwerach podłączonych do internetu. Błąd w losowości używanej do generowania tych kluczy uderza więc w sam fundament tego modelu.
Co wiemy
30 lipca 2026 roku napastnik rozpoczął systematyczne opróżnianie bitcoinów z portfeli sprzętowych Coldcard, które generowały seedy przy użyciu podatnego firmware — błędu, który pozostawał niewykryty przez lata. Sama pierwsza i największa fala przeniosła 1,082.65 BTC. Następnie pojawiły się kolejne fale, z szacunkami przekraczającymi 2,000 BTC. Alex Thorn z Galaxy Research śledził aktywność, korzystając z analizy wzorców on-chain oraz dobrowolnych zgłoszeń ofiar. Na początku sierpnia potwierdzone i szacowane straty w wielu falach przekroczyły 1,800 BTC z ponad 5,000 adresów, choć końcowy wynik nadal jest doprecyzowywany wraz z napływem nowych zgłoszeń. W ujęciu dolarowym potwierdzono kradzież około $118 million.
Thorn publicznie mówił, że organy ścigania mogą już posiadać konkretny trop dotyczący operatora stojącego za największą częścią środków. W materiale Bitcoin Policy Institute opublikowanym na kanale Bitcoin Magazine na YouTube Thorn stwierdził: „Wave one’s identity, attacker identity, may be known to law enforcement.” Dodał, że Wave 1 pozostaje największym pojedynczym fragmentem zidentyfikowanym do tej pory, a monety nadal znajdują się pod adresem atakującego, oraz zauważył, że wzorzec Wave 2 wygląda na tyle podobnie, iż może dotyczyć tego samego sprawcy. Wave 2 dodaje do całości kolejne około 76 bitcoinów.
Głównym źródłem twierdzenia, że tożsamość hakera może być znana, jest Clay Garrett, szef inżynierii w Block pracujący nad Bitkey. 31 lipca 2026 roku Garrett opublikował ustalenia z dochodzenia Blocka:
„During our investigation of the Coldcard drain yesterday, we identified an unusual pattern in the sweeps. That pattern led us to a hypothesis that has since been confirmed: the operator used a paid account at a well-known blockchain-services provider to query the source addresses and perform other related activity during the sweeps.”
„We contacted the provider directly. Their internal logs matched the suspected workflow with extraordinary specificity, including the number, timing and sequence of requests. The provider was supplying its standard services in response to requests that did not reveal their broader purpose. We have seen no evidence that the provider knowingly participated in or facilitated the suspected theft.” — powiedział Garrett, dodając: „We are sharing the relevant information with the appropriate authorities. We will provide further updates when doing so will not interfere with the investigation.”
Dla śledczych to ustalenie jest istotne, ponieważ łączy on-chainową kradzież z realną tożsamością: transfery były powiązane z płatnym kontem, którego logi żądań — liczba, czas i sekwencja zapytań — zostały zachowane przez dostawcę, tworząc poza łańcuchem ślad, który Block przekazuje teraz odpowiednim organom.
Thorn i inni zauważyli, że późniejsze, mniejsze fale wykazują inne wzorce operacyjne — w tym szybkie, oportunistyczne opróżnienia, po których następowało szybkie „pranie” środków — co sugeruje, że dodatkowi sprawcy mogli zreverse-engineerować tę samą słabą przestrzeń seedów po początkowym ujawnieniu. Zgłaszane samodzielnie potwierdzone wypływy wyraźnie wyhamowały po 6 sierpnia, choć wiele potencjalnie podatnych seedów wygenerowanych na dotkniętym firmware między 2021 rokiem a łatką z lipca 2026 roku pozostaje zagrożonych do czasu migracji użytkowników.
Retirement attack?
Charakter awarii rozbudził teorie spiskowe dotyczące ataków insiderów, o których sam Coinkite kiedyś publicznie dyskutował. W październiku 2021 oficjalne konto COLDCARD zdefiniowało „retirement attack” jako scenariusz, „when the project makers could have a ‘bug’ in the entropy generation for later retrieval.” Ten wpis nadal jest dostępny tutaj.
Podatność z 2026 roku dała dokładnie taki rezultat: seedy były generowane z dużo mniejszą entropią, niż zamierzano, przez co po latach można było je wyszukiwać. Część osób z ekosystemu Bitcoina uważa teraz, że hack mógł być wewnętrzną operacją w Coinkite, podczas gdy inni się z tym nie zgadzają. Publiczne dowody są wciąż zbyt skąpe, by wyciągnąć definitywne wnioski, a kolejne materiały mogą pojawić się dopiero za lata, prawdopodobnie dopiero w toku postępowań sądowych.
Krytyczna zmiana trafiła do bazy kodu 1 marca 2021 roku w commicie zatytułowanym „First pass w/ libNgU” (b18723dd). Commit ten zastąpił pozostały kod kryptograficzny i BIP-39 wywodzący się z Trezora nową biblioteką libngu i przeorganizował generowanie seedów. Zamierzony efekt był taki, że wywołanie losowości miało trafiać do prawdziwego generatora liczb losowych sprzętu STM32. Zamiast tego błąd przekierował wywołanie do programowego PRNG Yasmarang w MicroPythonie, powodując efektywny spadek entropii do około 40 bitów w starszych modelach i około 72 bitów w nowszych. Oznaczało to, że generowane bitcoinowe klucze prywatne były w praktyce możliwe do odgadnięcia przez współczesny sprzęt obliczeniowy. Dla porównania, prawidłowo wygenerowany seed Bitcoin zwykle ma 128 do 256 bitów entropii, więc spadek do około 40 bitów zmniejsza przestrzeń poszukiwań o wiele rzędów wielkości — różnicę między kluczami praktycznie nie do odgadnięcia a kluczami, które można po prostu wyliczyć.
Ta podmiana została wprowadzona do kodu przez Doc-Hex, znanego również jako Peter Gray, Chief Technical Officer w Coinkite.
Według Zacha Herberta, CEO i założyciela Foundation Devices, ruch ten mógł wynikać z presji licencyjnej, choć Coinkite zaprzeczył, by licencjonowanie było główną motywacją tej zmiany, mówiąc: „COLDCARD had to make this change to move to libsecp256k1; the license change is irrelevant to this. libsecp256k1 is the standard library used by Bitcoin Core.”
Coldcard korzystał wcześniej z kodu pochodzącego z Trezora na licencji GPLv3 open source. Po tym, jak Foundation Devices odforkowało powiązane materiały, Coinkite dążył do przeniesienia pozostałych komponentów do bardziej restrykcyjnego układu MIT + Commons Clause, ograniczającego komercyjny reuse. Przepisanie kodu było duże i miało złożone cele inżynieryjne; to właśnie ta integracja najpewniej pozostawiła ciche uszkodzenie w ścieżce entropii.
Sceptycyzm wobec migracji z biblioteki kryptograficznej Trezora pojawił się już 7 kwietnia 2021 roku, gdy członek grupy Coinkite na Telegramie napisał: „do we really want to replace the many-years-old TrezorCrypto code that has been heavily scrutinized by white hatters like Johoe and penetration tested by wallet.fail”, dodając „switch may be a talented pseudonymous coder, but their commit history sucks.” Krytyka została jednak szybko zbagatelizowana przez NVK, który nazwał bibliotekę Trezora „shitcoin shitshow.” Paradoksalnie, szersze użycie tej otwartej bazy kodu oznaczało, że prawdopodobnie była ona dużo dokładniej analizowana niż kiedykolwiek byłby Libngu.
Switch i Peter Gray, czyli Doc-Hex
Podmiana biblioteki kryptograficznej, która wprowadziła błąd, została wniesiona do kodu przez Doc-Hexa, CTO Coinkite, Petera D. Graya. Zastąpił on bibliotekę kryptograficzną Trezora na GPLv3 mało znaną bazą Libngu, stworzoną przez „Switch”, pseudonim, który przed powstaniem Libngu nie miał oczywistej wcześniejszej historii.
Konto Switch pojawiło się na X 3 sierpnia 2019 roku, z odniesieniem do DEFCON, międzynarodowej konferencji hakerskiej, w której zwykle uczestniczą inżynierowie cyberbezpieczeństwa. 16 października 2020 roku Switch podziękował Doc-Hexowi na X za scalenie jego kodu: „Thanks for merge @DocHex … I’m making yet another bitcoin library. Could be useful on @COLDCARDwallet someday.” Kilka dni później Switch opublikował link do Libngu, pisząc, że stworzył „useful thing.”
Według badań Jamesa O’Beirne’a, współtwórcy Bitcoin Core, Switch i Peter D. Gray mieli jednak podpisywać commity tymi samymi kluczami GPG. O’Beirne wykazał na podstawie podpisów GPG, że dziesiątki commitów autoryzowanych jako switck zostały podpisane prywatnym kluczem Petera D. Graya, współzałożyciela i CTO Coinkite, który działa również jako DocHex. Zach Herbert twierdził także, że numery telefonów kończące się tymi samymi dwiema cyframi były powiązane zarówno z kontami DocHex, jak i switck na X (post). Inni badacze wskazywali na zgodne wzorce rejestracji DNS.
Ani Gray, ani Coinkite nie odnieśli się publicznie do ustaleń dotyczących podpisów GPG, a na prośby o komentarz nie odpowiedzieli. Konto Switch pozostaje aktywne i wciąż łączyło zmiany kodu do Libngu tak niedawno jak 17 sierpnia 2026 roku.
Część osób w branży Bitcoina traktuje to jako poszlakę wskazującą na niewłaściwe działania. Sama korelacja nie jest jednak rozstrzygająca. Gdyby Gray naprawdę chciał wykorzystać błąd RNG do wykorzystania użytkowników Coldcard, nie jest jasne, dlaczego podpisywałby commity swoim prywatnym kluczem GPG. Ukryty błąd, który pozostawał uśpiony przez lata, również wydaje się nie pasować do używania jednorazowego pseudonimu w sposób pozostawiający ślad. Tożsamości pseudonimiczne są w środowisku deweloperów Bitcoina powszechne, a Satoshi jest najbardziej znanym przykładem. Sama więź Gray–Switch nie wydaje się więc rozstrzygać polowania na hakera Coldcard.
Współtwórcy MicroPython
Kilku innych deweloperów open source zostało też ostatnio wskazanych jako osoby, które dotknęły lub wpływały na kod odgrywający rolę w błędzie RNG Coldcard.
Analityk danych LaurentMT przeanalizował stronę ścieżki RNG po stronie MicroPython. MicroPython to lekka, otwartoźródłowa implementacja Pythona 3, zaprojektowana do działania na mikrokontrolerach i innych urządzeniach o ograniczonych zasobach. Z powodu błędu firmware Coldcard ostatecznie wywoływał zapasowy generator pseudolosowy Yasmarang w MicroPythonie, co prowadziło do generowania o niskiej entropii.
Prace nad logiką PRNG w MicroPythonie zaczęły się 20 sierpnia 2020 roku, gdy na GitHubie otwarto zgłoszenie #6347 przez użytkownika o nazwie „mirko”. Skarżył się on, że jego sprzęt ESP32 zawsze zwraca ten sam wynik przy wywołaniu random.choice() w określony sposób, podczas gdy oczekiwał wyników losowych. Zgłoszenie wywołało miesiące dyskusji o właściwej logice i oczekiwanym zachowaniu, które Mirko opisał jako nieintuicyjne.
Laurent zauważył, że „robert-hh initialized a [Pull Request] implementing the PRNG seeding change” 22 sierpnia 2020 roku. Później, 29 października 2020 roku, dpgeorge, maintainer MicroPython, scalił nieco zmodyfikowaną wersję tego pull requesta do repozytorium master, implementując „the (UID+SysTick+RTC) to address some limitations in robert-hh’s solution.” Odpowiedni kod RNG znajdował się więc w masterze MicroPython w momencie, gdy Coldcard zrobił fork do użycia w Libngu, ale zanim MicroPython wydał oficjalną nową wersję biblioteki.
To ma znaczenie, ponieważ budowanie na gałęzi master repozytorium może być ryzykowne: kod nadal może ewoluować, w przeciwieństwie do oficjalnej, stabilnej wersji wydania. Następne wydanie MicroPython pojawiło się dopiero 3 lutego 2021 roku, w wersji v1.14. Nawet wtedy zmiana logiki RNG została wspomniana tylko krótko w informacji o wydaniu, gdzie napisano, że „the urandom module will randomize its seed on import on stm32, esp8266, esp32 and rp2 ports.”
W wywiadzie dla Bitcoin Magazine Laurent stwierdził bez cienia niejasności, że „without this modification the bug in Coldcard code would have been immediately detected.” Komentując ciąg zdarzeń, który doprowadził do błędu, dodał również, że „there are a lot of ‘coincidences’ in this timeline,” oraz że „while they don’t prove anything, I don’t see how an official investigation may completely ignore them.”
Warto podkreślić, że nie ma dowodów, iż którykolwiek z wymienionych wyżej deweloperów celowo próbował wprowadzić błąd RNG w Coldcard poprzez te zmiany. Ostatecznie za implementację krytycznego kodu odpowiada Coinkite, firma produkująca portfele sprzętowe. MicroPython to również duży, szeroko używany projekt open source. Mimo to cały ciąg zdarzeń można na razie opisać jako tragiczną komedię błędów.
Dlaczego wewnętrzny spisek wydaje się mało prawdopodobny
Kilka czynników przemawia przeciwko celowemu, długo planowanemu insiderowemu retirement attack. Tożsamość „switck” była słabo odseparowana, a wspólny klucz GPG i inne nakładki sprawiły, że przypisanie jej Doc-Hexowi, czyli Peterowi Grayowi, było po zbadaniu relatywnie proste. Konto było też przez lata w dużej mierze nieaktywne. Z kolei współtwórcy MicroPython działali otwarcie w bardzo widocznym projekcie.
Śledztwo Citadel21 prowadzone przez Hodlonauta oraz inne techniczne analizy nie znajdują jasnych dowodów, że awaria entropii była celowa. Raport techniczny inżyniera Alekosa Filiniego wprost stwierdza: „My goal is to purely present facts and NOT make any conclusions.” Techniczna autopsja Wizardsardine opisuje wiele nieskutecznych zabezpieczeń i mówi, że awaria znajdowała się „across a submodule boundary, which is precisely where reviewers stop looking.” Dogłębna analiza Stevena Gellera nie wysuwała mocnych twierdzeń w żadną stronę. Rekonstrukcja proof-of-concept autorstwa DK27ss opisuje problem jako „a chain of four flaws, each harmless in appearance.”
Gdyby wypływy były klasycznym insiderowym retirement attack albo długą, wyrafinowaną aferą, dzisiejsza dyskusja wyglądałaby zapewne zupełnie inaczej. Ostatnim dużym long-con hackiem w branży Bitcoina był prawdopodobnie QuadrigaCX, kanadyjska giełda, której założyciela Geralda Cottena uznano w 2018 roku za „dead in India” w tajemniczych okolicznościach, niedługo po odkryciu brakujących środków. Ontario Securities Commission oskarżyła założycieli o sprzeniewierzenie depozytów użytkowników giełdy na łączną kwotę niemal 170 million CAD, na przestrzeni wielu lat, zanim zniknęli.
Tymczasem kierownictwo Coinkite pozostaje publicznie aktywne. Firma zareagowała na incydent, wypuściła poprawione firmware, pomagała użytkownikom w migracji i uczestniczyła w rozmowach o szczegółach technicznych. Założyciele i operatorzy nadal prowadzą firmę i nie zniknęli w momencie, gdy środki zaginęły.
W międzyczasie środki z Wave 1 — ponad 1,000 BTC — nadal są skonsolidowane na trzech adresach, obserwowanych przez setki inżynierów i prawdopodobnie także organy ścigania, w tym FBI. Gdyby Coinkite prowadził „5D chess” retirement attack, kradzież byłaby znacznie ostrożniejsza. Monety nie zostałyby zebrane w kilku łatwych do śledzenia adresach, a jego założyciele prawdopodobnie nie byliby nadal dostępni, by o tym mówić.
Kilka otwartych pytań wyznacza teraz kolejne etapy: czy monety z Wave 1 opuszczą trzy obserwowane adresy; czy Gray lub Coinkite publicznie odniosą się do ustaleń dotyczących podpisów GPG, czego jak dotąd nie zrobili; oraz czy właściciele nadal podatnych seedów wygenerowanych między 2021 rokiem a łatką z lipca 2026 roku przeniosą środki, zanim dotrą do nich oportuniści z późniejszych fal.
Nie ma jeszcze ostatecznych wniosków, a dochodzenia prawdopodobnie potrwają latami. Na ten moment dowody wskazują na kulturową porażkę w środowisku bitcoinowych maksymalistów i self-custody, brak szerokiej edukacji w zakresie dobrych praktyk open source oraz — z perspektywy czasu — zbytnią pewność siebie wczesnego kierownictwa Coinkite.
Artykuł po raz pierwszy ukazał się w Bitcoin Magazine i jest autorstwa Juana Galta.