Уязвимость Coldcard: за 41 минуту похищено биткойнов на $70 млн

· Безопасность
Ошибка в прошивке аппаратного кошелька Coldcard свела генерацию сид-фразы к предсказуемому программному генератору. 30 июля злоумышленник опустошил 1196 адресов, выведя 1082,65 BTC.

cover.svg

Кража за 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

Комментарии

Войдите, чтобы комментировать.

  • Пока нет комментариев.