Объяснение взлома Coldcard Wallet: как слабая генерация seed поставила под риск годы Bitcoin
Ключевые выводы
- •Скоординированный злоумышленник вывел 1,367.05 BTC по наблюдаемым трём волнам из кошельков Coldcard, а предполагаемая четвёртая волна может поднять общую экспозицию примерно до 1,815.75 BTC.
- •Уязвимость возникла из-за миграции прошивки 2021 года, которая заставила генерацию seed использовать программный резервный генератор случайных чисел вместо предполагаемого аппаратного источника, снизив энтропию seed на Mk2 и Mk3 до примерно 40 бит.
- •Устройства Mk2 и Mk3 на версиях прошивки 4.0.1–4.1.9 пострадали сильнее всего, тогда как более поздние Mk4, Q и Mk5 использовали энтропию secure element, которая уменьшила, но не устранила риск.
- •Coinkite выпустила исправленную прошивку для затронутых линеек, но подтвердила, что обновление не может исправить уже созданные через уязвимый процесс seed; пользователям нужно создать полностью новые кошельки и аккуратно перевести средства.
- •Две независимые меры могли бы снизить риск для конкретного кошелька: добавить не менее 50 честных бросков костей при создании seed, чтобы обеспечить 128 бит независимой энтропии, или использовать сильную уникальную фразу-пароль BIP-39.
От 25-минутной зачистки к многоэтапному инциденту
Перевод 594 BTC стал заголовком из-за своей скорости и скоординированности. В сообщениях о первой волне говорилось, что примерно 562 BTC впоследствии были консолидированы в один адрес. Картина указывала на автоматизацию: многие старые выходы с одной подписью были выведены подряд, при этом злоумышленник, по-видимому, забирал весь доступный баланс, а не действовал как обычный пользователь кошелька.
Оценка потерь на этом не остановилась. Руководитель Galaxy Research Алекс Торн продолжил отслеживать транзакции со схожим характером. К 2 августа его наблюдаемая оценка для трёх волн атаки достигла 1,367.05 BTC по 4,585 исходным адресам, что составляло около $88.6 million по актуальной ценовой ссылке в его обновлении.
3 августа Торн отметил ещё один кластер между блоками Bitcoin 960,778 и 960,792. Первичный анализ выявил 218 транзакций, переведших более 380 BTC с 462 предполагаемых адресов жертв на 210 новых адресов назначения. Позднее сообщения, основанные на его анализе, расширили потенциальный кластер примерно до 448.7 BTC по 709 адресам.
Для этой четвёртой группы нужна осторожная формулировка. Некоторые транзакции всё ещё ожидали подтверждения с включённым replace-by-fee, что теоретически позволяло жертве заменить вредоносную неподтверждённую транзакцию, предложив более высокую комиссию. Торн описал эту картину как, вероятно, ещё одну волну Coldcard, а не как окончательно подтверждённую цифру потерь. Механическое добавление 448.7 BTC к предыдущему итогу даёт примерно 1,815.75 BTC, но это потенциальная оценка экспозиции по четырём волнам, а не окончательный установленный объём кражи.
| Этап | Наблюдаемая активность | Статус на 4 августа 2026 |
|---|---|---|
| Первая крупная зачистка | Около 594 BTC примерно с 500 исходных адресов с одной подписью примерно за 25 минут | Широко освещалось и было видно в блокчейне |
| Оценка по трём волнам | 1,367.05 BTC по 4,585 адресам | Наблюдаемая оценка Galaxy Research |
| Предполагаемая четвёртая волна | Сначала выявлено более 380 BTC; поздняя оценка — около 448.7 BTC по 709 потенциальным адресам жертв | Высокая степень соответствия паттерну, но некоторые транзакции были в ожидании или могли быть заменены |
| Потенциальный итог по четырём волнам | Примерно 1,815.75 BTC, если включить полную оценку по четвёртой волне | Предварительно, не окончательный подтверждённый общий объём потерь |
Количество волн атаки важно, но это не самая глубокая часть истории. Более сложный вопрос — как злоумышленник смог контролировать кошельки, чьи закрытые ключи, как предполагалось, должны были оставаться офлайн.
Изменение кода 2021 года, ослабившее генерацию seed
Seed биткоин-кошелька — это не просто список слов. Это удобочитаемое представление секретной энтропии, из которой кошелёк выводит закрытые ключи. Если эта энтропия создана корректно, угадать seed вычислительно нереалистично. Если же возможные входные данные резко ограничены, те же слова могут выглядеть совершенно обычными, обеспечивая при этом гораздо меньшую безопасность.
Команда Bitcoin Engineering and Security компании Block отследила проблему Coldcard до изменения, внесённого во время миграции криптографической библиотеки в 2021 году. Coldcard перевёл генерацию seed с ckcc.rng_bytes(), который обращался к аппаратному генератору случайных чисел платы, на gu.random.bytes().
Неправильный генератор за правильным интерфейсом
Конфигурация устройства определяла MICROPY_HW_ENABLE_RNG как ноль, потому что Coldcard предоставлял отдельную обёртку для аппаратного RNG. Проверка в библиотеке смотрела на то, определён ли этот макрос, а не на то, включён ли он. Поскольку макрос существовал, сборка успешно проходила. Но вызов функции разрешался в программный резервный вариант MicroPython Yasmarang вместо предполагаемого аппаратного источника.
Этот резервный вариант инициализировал себя с использованием значений, включая часть уникального идентификатора микроконтроллера и регистров таймера. Эти входные данные могут меняться, но это метаданные устройства и состояние времени, а не свежая криптографическая случайность. Как только известны соответствующее состояние и число предыдущих вызовов генератора либо они достаточно ограничены, результирующий поток является детерминированным.
Для затронутых прошивок Mk2 и Mk3 Block не обнаружил криптографически сгенерированного секрета, добавленного по этому пути. Предварительная модель атаки Coinkite оценивала эффективное пространство поиска примерно в 40 бит. Block представил более условный анализ: практический поиск зависит от знания идентификатора устройства, таймеров и истории вызовов, и компания не утверждала, что выполнила полный сквозной бенчмарк brute force.
Поздние устройства Mk4, Q и Mk5 включали материал secure element в генератор, снижая серьёзность проблемы, но не восстанавливая предполагаемый запас безопасности. Block установил, что в функцию reseed при фиксированном резервном состоянии и истории вызовов попадали только четыре байта дайджеста, что оставляло максимум 2^32 криптографически различимых выходных потоков при таком условии. Coinkite оценила примерно 72 бита эффективного пространства поиска по своим более широким предпосылкам атаки. Эти цифры описывают разные модели, но оба анализа приходят к одному операционному выводу: более поздние устройства были менее подвержены риску, чем затронутые Mk2 и Mk3, однако всё равно требовали исправления.
Почему хэширование не могло восстановить недостающую энтропию
Coldcard хэшировал сгенерированное 32-байтное значение перед тем, как превратить его в материал кошелька. Это может сделать выход статистически равномерным, но хэш не может создать возможности, которых не было во входных данных. Если генератор способен выдавать лишь ограниченное семейство кандидатов, то хэширование этих значений даёт только такое же число возможных seed.
Тот же принцип применим к контрольной сумме BIP-39. Она помогает обнаруживать ошибки при переписывании; она не добавляет секретную случайность. Следовательно, корректно выглядящая фраза из 12 или 24 слов может быть криптографически слабой, если процесс её выбора был предсказуемым.
Как можно было опустошить офлайн-кошелёк
Публичный блокчейн дал злоумышленнику нечто ценное: цель для проверки. Адреса Bitcoin, открытые ключи, раскрытые при предыдущих тратах, и расширенные открытые ключи, которыми делятся с программным обеспечением кошелька, всё это может помочь определить, принадлежит ли угаданный закрытый ключ или seed целевому кошельку.
Правдоподобная атака могла бы генерировать кандидаты состояний RNG, выводить соответствующие seed и адреса и сравнивать их с адресами с балансом в блокчейне. Когда кандидат совпадал, злоумышленник получал бы те же полномочия на подпись, что и владелец. Сам Coldcard при этом не должен был бы ни разу связываться со злоумышленником.
Так объясняется, как могут сосуществовать холодное хранение и кража. Кошелёк оставался офлайн, но его секрет мог быть воспроизводимым в другом месте.
Точная операционная схема остаётся неизвестной. Block указал, что практическая стоимость зависит от таких сведений, как UID устройства, время загрузки, предыдущие вызовы RNG и работа по выводу ключей. Его исследователи не завершили полное эмпирическое тестирование эксплойта к моменту публикации рекомендации. Никакое авторитетное изложение не установило, как именно злоумышленник получил или ограничил все необходимые входные данные, какое оборудование использовалось и участвовал ли более чем один человек.
Coinkite предположила, что злоумышленник мог использовать искусственный интеллект для анализа исторической open-source прошивки. Это не является доказательством атрибуции. Код был публичным много лет, и его могли выявить как традиционная проверка, так и ревью с помощью ИИ. Обоснованный вывод состоит в том, что уязвимость можно было обнаружить по исходному коду, а не в том, что ИИ доказанно был методом злоумышленника.
Какие кошельки Coldcard были затронуты
Block датировала уязвимый путь генерации прошивкой 4.0.0 в марте 2021 года. Пользовательское уведомление Coinkite определяет диапазон затронутых выпусков Mk2/Mk3 как версии с 4.0.1 по 4.1.9 включительно. Для более поздних устройств Coinkite предупреждала, что seed, созданные на Mk4 и Mk5 до стандартной прошивки 5.6.0, а также на Q до 1.5.0Q, тоже были затронуты. Отдельные ветки Edge требовали 6.6.0X для Mk4/Mk5 и 6.6.0QX для Q.
Подверженность риску определяется прошивкой, использованной в момент создания seed, а не той, что установлена сегодня. Обновление устройства меняет поведение будущей генерации; оно не изменяет уже существующий seed.
Coinkite выделила две независимые защиты, которые могли существенно изменить риск конкретного кошелька. По данным компании, не менее 50 честных, приватных и независимых бросков костей, добавленных при первоначальном создании seed, обеспечивали не менее 128 бит независимой энтропии. Сильная, уникальная фраза-пароль BIP-39 также создаёт отдельный барьер, который должен преодолеть злоумышленник. Ни короткую passphrase, ни PIN устройства не следует считать эквивалентной защитой.
Мультиподписные схемы требуют столь же осторожного подхода. Уязвимый ключ Coldcard не обязательно означает компрометацию кошелька, если для него по-прежнему нужны подписи достаточного числа независимо безопасных устройств. Но кворум, полностью состоящий из уязвимых seed, может сохранить ту же базовую проблему. Защита обеспечивается достаточным порогом независимо сгенерированных, безопасных ключей, а не самим ярлыком multisig.
Исправление Coinkite и проблема миграции
Coinkite выпустила hotfix для затронутых линеек продуктов и рекомендовала пользователям не генерировать заменяющие seed до установки соответствующей исправленной прошивки. Руководство компании однозначно по самому важному пункту: обновления прошивки не могут восстановить seed, созданные неисправным процессом.
Пользователи с затронутыми seed должны создать совершенно новый seed на исправленной прошивке, проверить новый fingerprint кошелька и адрес получения, отправить небольшую тестовую транзакцию и только затем переводить оставшийся баланс. Старая резервная копия должна оставаться доступной до полного подтверждения перевода. Спешка на этом этапе может привести к новой потере из-за неверного адреса, неполной резервной копии или ошибки в passphrase.
TAPSIGNER, OPENDIME и SATSCARD не затронуты, поскольку используют другие кодовые базы. Это ограничение важно. Инцидент серьёзный, но он не означает, что все продукты Coinkite или все аппаратные кошельки имеют одну и ту же уязвимость.
Что сбой Coldcard меняет в понимании холодного хранения
«Cold» описывает отношение кошелька к сетям. Это не подтверждает, как были созданы его закрытые ключи, следовала ли прошивка предполагаемому пути выполнения или безопасно ли были обработаны резервная копия и passphrase.
Сбой Coldcard выявил разрыв между проверкой компонентов и поведением системы. Предполагавшийся код аппаратного RNG действительно присутствовал в двоичном файле прошивки. Программный резервный вариант тоже имел ожидаемую сигнатуру функции. Предыдущая проверка подтвердила наличие хорошего компонента, но не установила, какая именно реализация фактически использовалась при генерации кошелька через интегрированные библиотеки.
Это отрезвляющий урок для безопасности open-source. Публичный код позволяет независимую проверку, но публикация — не то же самое, что непрерывный сквозной аудит. Сборки, критичные к безопасности, должны иметь тесты, подтверждающие, что энтропия действительно доходит до вызывающей стороны, завершаться с ошибкой в закрытом режиме, если нужный источник недоступен, и измерять поведение скомпилированных артефактов, а не предполагать, что исходное намерение сохраняется после интеграции.
Для пользователей вывод не в том, чтобы отказаться от self-custody. Он в том, чтобы понимать: self-custody переносит ответственность через несколько уровней — подлинность оборудования, происхождение прошивки, энтропию seed, силу passphrase, изоляцию резервных копий, разнообразие multisig и способность безопасно мигрировать при обнаружении дефекта.
Первые 594 BTC исчезли за минуты. Условия, сделавшие эти переводы возможными, могли существовать более пяти лет. Этот временной разрыв — главный сигнал: холодный кошелёк может годами оставаться молчаливым и, казалось бы, безопасным, пока слабость в его исходном seed ожидает обнаружения.
Торговля Bitcoin с плечом — без отказа от контроля над активами
Децентрализованные perpetual-биржи давно вышли за рамки нишевого сегмента. Согласно отчёту CoinGecko 2025 Annual Crypto Industry Report, объём торговли perpetual на DEX за прошлый год вырос на 346% до $6.7 trillion, тогда как открытый интерес на централизованных биржах за тот же период снизился на 20.8%. Трейдеры направляют серьёзный капитал в ончейн-деривативы, и причины просты: контрагентский риск реален, сбои у кастодианов случаются, а устойчивость к цензуре имеет значение.
edgeX — это децентрализованная биржа perpetual-фьючерсов, созданная для трейдеров, которые хотят доступа к рынку без отказа от контроля.
Почему трейдеры выбирают edgeX для BTC perpetual
- Без KYC, без барьеров. Подключите кошелёк и начните торговать без проверки личности и одобрения аккаунта.
- Настоящий self-custody. edgeX сочетает сопоставление ордеров вне цепочки с проверяемым ончейн-урегулированием, защищённым Ethereum. Механизмы forced-withdrawal позволяют восстановить средства напрямую из блокчейна, даже если оператор уйдёт офлайн.
- Глубокая ликвидность, узкие спреды. edgeX поддерживает глубину рынка $10 million в пределах спреда в один базисный пункт, со скольжением менее 0.1 базисного пункта на сделках свыше $100,000.
- Плечо до 100x. Трейдеры могут масштабировать позиции в соответствии со своей системой риска, будь то хеджирование экспозиции или торговля импульсом.
- 100% вознаграждения торговой комиссии. Активные трейдеры могут получать вознаграждения за свою торговую активность, со временем снижая чистую стоимость высокочастотных стратегий.
- Инфраструктура институционального уровня. edgeX обрабатывает до 200,000 ордеров в секунду при задержке сопоставления ниже 10 миллисекунд.
Используйте своё видение рынка Bitcoin
Торгуйте BTC/USDC perpetual futures на edgeX, сохраняя контроль над своими активами. Плечо усиливает как прибыль, так и убытки, поэтому размер позиции, дистанция до ликвидации и стоимость финансирования остаются важнейшими элементами управления рисками.
Часто задаваемые вопросы
Удалённо ли хакеры получили доступ к устройствам Coldcard?
Ни одно авторитетное расследование не показало удалённый доступ к затронутым устройствам. Описываемый механизм предполагает офлайн-восстановление кандидатов seed или закрытых ключей из ослабленного процесса генерации случайных чисел и проверку их по публичной информации блокчейна.
Нарушил ли этот инцидент шифрование Bitcoin?
Нет. Уязвимость касалась генерации seed кошелька в затронутой прошивке Coldcard. Не было показано, что базовая система подписей Bitcoin была криптографически взломана.
Защищает ли установка самой новой прошивки уже существующий кошелёк?
Она защищает будущую генерацию seed в исправленном релизе, но не может восстановить seed, созданный на затронутой прошивке. Coinkite рекомендует создать новый seed и перевести средства после тщательной проверки заменяющего кошелька.
Были ли все модели Coldcard одинаково уязвимы?
Нет. Затронутая прошивка Mk2/Mk3 использовала самый опасный путь. Mk4, Q и Mk5 добавили энтропию secure element и были оценены как менее подверженные риску, но Coinkite всё же классифицировала затронутые доисправительные seed как достаточно серьёзную проблему, требующую миграции. Важны продукт, ветка прошивки и дата создания seed.
Является ли 1,815.75 BTC подтверждённой суммой украденного?
Нет. Наблюдаемая оценка Galaxy Research по трём волнам составила 1,367.05 BTC. Примерно 448.7 BTC было связано с вероятной четвёртой волной, но часть транзакций оставалась в ожидании или могла быть заменена, пока кластер анализировался. Совокупная цифра — это предварительная оценка экспозиции, а не окончательный подтверждённый объём потерь.