Хардуерният портфейл би трябвало да решава един проблем: да съхранява вашите ключове за биткойн на място, до което никой хакер не може да достигне. Тази седмица стана ясно какво се случва, когато уязвимостта се крие в самия портфейл. Бъг във фърмуера, който се среща в устройствата Coldcard от 2021 година насам може да позволи на хакер да отгатне на пръв поглед случайни начални фрази отвън – без физически достъп, без фишинг и без злонамерен софтуер и да източи средства от хиляди адреси. Общата сума вече надхвърля 88 милиона долара и продължава да нараства.

Пропуск във фърмуера на Coldcard насочи вниманието към основен аспект от сигурността на хардуерните портфейли: как устройството генерира началната си фраза. Проблемът стана ясен, след като на 30 юли хакер източи 1196 адреса с биткойни за период от 41 минути, отнемайки 1 082,65 BTC на стойност около 70,2 милиона долара към този момент.

Galaxy Research свърза тази кражба с Coldcard – серията хардуерни портфейли, предназначени единствено за биткойн, произведени от Coinkite и заяви, че случаят съответства по-скоро на проблем във фърмуера, отколкото на случайно събитие. Оттогава са се появили още две вълни, а текущата обща сума, изчислена от Galaxy вече възлиза на 1 367,05 BTC, на стойност около 88,6 милиона долара, разпределени в 4585 адреса. Компанията описва това като предварителна наблюдавана цифра, която все още може да се увеличи, тъй като продължава да проследява повече дейност в блокчейна.

Проблемът датира от грешка при интегрирането на фърмуера през март 2021 година. Вместо да използват хардуерния генератор на случайни числа на STM32, засегнатите устройства са преминали към детерминистичен софтуерен генератор на псевдослучайни числа при създаването на начални стойности. Това е от значение, тъй като генерирането на начални стойности трябва да води до резултати, които не могат да бъдат отгатнати или възстановени.

We mapped the flow of funds for the Coldcard vulnerability based on the pattern identified by engineers at Block and shared by @clay_garrett

1,196 addresses drained in full for 1,082.65 BTC (~$70.2M) between 01:10:20 and 01:51:26 UTC on Jul 30 — a 41-minute window, blocks… pic.twitter.com/q785paZvMQ

— Galaxy Research (@glxyresearch) July 31, 2026

С прости думи: „семето“ на портфейла е главният код, обикновено низ от 12 или 24 думи, който може да възстанови всеки адрес и частен ключ, свързан с него. Този код трябва да произхожда от процес, който никой не би могъл да предвиди или да подложи на обратно инженерство, поради което устройствата разчитат на специален чип за генериране на случайни числа, вместо на обикновен софтуер. Когато тази замяна се случи незабележимо в обратна посока, числата на екрана все още изглеждат случайни, но всъщност не са, и именно тази разлика може да бъде експлоатирана от хакер.

Хакер, който успее да установи UID на устройството, състоянието на таймера и по-ранни извиквания на случайни числа може да възпроизведе възможни потоци от резултати, без да докосва самия портфейл. Тези възможни „семена“ могат след това да бъдат тествани чрез извличане на адреси и сравняването им с публичните данни от блокчейна. С други думи, слабостта не е в блокчейна, а в начина, по който устройството-портфейл е формирало отправната точка за генериране на ключове.

Казано по-просто, нападателят никога не е трябвало да краде или дори да вижда физическия портфейл. Ако успеете да разберете приблизително как са се държали вътрешният часовник и серийният номер на устройството в момента на включването му, можете да възпроизведете същото „случайно“ число, което то е генерирало на обикновен компютър, след което просто да проверите дали това предположение отключва реален адрес с налични средства.

Уязвимостта се дължи на несъответствие в конфигурацията на производствения код на Coldcard. Фърмуерът дефинира настройка за хардуерен генератор на случайни числа (RNG), но библиотеката, която я обработва проверява дали настройката съществува, вместо дали тя действително е активирана. Това прехвърля компилацията към резервния режим Yasmarang на MicroPython, който започва от фиксирани данни на устройството и не събира нова ентропия след инициализацията. На практика това е пропуск в кодирането. Софтуерът трябва да проверява дали хардуерният генератор на случайни числа е включен, но той проверява само дали тази настройка изобщо съществува в кода. Така всяко устройство тихо преминава към по-слабия метод – резервен вариант, предназначен само за редки крайни случаи, без никой да забележи, че той е станал по подразбиране.

Как хакер открадна 70 млн. долара в биткойни от хардуерни портфейли, без дори да ги докосва

Coinkite посочва, че ефективната ентропия е около 40 бита при Mk3 и около 72 бита при Mk4, Mk5 и Q. Това е значително под очакваните 128 бита за стандартно BIP-39 „семе“ с 12 символа. За да разберете какво означават тези стойности на битовете: представете си ентропията като размера на комбинационна ключалка. Ключалка с 40 бита има около 1 трилион възможни комбинации – достатъчно малко число, за да може обикновен хардуер да ги прегледа за няколко часа. 72 бита представляват много по-голяма ключалка, недостъпна за любител, но не и за добре финансиран хакер. За разлика от това, разбиването на истинска 128-битова ключалка чрез метод на bruteforce би отнело много повече време, отколкото съществува Вселената, дори при милиарди опити в секунда.

Coinkite пусна спешна актуализация на фърмуера на 31 юли за всички засегнати модели и версии. Тази актуализация обаче не поправя вече създадените „семена“. Компанията съветва потребителите с изложени на риск „семена“ да генерират нови на актуализирания фърмуер и да преместят монетите си. Възстановяването на старо „семе“ на ново устройство или актуализиран фърмуер не премахва уязвимостта.

Кои устройства са изложени на риск зависи от версията на фърмуера, която е била активна при създаването на „семето“. Block посочва, че версиите 4.0.0 до 4.1.9 на Mk2 и Mk3 са уязвими, докато Coinkite изброява версиите 4.0.1 до 4.1.9 на Mk3 и посочва, че проблемът е отстранен във версия 4.2.0. При по-новите модели засегнати са Mk4 и Mk5 преди версия 5.6.0, Q преди 1.5.0Q, както и версиите на Edge преди по-късните корекции, специфични за Edge.

Проблемът засегна най-тежко именно онези потребители, които бяха положили най-големи усилия да го избегнат. Джонатан Гудман, който твърди, че е загубил около 1,6 милиона долара в резултат на тази уязвимост, разказа, че е съхранявал своята Coldcard в сейф, който никога не е бил свързан с интернет – практика, която е по учебник за „студено съхранение“. „Направих всичко както трябва“, написа той в публикация, която се разпространи широко в X. Потребителската база на Coldcard традиционно се състои предимно от хора, които са положили специални усилия да се научат на самостоятелно съхранение, а не от случайни притежатели, което подхрани широкото усещане сред засегнатите потребители, че нито една публично оповестена най-добра практика не осигурява пълна защита срещу недостатък, вграден в самия хардуер.

Тази ситуация предизвика по-широк дебат във форумите за биткойн относно това какво реално може да обещае „студеното“ съхранение. Ако грешка във фърмуера, съществуваща от 5 години може да остане незабелязана в уважавано устройство, някои притежатели се питат на какво основание други хардуерни портфейли се считат за безопасни просто защото все още не са били открити.