Уязвимость прошивки Coldcard привела к краже 1 367 BTC на $89 млн
Взлом аппаратных кошельков Coldcard выявил критическую проблему в одном из самых авторитетных устройств для хранения биткоина. Злоумышленники в три волны атак воспользовались ошибкой генерации seed-фраз в уязвимой прошивке и вывели около 1 367 BTC (примерно $89 млн) с тысяч адресов. Это не фишинг и не взлом биржи: атака была направлена на внутренний процесс создания ключей, а доступ к самим устройствам не требовался.
Что произошло: три волны вывода средств
30 июля 2026 года, около 12:00 UTC, неизвестный участник начал массово списывать BTC с кошельков Coldcard.
- Волна 1: за 25 минут было выведено 594 BTC (около $38 млн) примерно из 500 кошельков. По данным Chainalysis, атакующий выбирал самые "жирные" цели: более $30 млн он собрал за первые 10 минут, один кошелек потерял около $1,8 млн.
- Волна 2: в тот же день потери выросли до 1 367? Нет — до 1 082 BTC (примерно $70 млн) по 1 196 адресам за 41 минуту.
- Волна 3: к 2 августа совокупный ущерб достиг 1 367 BTC (около $89 млн) по 4 585 адресам.
Схема вывода указывает на заранее подготовленный список приоритетных адресов и последовательное "вычищение" крупнейших балансов. Общая "зачистка" продолжалась почти 30 часов, прежде чем Coinkite опубликовала первое публичное предупреждение. Galaxy Research позже выделила около 600 подозреваемых адресов, связанных с атакой, и передала их следователям. Исследователи также отметили сходство поведения в сети в Волнах 1 и 2, тогда как Волна 3 отличалась методами сбора средств.
Ключевой момент: уязвимость заложена в момент создания seed
Проблема была не в том, что кто-то украл приватные ключи или получил доступ к устройству. Уязвимые версии прошивки генерировали seed с недостаточной случайностью при инициализации кошелька. Это позволяло восстановить приватные ключи офлайн и затем просто "сметать" средства с адресов.
Таймлайн уязвимости
- 1 марта 2021: коммит меняет генерацию seed с ckcc.rng_bytes (использовал аппаратный RNG) на ngu.random.bytes (программный PRNG). Источники: advisory Coinkite; анализ блоков.
- 17 марта 2021: выходит прошивка v4.0.0 с ошибочным кодом; seed для Mk2 и Mk3 с этого момента имеют около 40 бит энтропии. Источник: advisory Coinkite.
- 2021–2026: баг сохраняется на протяжении пяти лет, проходя через обновления, проверки безопасности и аудит с использованием ИИ, не будучи обнаруженным. Источники: crypto.news; Bitcoin Magazine.
- 30–31 июля 2026: Coinkite публикует первые предупреждения, рекомендует миграцию seed и выпускает исправления. Источники: блог Coinkite; Bitcoin Magazine.
- 31 июля 2026: Block (компания Джека Дорси) публикует независимый технический разбор уязвимости RNG. Источник: анализ Block.
- 1 августа 2026: Coinkite расширяет advisory, признавая снижение энтропии также у Mk4, Mk5 и Q, и обновляет список затронутых устройств. Источники: PYMNTS; CyberInsider; Galaxy Research.
- 2–3 августа 2026: Galaxy Research передает данные по ~600 адресам федеральным следователям и профильным командам. Источники: The Hacker News; Galaxy Research.
Как работала ошибка: одна строка кода и пять лет тишины
Изначально seed формировался с опорой на аппаратный генератор случайных чисел в STM32. После изменений в марте 2021 года генерация стала использовать программный PRNG, зависящий от детерминированных параметров: серийного номера устройства, значений внутренних таймеров и истории предыдущих вызовов RNG. Эти данные затем прогонялись через SHA256d. Хеширование "перемешивает" вход, но не добавляет новой случайности: если входной набор ограничен, ограничен и выход.
Итог:
- Mk2/Mk3 в уязвимом периоде получали около 40 бит энтропии.
- Mk4/Mk5/Q имели дополнительный ввод от secure element, что повышало эффективную энтропию примерно до 72 бит.
Оба значения ниже ожидаемого уровня безопасности 128 бит для генерации seed в контексте Bitcoin.
По словам CEO Foundation Devices Зака Герберта, баг мог появиться на фоне крупного переписывания прошивки в марте 2021 года (в том числе из-за замены компонентов с GPL и перехода на новые криптобиблиотеки), а не как осознанное изменение модели безопасности. Факт остается фактом: дефект дожил до атаки, включая аудит с ИИ за несколько недель до инцидента.
Как атаковали: перебор 40-битных seed
Для Mk2/Mk3 с ~40 бит энтропии пространство вариантов составляет около 2^40 (примерно триллион). Это много на бумаге, но достижимо для современного оборудования при грамотном сужении области поиска. Атакующий мог оценивать возможные значения (UID, состояние таймеров, последовательности вызовов), воспроизводить потоки кандидатов seed полностью офлайн, получать из них адреса и сопоставлять с публичными данными блокчейна. Как только находился seed, дающий адрес с балансом, приватный ключ становился доступен, и средства выводились.
Galaxy Research допускает, что Волны 1 и 2 организовал один оператор; отличия в третьей волне могут указывать на независимого злоумышленника, который также успел воспользоваться информацией/находкой.
Кто в зоне риска: модели, прошивки, энтропия
Риск зависит не от текущей версии прошивки, а от той версии, на которой seed был создан. Обновление защищает только будущую генерацию seed и не "исправляет" уже созданную слабую seed-фразу.
Затронутые устройства:
- Mk2 / Mk3: seed, созданный на v4.0.0 / v4.0.1–v4.1.9, имеет ~40 бит энтропии. Исправление: v4.2.0+. Риск: максимальный; такие seed уже эксплуатировались.
- Mk4 / Mk5: seed, созданный до v5.6.0 (standard) / до v6.6.0X (Edge), имеет ~72 бита. Исправление: v5.6.0+ / v6.6.0X+. Массовая эксплуатация не подтверждена, но уровень ниже стандарта.
- Q: seed, созданный до v1.5.0Q (standard) / до v6.6.0QX (Edge), имеет ~72 бита. Исправление: v1.5.0Q+ / v6.6.0QX+. Аналогичный остаточный риск.
Отдельно: по оценке Block, конструкция имела "опасный fail-open" — при определенных условиях загрузки поиск мог сужаться до 2^32. Масштабного использования этой ветки пока не зафиксировано.
Когда риск минимален
Coinkite указывает, что пользователи, которые при создании seed добавили внешнюю энтропию — минимум 50 независимых и приватных бросков кубика — существенно нивелируют именно этот дефект PRNG. BIP39-пароль (passphrase) усложняет перебор, но не "лечит" слабую базовую seed, поэтому рекомендация по миграции для уязвимых seed сохраняется.
Действия Coinkite: исправления есть, вопросы остались
Coinkite выпустила первые advisory 30 и 31 июля — примерно через 30 часов после начала вывода средств — и опубликовала исправленные прошивки для всех затронутых линеек: v4.2.0 (Mk3), v5.6.0 (Mk4/Mk5), v1.5.0Q (Q). Компания также дала техразбор и инструкцию по миграции.
Критика касается двух пунктов: пятилетнее недообнаружение проблемы (несмотря на проверки и security-релизы) и задержка с публичным предупреждением, из-за которой часть пользователей не успела перевести средства до того, как атакующий дошел до их адресов. Отдельно исследователь Wizardsardine Кевин Лоэк отмечал риск для multisig-конфигураций с ключами, полученными из затронутых seed: advisory, по его мнению, не полностью закрывает практические последствия для таких схем.
Как безопасно мигрировать средства
Одного обновления прошивки недостаточно: слабость встроена в уже созданный seed. Нужны новый seed и перевод средств на новые адреса.
1) Обновите прошивку Coldcard до последней исправленной версии для вашей модели и ветки релизов. Скачивайте только с официального сайта Coinkite.
2) Создайте новый seed на обновленном устройстве (не восстанавливайте старый). Для усиления энтропии добавьте минимум 50 приватных бросков кубика.
3) Проверьте бэкап: корректно запишите слова, выполните проверку на устройстве. Сгенерируйте адрес получения и убедитесь, что он совпадает в ПО кошелька и на экране Coldcard.
4) Переведите весь BTC со старых адресов на адреса нового seed. Перед подписью тщательно проверьте адрес назначения и детали транзакции на устройстве.
5) Убедитесь в завершении миграции через надежный обозреватель блоков и проверьте, что на старых адресах не осталось средств.
6) Уничтожьте старый бэкап seed только после подтверждения всех переводов и проверки доступа к новому кошельку. Удалите все копии (физические и цифровые).
Важно: миграция требует on-chain транзакций, учитывайте комиссии и не ставьте чрезмерно низкую комиссию при срочном переводе.
Для multisig: каждый ключ, полученный из уязвимого Coldcard-seed, нужно ротировать; пересмотрите порог подписей, замените уязвимые ключи и проверьте новую конфигурацию до перемещения значимых сумм.
Что это значит для self-custody
Самостоятельное хранение опирается не только на контроль над ключами, но и на качественную генерацию случайности при их создании. Инцидент с Coldcard показывает: можно "владеть ключами" и потерять средства, если устройство генерировало их предсказуемо.
Случай стал третьим крупным провалом PRNG в крипто-индустрии за последние годы после Milk Sad (2023) и Ill Bloom (2026): в каждом эпизоде сбой был на этапе генерации ключей — этапе, который большинство пользователей не может независимо проверить.
Также история подчеркивает, что открытость исходников сама по себе не гарантирует безопасность: код был доступен для анализа, но дефект не находили пять лет. При этом доступ к коду остается необходимым условием для полноценного аудита сообществом.
По данным CoinDesk, подобные инциденты могут подталкивать часть инвесторов к Bitcoin ETF: они снимают операционные риски хранения ключей, но переводят риски на регулируемого кастодиана. Blockaid, в свою очередь, отмечала, что в первой половине 2026 года основные потери в крипто были связаны с компрометацией ключей и операционными ошибками, а не со взломами смарт-контрактов — взлом Coldcard укладывается в этот тренд.
Ответы на ключевые вопросы
- Может ли мой Coldcard быть скомпрометирован? Риск высок, если seed создан на Mk2/Mk3 с прошивкой v4.0.0–v4.1.9 без достаточной энтропии от бросков кубика. Mk4/Mk5/Q до патчей имеют около 72 бит энтропии: массовая эксплуатация не подтверждена, но уровень ниже 128 бит.
- Исправит ли проблему обновление прошивки? Нет. Обновление исправляет будущую генерацию seed, но не усиливает уже созданный слабый seed. Нужны новый seed и перевод средств.
- Затронуты ли Ledger и Trezor? Нет. Ledger, Trezor и Block (Bitkey) заявили о других механизмах генерации энтропии; эта конкретная уязвимость их seed не касается.
- Сколько украли? По состоянию на 2 августа 2026 года — около 1 367 BTC (примерно $89 млн) в три волны, затронуто 4 585 адресов. Расследование продолжается, оценки могут измениться.
- Кто атакующий? Личность не установлена. Galaxy Research считает, что Волны 1 и 2 могли быть делом одного оператора; третья волна могла быть независимой.
- Защищают ли броски кубика? Да, если использовано минимум 50 независимых и приватных бросков при генерации seed. Coinkite указывает, что при корректном выполнении этого шага риск по данной уязвимости минимален.
Материал носит информационный и образовательный характер и не является финансовой, инвестиционной, юридической или security-консультацией.