Взлом Coldcard Mk3: как хакеры вывели 594 BTC за 25 минут
Суть инцидента
Во время спланированного налета 30–31 июля 2026 года произошла первая в истории массовая атака на холодные кошельки без фишинга и физдоступа.
- Масштаб кражи - от 594,48 до 1082+ BTC
- Общий ущерб - 38,5–64 млн $
- Пострадавшие - более 500 холдеров
- Охваченные адреса - 1324 UTXO в 500 транзакциях
- Скорость кражи - 15–25 минут (всего 3 блока)
Техническая причина бага
Проблема под названием Entropy Bug возникла еще в марте 2021 после обновления прошивки Coldcard до версии 4.0.1.
В корне Entropy Bug лежит архитектурный сбой прошивки, который лишил кошельки Coldcard истинной случайности. Из-за этого криптографическая защита сид-фраз рухнула с безопасного стандарта 256 бит до 40.
Об этой уязвимости кошельков мы предупреждали в отдельном материале.
Хронология уязвимости:
- Компания Coinkite обновила модель лицензирования и заменила стандартные криптобиблиотеки.
- Ошибка в коде отрезала доступ к аппаратному генератору случайных чисел.
- Вместо случайности система использовала ID чипа, таймер и историю вызовов.
- Кошельки начали создавать предсказуемые детерминированные фразы.
Для надежной генерации 24 слов сид-фразы по словарю BIP-39 требуется 128 бит истинной энтропии (подобрать ее вслепую нереально). В уязвимых Coldcard Mk3 реальная энтропия упала до ~40 бит. Хакеру потребовалось лишь симулировать нажатия кнопок настройки с шагом таймера, чтобы полностью вытащить приватники. Кошелек с уязвимой прошивкой стал генерировать сид фразы в формате AES-CTR.
В итоге, стремясь запретить конкурентам копировать свой код, производитель заменил стандартные библиотеки GPL на свои макросы, допустил ошибку в одном из них и создал дыру на 38 млн $.
Как ИИ помог взломщикам?
Атака получила название Remote Drain Attack (удаленное опустошение). Для ее реализации хакеры привлекли нейросети.
- ИИ нашел математические закономерности в генерации чисел.
- Уровень энтропии в MK3 упал с 256 бит до 32–40 бит.
- Подбор ключа занимает меньше часа на обычном ноутбуке.
- Аренда GPU-сервера обходится хакерам всего в 33–66 $ в час.
Исследователи использовали ИИ Kimmy K3 (специализированный LLM-агент), которая «прожевала» историю коммитов и код прошивки, обнаружив баг в макросе RNG за считанные часы после получения наводки на временной диапазон.
Кто находится в зоне риска?
Уязвимость затронула владельцев кошельков, создавших сид-фразы в период с 2021 по 2026 год.
Исследования независимых экспертов и компании Block позволили четко разделить пользователей на 2 группы.
Максимальная опасность
- Модель Coldcard MK2 (из-за старых механизмов)
- Модель Coldcard MK3 (на прошивках от 4.0.1 до 5.0.3)
- Модели MK4, MK5 и Q со стандартным типом генерации
Полная безопасность
- Если сид создавался с помощью минимум 100 бросков реальных кубиков методом Dice Rolls.
- Если фраза изначально сгенерирована на Trezor или SeedSigner и импортирована в Coldcard.
- Кодовое слово BIP39 длиной 6–10 слов полностью блокирует брутфорс.
- Использование мультиподписи на устройствах разных брендов.
Экспресс-тест на уязвимость
Чтобы понять, находятся ли ваши биткоины в опасности, проверьте кошелек по 4 критериям. Риск потери монет максимален, если совпадают все пункты из группы риска.
Чек-лист проверки Coldcard
- Кошелек был сгенерирован в период с марта 2021 года по июль 2026 года.
- В меню Advanced/Tools -> Version указана версия выше 4.0.1 (для модели MK3).
- При создании фразы НЕ использовались физические кубики (Dice Rolls).
- У кошелька нет сложной кодовой фразы (Passphrase).
Обязательно проверьте свои адреса в блокчейн-обозревателях. Тревожный маркер - появление подозрительных транзакций по консолидации ваших UTXO.
Экстренные меры
Главное - сохраняйте спокойствие, чтобы не совершить критических ошибок при выводе.
- Подготовьте безопасное место
Возьмите аппаратный кошелек другого бренда или временно установите горячий кошелек (Electrum, Bitcoin Core) на гарантированно чистый ПК. Как вариант - используйте аккаунты бирж Bybit или Kraken. - Проведите тест
Отправьте небольшую тестовую сумму на новый адрес. - Проверьте бэкап
Убедитесь, что новая сид-фраза записана верно и дает доступ к тестовым средствам. - Эвакуируйте остаток
Переведите все оставшиеся цифровые активы на новый безопасный адрес.
Об уязвимости с Replace-By-Fee
Есть так же уязвимость для пользователей Coldcard, создавших мультиподписной адрес из 2 скомпрометированных (плохих) сид-фраз. Пока монеты лежат на адресе - они в безопасности, т.к. адрес является хешем, и злоумышленники не могут вычислить его. Однако при попытке потратить средства неподтвержденная транзакция раскрывает публичные ключи, и вор, уже имеющий приватные ключи, может с помощью функции RBF (Replace-By-Fee) создать свою транзакцию с более высокой комиссией и перехватить средства до подтверждения исходной.
Решение в том, чтобы временно отключить RBF по всей сети. Но проблема в том, что в Bitcoin Core 29 и выше возможность отключить RBF убрали. Поэтому, майнерам и операторам нод надо использовать Bitcoin Knots (или старые версии Core), где в конфиге можно прописать memreplacement=0, чтобы не ретранслировать и не майнить RBF-замены.
Если вы решили заново использовать Coldcard
Если вы решили заново настроить кошелек Coldcard, то сначала все равно полностью выводим монеты.
Затем переходим по цепочке Advanced -> Tools -> Danger Zone -> Seed Functions. Тапаем на Destroy Seed, чтобы обнулить девайс. Внимание! Это уничтожит сид-фразу, поэтому убедитесь что она у вас сохранена.
На этапе новой конфигурации жмем New Seed words -> Advanced -> 12/24-word dice roll. После этого вручную забиваем выпавшие на кубиках цифры.
- Полностью откажитесь от встроенного TRNG. Создавайте сид исключительно через Dice Rolls (минимум 100 бросков реальных кубиков).
- Обязательно добавьте к новому кошельку фразу Passphrase длиной от 6 слов.
- Выбейте сид-фразу на титановой или стальной пластине для защиты от пожара и воды.
Долгосрочная стратегия безопасности
Для долгосрочной безопасности настройте мультиподпись по надежной схеме 2-из-3. Для этого используйте аппаратные кошельки 3 абсолютно разных производителей, например - комбинацию из девайсов Ledger Flex, Trezor Safe 3 и OneKey Classic 1S. Такой подход гарантирует, что даже успешный взлом или критическая уязвимость одного конкретного бренда не приведут к потере ваших цифровых активов.
Помимо этого, обязательно проводите регулярный аудит используемых методов хранения каждые 6–12 месяцев. Ландшафт киберугроз стремительно меняется под влиянием развития нейросетей, поэтому своевременный пересмотр мер защиты поможет вовремя заметить новые риски и уберечь капитал от автоматизированного брутфорса.
Разбор вопросов
Какой самый главный шаг для защиты средств?
Сгенерировать чистую мнемонику с помощью устройства, не связанного с Coldcard (например, Seed Signer + кости), и эвакуировать все биткоины на адреса, созданные от этого нового сида. Переносить старый сид в другой кошелек бессмысленно - уязвимость останется.
Почему маркетинговые обещания биткоин-только и воздушный зазор не спасают от подобных инцидентов?
Прецедент показал, что эти термины сами по себе не гарантируют защиту. Безопасность зависит от качества реализации генерации случайных чисел, а не от маркетинговых ярлыков.
Сколько ручных манипуляций придется совершить ради безопасного создания ключа вместо обычного тапа на кнопку генерации?
Чтобы обеспечить железную энтропию, придется сделать минимум 120 бросков костей или подбрасываний монеты. Любая попытка сократить это число срезает криптостойкость вашего сида.
Из-за чего официальные релизы CoinKite о неуязвимости Mark IV расходятся с отчетами независимых ресерчеров?
Разработчики CoinKite опираются на устаревшие тесты. В то же время специалисты из Zero Knowledge и BitKey на практике воспроизвели вектор атаки на линейку Mark IV / Q / V. Расходы на такой взлом будут падать по мере прокачки нейросетей.
Почему кошелек пустует при интеграции со Sparrow, хотя файл конфигурации уже залит в программу?
При выгрузке данных через generic JSON требуется руками прописать номер аккаунта 0. Сам по себе этот параметр в софте не проставляется.
Требуется ли генерировать свежую сид-фразу после апдейта прошивки Cold Card?
Определенно, это критический шаг. Апдейт софта до версий 1.5.0 для Q и 5.6.0 для MK4/5 чинит генерацию исключительно для последующих мнемоник. Прежняя сид-фраза уязвима с уровнем энтропии 40–72 бит, поэтому ее нужно экстренно заменить на новую, созданную уже после патча.
Как безопасно вывести средства из мультисига, если один из ключей скомпрометирован?
Прямой засыл в публичный мемпул несет огромные риски из-за перехвата через RBF. Логичнее задействовать сервис прямой передачи пулам, например Mars Slipstream. Тогда транзакция останется скрытой до момента ее включения в блок, что полностью исключает фронтраннинг.
Сколько бит энтропии было у скомпрометированных устройств и сколько уже украдено?
Модель MK3 выдавала всего 40 бит энтропии. По сложности это сопоставимо с добычей блока в 2009 году. Модели MK4, MK5 и Q ограничивались 72 битами. На момент расследования в блокчейне ончейн-аналитики обнаружили перемещение около 1000 BTC, выведенных через данный эксплойт.
Какая точная причина падения энтропии в коде?
В конфиге платы макрос MICROPY_HW_ENABLE_RNG жестко прописан в 0. Библиотека libngu проверяет исключительно факт объявления макроса, игнорируя его значение. Из-за этого аппаратный RNG отваливается, а софт втихую переключается на детерминированный генератор Yasmarang, который заводится от UID и таймерных регистров.
В чем фатальная ошибка официальной инструкции CoinKite по обновлению?
Обновление прошивки может закирпичить устройство, оставляя владельца без работающего подписывающего девайса для перевода средств. Это вынуждает импортировать старую скомпрометированную сид-фразу в горячий кошелек.
Напомним, что мы в обзорах на криптокошельки честно пишем и изучаем все их уязвимости. Аппаратные даже разбираем, как Ledger Nano Gen5, чтобы посмотреть, что внутри и критикуем все недочеты.
