Яндекс.Метрика
Услуги Портфолио Контакты БлогНовости +7 (800) 511‑32‑27 Обсудить проект
Безопасность

Баг генератора случайных чисел Coldcard привёл к краже биткоинов на $89 млн

5 августа 2026·7 мин чтения
ColdcardГСЧ
Баг генератора случайных чисел Coldcard привёл к краже биткоинов на $89 млн

Коротко о главном

Прошивка аппаратных кошельков Coldcard (производитель — канадская Coinkite) пять лет незаметно использовала предсказуемый программный генератор случайных чисел вместо аппаратного. Из-за ослабленной энтропии сид-фраз злоумышленники смогли восстановить приватные ключи офлайн и вывели около 1367 BTC (~$89 млн) с 4585 адресов, начиная с 30 июля 2026 года. Coinkite выпустила исправленную прошивку и предупреждение: сиды, сгенерированные на уязвимых версиях, нужно считать скомпрометированными и переносить средства на новый ключ.

Причина — не взломанная криптография, а тихий откат к слабому источнику случайности, который никто не заметил пять лет. Для команд, которые проектируют кошельки, платёжные и любые системы с генерацией ключей, это наглядный урок: случайность — такая же граница безопасности, как аутентификация, и её нужно проверять тестами, а не доверием. В нашей практике разработки блокчейн-решений и информационной безопасности именно генерация ключей и энтропия — первое, что мы закладываем в модель угроз.

Ниже — что именно сломалось в прошивке, как это привело к краже, кого затронуло и какие практические выводы стоит сделать инженерным командам, чтобы не повторить ошибку Coldcard в собственном коде.

Что именно сломалось в прошивке

Корень проблемы — одно изменение в прошивке от 1 марта 2021 года. Coldcard хотела отключить встроенный генератор случайных чисел MicroPython, чтобы использовать собственный аппаратный источник — RNG микроконтроллера STM32. Для этого параметру MICROPY_HW_ENABLE_RNG присвоили значение ноль. Но библиотека libngu проверяла только сам факт, что параметр определён, а не его значение. В результате условие сработало наоборот: функция ngu.random стала молча откатываться к программному детерминированному ГСЧ MicroPython (алгоритм Yasmarang) вместо аппаратного RNG.

Yasmarang — быстрый некриптографический генератор с 32-битным пересевом (reseed). Это значит, что всё пространство возможных сид-фраз, которые могло произвести устройство, сжималось до величины, поддающейся перебору: вместо заявленных 128 бит энтропии сиды на моделях Mk4, Mk5 и Q имели порядка 72 бит, а на более старых устройствах — ещё меньше. Специалисты Block Engineering, опубликовавшие технический разбор, подчёркивают: устройство внешне работало нормально, показывало «случайную» сид-фразу и не подавало никаких признаков сбоя. Ошибка была не в железе, а в том, что проверка конфигурации валидировала наличие флага, а не его смысл.

Как слабая энтропия превращается в кражу

Криптовалютный кошелёк — это, по сути, пара ключей, выведенная из большого случайного числа (сида). Безопасность самокастодиального хранения целиком держится на предположении, что это число невозможно угадать: 128 бит энтропии дают пространство, которое не переберёт никакая вычислительная мощность. Но как только энтропия падает до 40–72 бит, предположение рушится — атакующий может заранее сгенерировать все вероятные сиды, вывести из них адреса и просто проверить блокчейн на наличие средств.

Именно это и произошло. Первая и крупнейшая волна вывода прошла 30 июля 2026 года: около 1083 BTC были сметены примерно с 1200 адресов за 41 минуту — скорость, возможная только при заранее вычисленных ключах. Последующие волны 31 июля и 1 августа довели наблюдаемый итог до 1367 BTC с 4585 адресов. Характерная деталь: многие пострадавшие кошельки годами лежали без движения — средний срок неактивности превышал три года, то есть под удар попали именно долгосрочные держатели, уверенные, что «холодное» хранение защищает их по определению.

Кого это затронуло

По уведомлению Coinkite, подтверждённая эксплуатация касается устройств Coldcard Mk2 и Mk3, чьи сид-фразы были сгенерированы на прошивках версий с 4.0.0 по 5.0.3. При этом сиды, созданные на моделях Mk4, Mk5 и Q до выхода исправленных релизов, также ослаблены — около 72 бит вместо 128. Уязвимы именно ключи, сгенерированные самим устройством в затронутый период; сиды, импортированные извне (например, введённые вручную из другого источника энтропии), не затронуты этим конкретным дефектом.

Практический вывод для владельцев: если сид создавался на Coldcard в 2021–2026 годах, его следует считать потенциально скомпрометированным. Обновление прошивки чинит генератор на будущее, но не «лечит» уже созданный слабый сид — средства нужно переводить на новый кошелёк со свежесгенерированным ключом на исправленной прошивке. Аудит истории собственного устройства здесь важнее, чем реакция на заголовки.

Что это значит для команд разработки

Этот инцидент выходит далеко за пределы криптоиндустрии — он про то, как незаметно ломается безопасность в любом коде, где есть генерация секретов. Ключевые уроки для инженерных и продуктовых команд:

Случайность — это граница безопасности, а не деталь реализации. Токены сессий, ключи шифрования, соли, одноразовые коды, идентификаторы восстановления — всё это опирается на криптографически стойкий генератор (CSPRNG). Использование обычного random(), предсказуемого ГСЧ или тихого фолбэка на слабый источник компрометирует всю систему, даже если сами алгоритмы шифрования безупречны.

Тихий фолбэк опаснее явной ошибки. Система Coldcard не падала и не выдавала предупреждений — она продолжала работать, выдавая слабые ключи. Конфигурация, которая при неверном значении молча деградирует вместо того, чтобы отказать явно (fail closed), — это антипаттерн. Проверяйте не факт наличия флага, а его корректное значение, и делайте недопустимую конфигурацию причиной остановки, а не тихого отката.

Не изобретайте криптографию и тестируйте энтропию. Правило «не пиши свою крипту» касается и обвязки вокруг стандартных примитивов — источника случайности, пересева, работы с ключами. Добавляйте статистические и «известные-плохие» тесты на выход генератора в CI, чтобы деградация энтропии ловилась автоматически, а не спустя пять лет.

Смотрите на цепочку поставки прошивки и зависимостей. Ошибка сидела на стыке собственного кода и сторонней библиотеки (libngu × MicroPython). Ревизия того, как ваши зависимости обрабатывают конфигурацию безопасности, и регулярный аудит кода критических путей — дешевле любого инцидента.

Как действовать прямо сейчас

Владельцам аппаратных кошельков Coldcard: обновите прошивку до исправленной версии, но не считайте это достаточным — если сид генерировался устройством в затронутый период, создайте новый кошелёк на обновлённой прошивке и переведите на него средства. Не переиспользуйте старую сид-фразу.

Командам, которые строят продукты с генерацией ключей или секретов: проведите инвентаризацию всех мест, где создаётся случайность, убедитесь, что везде используется CSPRNG платформы, и добавьте в тесты проверку, что фолбэк на слабый генератор невозможен в принципе. Относитесь к источнику энтропии как к части модели угроз, а к конфигурации безопасности — как к коду, который обязан отказывать явно.

Часто задаваемые вопросы

Что произошло с кошельками Coldcard? В прошивке был баг: из-за неверной проверки конфигурационного флага устройство молча использовало предсказуемый программный генератор случайных чисел (Yasmarang) вместо аппаратного RNG микроконтроллера STM32. Это резко снижало энтропию сид-фраз и позволяло восстанавливать приватные ключи перебором.

Сколько украдено? По данным на начало августа 2026 года — около 1367 BTC (примерно $89 млн) с 4585 адресов. Волны вывода начались 30 июля 2026 года; первая волна сместила ~1083 BTC примерно с 1200 адресов за 41 минуту.

Какие устройства и прошивки затронуты? Подтверждена эксплуатация Coldcard Mk2 и Mk3 с сидами на прошивках 4.0.0–5.0.3. Сиды, сгенерированные на Mk4, Mk5 и Q до исправленных релизов, тоже ослаблены (~72 бита вместо 128). Импортированные извне сиды этим дефектом не затронуты.

Достаточно ли обновить прошивку? Нет. Обновление чинит генератор на будущее, но не восстанавливает стойкость уже созданного слабого сида. Средства нужно перенести на новый кошелёк со свежим ключом, сгенерированным на исправленной прошивке.

Взломали ли криптографию Bitcoin? Нет. Криптографические алгоритмы не пострадали. Проблема была в источнике случайности при генерации ключей на конкретных устройствах — это ошибка реализации, а не слабость самого протокола.

Источники

Block Engineering Blog — Predictable RNG Fallback and 32-Bit Reseed in COLDCARD Firmware (технический разбор первоисточника), 2026.

BleepingComputer — COLDCARD wallet RNG flaw likely linked to $88 million Bitcoin theft, 2026.

The Hacker News — Coldcard Hardware Wallet Flaw Linked to $70 Million Bitcoin Theft in 41 Minutes, 2026.

CoinDesk — Bitcoin cold-wallet attack spreads to 4,500 addresses as losses near $89 million, 2 августа 2026 года.

Материал подготовлен редакцией YuSMP Group по открытым источникам. Нужна экспертиза по безопасности или разработка под задачу — обсудим проект.