Luka w portfelu sprzętowym Coldcard: skradziono bitcoiny o wartości ponad 88 mln USD

Podsumowanie rynku AI
Ujawniona luka w generowaniu kluczy w portfelu sprzętowym Coldcard miała rzekomo umożliwić atakującym kradzież ponad 88 mln USD w BTC, przy czym exploit opisano jako nadal trwający, a środki mają się agregować on-chain. Choć nie jest to problem Bitcoina na poziomie protokołu, incydent może wywierać presję na krótkoterminowy sentyment, podnosząc ryzyko powiernicze i operacyjne, potencjalnie skłaniając do przyspieszonej migracji w kierunku samodzielnej opieki nad środkami, wzmożonej kontroli łańcuchów dostaw portfeli sprzętowych oraz zwiększonego monitorowania powiązanych adresów przez giełdy i zespoły ds. zgodności.
Wpływ
● Wysoki
Aktywa, których dotyczy
BTC/USDT+0.88%
Analiza AI · BTC/USDTAnaliza AI
▼ Spadkowy
Handluj teraz
⚠️ Analizy generowane przez AI opierają się na treściach z wiadomości i mają charakter informacyjny. Nie stanowią porady inwestycyjnej ani nie odzwierciedlają poglądów BingX. Inwestowanie wiąże się z ryzykiem. Handluj odpowiedzialnie.
Straty przekroczyły 88 mln USD – trwa analiza luki w portfelu sprzętowym Coldcard oraz śledzenie skradzionych środków. 31 lipca doszło do naruszenia bezpieczeństwa ok. 500 urządzeń Coldcard, co zakończyło się kradzieżą 594 BTC o wartości ok. 38 mln USD. Producent, firma Coinkite, potwierdził następnie podatność w procesie generowania kluczy, obejmującą wiele generacji urządzeń, w tym Coldcard Mk2, Mk3, Mk4, Q oraz Mk5. Łączna wartość strat wynikających z wykorzystania tej luki przekroczyła już 88 mln USD, a atak wciąż trwa. Użytkownikom Coldcard zaleca się jak najszybsze przeniesienie środków na inny adres. Poniżej przedstawiono analizę Beosin dotyczącą podatności oraz monitorowanie przepływów skradzionych aktywów. I. Analiza podatności Analiza historii commitów firmware'u Coldcard wskazuje, że w poprzednim commicie 37e4af5451c260c1e7d429fe8972c4cb5e68ee59 zespół deweloperski zaktualizował fragmenty kodu związane z konfiguracją MK4, m.in. w mpconfigboard.h: // We have our own version of this code. #define MICROPY_HW_ENABLE_RNG (0) Po stronie MicroPython STM32 ten makroprzełącznik steruje ścieżką kompilacji dla domyślnego bindowania sprzętowego generatora liczb losowych (RNG) oraz ogólnej implementacji random. Ustawienie na 0 blokuje użycie domyślnej ścieżki sprzętowego RNG jako backendu dla ogólnego rng_get(). Komentarze sugerują, że deweloper wdroży własny RNG; w niestandardowym pliku rng.h zadeklarowano jedynie dwa obiekty MicroPython: MP_DECLARE_CONST_FUN_OBJ_0(pyb_rng_get_obj); MP_DECLARE_CONST_FUN_OBJ_1(pyb_rng_get_bytes_obj); Ich implementacja wskazuje, że kod Coldcard faktycznie ma korzystać ze sprzętowego RNG, ale gwarantuje to wyłącznie przy wywołaniach pyb_rng_get* lub wewnętrznego random_buffer(). W trakcie tworzenia portfela uruchamiany jest inny fragment – funkcja inicjalizacji portfela w shared/seed.py: async def make_new_wallet(nwords): # Select a new random seed. await ux_dramatic_pause('Generating...', 3) seed = generate_seed() words = await approve_word_list(seed, nwords) if words: await commit_new_words(words) Wywołanie przechodzi do modułu shared/random.py. We wcześniejszych wersjach random.py wprost opierał się na ngu.random i zawierał m.in.: # random.py subset of the random module, with no compatibility, using cryptographically secure RNG # for bytes, use ngu.random.bytes(len) # bytes = ngu.random.bytes Inicjalizacja portfela korzysta z random.bytes, a nie z pyb.rng(); niestandardowy pyb_rng_get_obj nie nadpisuje automatycznie random.bytes. Ponieważ MICROPY_HW_ENABLE_RNG ustawiono na 0, generowanie seeda nie używało sprzętowego RNG, tylko fallbacku z micropython/ports/stm32/rng.c, tj. pyb_rng_yasmarang: #if MICROPY_HW_ENABLE_RNG uint32_t rng_get(void) { // Use STM32 hardware RNG ... } #else // For MCUs without an RNG, we still need to provide an rng_get() function. // A pseudoRNG is not ideal, but we use it for now. // Yasmarang random number generator static uint32_t pyb_rng_yasmarang(void) { static bool seeded = false; static uint32_t pad = 0, n = 0; ... } uint32_t rng_get(void) { return pyb_rng_yasmarang(); } #endif pyb_rng_yasmarang to pseudolosowy generator, wysoce nieodpowiedni do tworzenia seedów portfeli sprzętowych – w praktyce umożliwia atakującym brute force. Coinkite wskazał, że obecnie w Makefile wykluczono plik stm32/rng.c: Do not compile MicroPython's fallback PRNG. The board-specific rng.c provides rng_get(), and this empty object satisfies the upstream object list. $(BUILD)/rng.o: CFLAGS += Dpyb_rng_yasmarang=errordonotwantthis $(BUILD)/rng.o: $(ECHO) "SKIP stm32/rng.c" $(Q)$(CC) $(CFLAGS) x c c /dev/null o $@ II. Śledzenie skradzionych środków Środki z wielu portfeli ofiar zostały już przetransferowane i skonsolidowane w kilku adresach, bez dalszego "prania" na tym etapie. Na podstawie danych wywiadowczych i analizy zachowań on-chain Beosin Trace zidentyfikował następujące adresy agregujące: bc1qq85v2c926eg6pgxhwp6q7lf6cnsz80qs3fcu9r (562 BTC) bc1qx76cae2706qd5q576feh7xq8rfcsjpf2htfhe3 (398.47 BTC) Dodatkowo poniższe adresy wykazują podobny wzorzec przepływu środków i jak dotąd nie odnotowano kolejnych transferów: bc1q8jy96fe5lf8vfugydnte3cguk92gpev7kwtp3q (89.62 BTC) bc1q0rvn88w08j75k4h48lf9fvhan7unjp7vjf5q6m (64.9 BTC) bc1qtfrwa4j6rmj9rsgspv6a0yjumkg39js2numu75 (45.9 BTC) bc1qmd5m5ktv7m5ffujxv4248fxv36myvdx79n8jp6 (30.18 BTC) Ataki wymierzone w portfele Coldcard nadal trwają, a zespół Beosin na bieżąco monitoruje kolejne adresy agregujące i analizuje powiązane przepływy. III. Wnioski To poważne zdarzenie bezpieczeństwa związane z portfelem sprzętowym Coldcard wynikało z błędu implementacyjnego: w krytycznym procesie generowania seeda zastosowano pseudolosowy generator liczb. Zespół deweloperski powinien prowadzić ciągłe, kompleksowe testy i audyty kodu, a użytkownicy Coldcard powinni niezwłocznie przenieść aktywa oraz uważnie śledzić kolejne komunikaty bezpieczeństwa Coinkite. Beosin to firma technologiczna z obszaru bezpieczeństwa blockchain i zgodności regulacyjnej. Specjalizuje się m.in. w audytach bezpieczeństwa smart kontraktów przed wdrożeniem, monitorowaniu i blokowaniu ryzyk w czasie rzeczywistym, odzyskiwaniu aktywów, AML dla aktywów wirtualnych oraz śledztwach i trasowaniu przepływów. Beosin dostarcza produkty compliance i usługi bezpieczeństwa instytucjom regulacyjnym oraz organom ścigania w ponad 20 krajach i regionach, a także obsługuje ponad 200 dostawców usług w zakresie aktywów wirtualnych i ponad 4"500 projektów Web3.