Уязвимость Coldcard: за 41 минуту похищено биткойнов на $70 млн
Кража за 41 минуту
30 июля неизвестный за 41 минуту опустошил 1196 биткойн-адресов, выведя 1082,65 BTC — на тот момент около $70,2 млн. Аналитики Galaxy Research восстановили картину «зачистки» и связали её с изъяном в прошивке Coldcard — аппаратного кошелька «только для биткойна» канадской компании Coinkite.
Где сломалась случайность
Причина уходит в марте 2021 года. Из-за ошибки интеграции прошивки генерация сид-фразы пошла не через аппаратный генератор случайных чисел чипа STM32, а через детерминированный программный псевдогенератор (PRNG). По разбору Block, сборка ссылалась на резервный алгоритм Yasmarang из MicroPython: библиотека libngu проверяла лишь факт существования макроса MICROPY_HW_ENABLE_RNG, а не то, включён ли он. Резервный генератор инициализировался уникальным идентификатором чипа и значениями таймеров и после запуска не собирал новой энтропии.
В результате эффективная энтропия сжалась до примерно 40 бит на модели Mk3 и около 72 бит на Mk4, Mk5 и Q — против 128 бит у нормальной 12-словной сид-фразы BIP-39. Атакующий, который может определить или достаточно сузить идентификатор устройства, состояние таймера и историю обращений к генератору, способен воспроизвести кандидатов сид-фразы офлайн, а затем сверить производные адреса с публичным блокчейном.
Что делать владельцам
31 июля Coinkite выпустила экстренную прошивку для всех затронутых моделей, но обновление не «чинит» уже созданную сид-фразу. Компания советует владельцам уязвимых кошельков сгенерировать новую фразу на исправленной прошивке и перевести монеты. Восстановление старого сида на обновлённой прошивке или в другом кошельке переносит слабость дальше.
Уязвимость определяется прошивкой, которая работала в момент создания сида, а не установленной сейчас. В зоне риска Mk4 и Mk5 до версии 5.6.0, Q до 1.5.0Q, а также ряд ранних выпусков Mk2 и Mk3. Не затронуты TAPSIGNER, OPENDIME и SATSCARD — у них другая кодовая база.
Coinkite отмечает, что сид, собранный минимум из 50 честных независимых бросков кубика в приватной обстановке, от этой ошибки не страдает. Отдельная надёжная парольная фраза BIP-39 создаёт независимый кошелёк, но заменить сид всё равно рекомендуют. Мультиподпись помогает лишь тогда, когда кворум собран не из одних затронутых устройств.
Имя атакующего не названо. Galaxy подчёркивает, что характерный почерк — комиссия 30 sat/vB без сдачи — выдаёт оператора, но не сам факт кражи: со стороны «зачистка» неотличима от обычного перемещения монет владельцем. Публично ничей сид пока не восстановлен и не сопоставлен с опустошённым адресом.
Источник: The Hacker News
Комментарии
Войдите, чтобы комментировать.