Аппаратный кошелёк Coldcard с треснувшим замком на фоне биткоин-символов и бинарного кода

Баг в Coldcard позволил украсть 1082 BTC за 41 минуту

Аналитики Galaxy Research зафиксировали беспрецедентный инцидент: 30 июля 2026 года злоумышленник опустошил 1196 биткоин-адресов, похитив 1082,65 BTC. На тот момент сумма оценивалась примерно в 70,2 миллиона долларов. Атака заняла всего 41 минуту.

Расследование указало на уязвимость в прошивке популярного аппаратного кошелька Coldcard от канадской компании Coinkite. Этот девайс позиционируется как решение исключительно для биткоина.

Корень проблемы: ошибка интеграции PRNG

Согласно отчёту Block, в марте 2021 года в конфигурационный файл Coldcard вкралась роковая ошибка. Сборка прошивки была настроена так, что вместо аппаратного генератора случайных чисел (RNG) чипа STM32 использовался программный псевдослучайный генератор (PRNG) — Yasmarang из библиотеки MicroPython.

Код проверял лишь наличие макроса MICROPY_HW_ENABLE_RNG, а не его истинное значение. Coinkite определила его как ноль, поскольку предоставляла собственную обёртку для аппаратного RNG. Однако библиотека этого не учла.

Инициализация программного генератора опиралась на уникальный идентификатор устройства и регистры таймера. После запуска энтропия больше не пополнялась.

Злоумышленник, способный определить или достаточно ограничить UID устройства, состояние таймера и историю вызовов RNG, может воспроизвести выходные потоки-кандидаты офлайн, не имея физического доступа к устройству.

Последствия и оценка энтропии

Эффективная энтропия seed-фразы упала до 40 бит на модели Mk3 и примерно до 72 бит на более новых Mk4, Mk5 и Q. При стандарте BIP-39 для 12 слов требуется 128 бит. Это делает атаку полного перебора практически реализуемой при определённых условиях.

Проверить seed-кандидата просто: достаточно вычислить производные адреса и сверить их с данными публичного блокчейна. Именно этим, предположительно, и воспользовался неизвестный.

Уязвимость затрагивает следующие версии прошивок:

  • Mk2 и Mk3: версии с 4.0.0 по 4.1.9 (исправлено в 4.2.0).
  • Mk4 и Mk5: всё до 5.6.0.
  • Модель Q: всё до 1.5.0Q.
  • Edge-сборки: до 6.6.0X для Mk4/Mk5 и до 6.6.0QX для Q.

Coinkite выпустила экстренное обновление для всех затронутых моделей уже 31 июля. Однако установка патча не делает скомпрометированный seed безопасным. Компания призывает пользователей создать новый seed на обновлённой прошивке и незамедлительно переместить средства.

Восстанавливать старый seed на пропатченном устройстве или в другом кошельке нельзя — уязвимость переносится вместе с фразой.

Нюансы защиты и поиск виновного

Coinkite уточняет: если при создании seed использовалось не менее 50 бросков игральных костей с хорошей энтропией, прямой угрозы от данного бага нет. Но при любых сомнениях в случайности или приватности бросков миграция обязательна.

Использование стойкой BIP-39 парольной фразы генерирует отдельный кошелёк, недоступный по одним лишь seed-словам. И всё же компания советует заменить и такой seed. Схемы с мультиподписью помогают, только если кворум не собран исключительно из уязвимых устройств Coldcard.

Продукты TAPSIGNER, OPENDIME и SATSCARD используют иные кодовые базы и не подвержены проблеме.

Личность атакующего не установлена. В Galaxy Research отметили, что замеченная sweep-транзакция сама по себе не доказывает кражу — аналогичный паттерн мог бы оставить и законный владелец, решивший переместить монеты.

Публичное раскрытие последовало за июльским исследованием Coinspect. Тот выявил другую уязвимость слабого PRNG в старых программных кошельках, которая привела к краже более 5 миллионов долларов в нескольких сетях, включая Bitcoin, Ethereum, Tron и Polygon.

Читайте также: Аппаратные уязвимости: могут ли ваши устройства быть заражены изнутри

Источник: The Hacker News

Похожие записи