Сбой в генерации seed-фраз Coldcard привёл к краже биткоинов на $100 млн и затронул тысячи пользователей
Сводка рынка от ИИ
Сообщения о дефекте генерации сид-фразы Coldcard, позволяющем злоумышленникам вывести, по оценкам, 1,596 BTC (более $100 млн) с тысяч адресов, подрывают доверие к безопасности аппаратных решений для самостоятельного хранения. Хотя исправленная прошивка предотвращает появление слабых сидов в будущем, ранее созданные кошельки остаются уязвимыми, если пользователи не выполнят ротацию ключей и не мигрируют средства. Этот эпизод повышает премии за операционные риски и риски хранения, связанные с практиками хранения биткоина, и может спровоцировать краткосрочное смещение в сторону режима risk-off среди держателей, чувствительных к вопросам безопасности.
Степень влияния
● Средний
Затронутые активы
BTC/USDT+1.24%
Инсайт ИИ · BTC/USDTИнсайт ИИ
▼ Медвежий
Торговать
⚠️ Инсайты, сгенерированные ИИ, основаны на новостном контенте и предоставляются исключительно в информационных целях. Они не являются инвестиционной рекомендацией и не отражают позицию BingX. Торговля сопряжена с риском. Пожалуйста, торгуйте ответственно.
Торонтоcкий предприниматель Джонатан Гудман утверждает, что соблюдал все правила безопасного хранения биткоина. Его аппаратный кошелёк Coldcard с ключами никогда не подключался к интернету и лежал в банковской ячейке. Seed-фразу, которой он ни с кем не делился, он хранил в другой ячейке. Тем не менее 29 июля, по его словам, все его кошельки были полностью опустошены — украден каждый сатоши. Гудман сообщил о потере 18,25 BTC, что на момент атаки оценивалось чуть более чем в $1,17 млн. "Пожалуй, самое тяжёлое в том, что я всё сделал правильно", написал он 1 августа в посте на X.
Случай Гудмана оказался частью более масштабной кампании против пользователей Coldcard. По оценке Galaxy Research, с высокой степенью уверенности было похищено 1 596 BTC на сумму свыше $100 млн примерно с 7 300 адресов в ходе серии атак. Руководитель исследований Galaxy Алекс Торн 4 августа предположил, что уязвимостью пользовались как минимум 15 разных злоумышленников. Физический доступ к устройствам им не требовался.
Суть аппаратного кошелька в том, что секреты не покидают чип, а при отсутствии интернет-соединения удалённое проникновение невозможно. Пользовательские риски остаются — от банальной потери устройства до насильственного "wrench attack" — но ключевой аргумент в пользу таких кошельков состоит в защите от онлайн-взломов. В случае Coldcard эта гарантия дала сбой: проблема была не в самом устройстве, а в том, как формировалась секретная фраза (seed), защищающая монеты.
Кошельки бывают разными. Программные "горячие" кошельки работают на устройствах, подключённых к интернету: они удобны, но уязвимы при компрометации системы. Аппаратные "холодные" кошельки, включая Coldcard, держат ключи на отдельном устройстве без постоянного соединения с сетью. Ранним вариантом "холодного" хранения были бумажные кошельки, где ключи записывали на бумаге: взлому они не подвержены, но легко теряются или повреждаются. Аппаратные кошельки занимают промежуточное положение: их сложнее взломать, чем софт, и сложнее потерять, чем лист бумаги, но они не безупречны. Пользователю важно доверять, что устройство изначально корректно создаёт ключи.
"Airgap помогает, но это не идеальное решение. Безопасность должна начинаться с генерации ключей и продолжаться на каждом этапе хранения", сказал CoinDesk основатель TEXITcoin Бобби Грей. Именно на этапе генерации ключей, как выяснилось, у Coinkite — производителя Coldcard — и возникла проблема.
В марте 2016 года Coinkite, биткоин-компания из Торонто, сообщила клиентам о сворачивании своего хостингового горячего кошелька. Онлайн-сервис сопровождался постоянными DDoS-атаками, растущими юридическими расходами и регуляторными сложностями. Компания решила сместить фокус на децентрализованное железо и "software not as a service". Это происходило на раннем этапе рынка, до второго халвинга Bitcoin, когда 1 BTC стоил немногим выше $400.
Первым результатом разворота стал Opendime в апреле 2016 года: небольшой USB-носитель генерировал и скрывал приватный ключ, позволяя передавать биткоин как физический предъявительский инструмент. Нарушение пломбы раскрывала ключ и позволяло потратить средства. Вскоре появился Coldcard. В декабре 2017 года Coinkite анонсировала устройство под заголовком "The World Needs An Open, Cheap & Ultrasecure Hardware Wallet", критикуя конкурентов за высокую цену и зависимость от закрытых приложений. Исходный дизайн включал цифровую клавиатуру, экран, secure element и слот MicroSD. Пользователи могли переносить файлы неподписанных и подписанных транзакций между Coldcard и компьютером без установления живого канала передачи данных. Аккаунт Coinkite или десктопное приложение для работы с кошельком не требовались. Первые поставки начались в 2018 году.
Следующая модель, вышедшая в апреле 2019 года, получила дополнительные функции. С каждой версией Coldcard становился сложнее и, как предполагалось, технологичнее. Эта сложность была частью его привлекательности: устройство ориентировали на пользователей, готовых проверять детали транзакций, управлять резервными копиями и выстраивать собственную модель безопасности. Duress PIN-коды, зашифрованные бэкапы на MicroSD, поддержка multisig и возможность использовать броски кубиков для добавления энтропии — всё это адресовали тем, кто воспринимает хранение как противоборство с потенциальным противником.
Код Coldcard был публичным: можно было изучать прошивку, воспроизводить сборку и сравнивать её с релизом Coinkite, что соответствовало принципу Bitcoin "don't trust, verify". Но, как показал инцидент, в ключевой части процесс не был проверен достаточно внимательно.
Сбой в генерации seed появился в Coldcard после крупного изменения ПО в 2021 году и оставался незамеченным годами. Прошивку 4.0.0 Coinkite описывала как "All New Code, Same Great Features": код заменили новыми эквивалентами, добавили воспроизводимые сборки и поблагодарили аккаунт "switck" за "new source code library". Разработчик Bitcoin Джеймс О'Бирн (James O'Beirne) заявил, что установил принадлежность аккаунта "switck" сооснователю Coinkite Питеру Грею (Peter Gray), обнаружив 58 изменений кода под этим именем с той же криптографической подписью, что использовалась Греем в коммитах от своего имени. Такие подписи служат цифровыми "автографами" и показывают, что работу одобрял один и тот же секретный ключ. Coinkite на запрос об этом утверждении не ответила.
Switck разработал libngu — набор переиспользуемого кода, включённого в прошивку Coldcard на устройствах клиентов. Одна из функций библиотеки — помощь в получении случайности при создании кошелька. О'Бирн сообщил, что во время аудита кода Coldcard в мае 2025 года усомнился в том, как формируется эта случайность. Проследив её источник до libngu, он указал Coinkite на возможный дефект. По словам О'Бирна, компания ответила, что реальную проблему, вероятно, уже обнаружили бы. Позже он написал о Питере Грее: "Это тот же человек, который отмахнулся от моего сообщения о возможности дефекта в мае 2025 года".
Качество случайности критично: новый кошелёк должен выбрать seed из гигантского множества вариантов. Непредсказуемость измеряется в битах "энтропии"; каждый дополнительный бит удваивает число возможных значений и делает seed сложнее для угадывания. В идеале Coldcard должен был получать случайность от выделенного аппаратного генератора внутри устройства. На практике из-за ошибки конфигурации кошелёк переключался на более простой программный генератор, использующий данные о устройстве и таймингах. Эти данные не являются полностью случайными, их можно сузить или воспроизвести, резко уменьшая число seed, которое злоумышленнику нужно перебрать.
Проще говоря, код Coldcard должен был выбирать секрет каждого кошелька из настолько огромного пространства, что перебор невозможен. Но из-за ошибки "подключения" он обращался к более слабому источнику, который уменьшал пространство вариантов до уровня, пригодного для перебора.
Команда по инженерии и безопасности Bitcoin в Block объяснила, что ошибка свелась к тому, как два компонента ПО читали настройку. Параметр должен был отключать один источник случайных чисел после добавления другого. Libngu проверял лишь наличие настройки, а не то, включена она или выключена. Прошивка собиралась без ошибок, но использовала неверный генератор. По данным Block, затронутые устройства Mk2 и Mk3 в этом процессе вообще не получали защищённой случайности. Mk4, Q и Mk5 получали её частично, но софт сохранял лишь небольшую долю. Coinkite оценивает, что у новых устройств seed генерировались с 72 битами энтропии вместо задуманных 128 — это означает примерно в 72 квадриллиона раз меньше возможных вариантов.
Block связала уязвимый код с прошивкой 4.0.0, выпущенной 17 марта 2021 года. Coinkite называет версию 4.0.1 первым затронутым релизом для пользователей Mk2 и Mk3. Исходники были в открытом доступе, а правильный аппаратный генератор присутствовал в финальной прошивке. Рецензенты подтверждали наличие компонента, но не прослеживали процесс генерации seed от начала до конца и не определяли, какой генератор реально используется. Coinkite сообщила, что проверки с помощью ИИ, проведённые до краж, тоже не выявили ошибку; тесты с несколькими ведущими моделями ИИ уже после инцидента также не смогли её обнаружить.
Coinkite пообещала опубликовать более подробный разбор сбоя и заявила, что напрямую помогает пострадавшим клиентам. На запрос CoinDesk компания не ответила.
Производитель выпустил исправленные прошивки для всех затронутых моделей Coldcard и веток релизов. Обновление исправляет генерацию seed в будущем, но не усиливает seed, уже созданные уязвимым ПО. Согласно предупреждению Coinkite, пользователям нужно установить исправленную прошивку, создать новый seed и перевести биткоины на адреса, производные от него.
Coldcard создавался как инструмент, позволяющий биткоинерам отказаться от кастодианов и сократить число сторон, которым нужно доверять. Инцидент не возвращает доверие к бирже или банку как контрагенту, но показывает другую зависимость самохранения: ключи у пользователя, но именно производитель кошелька определяет, насколько безопасно эти ключи были созданы.
Ключ от биткоин-активов Гудмана на миллион долларов лежал в банковской ячейке — внутри устройства, которое никогда не выходило в интернет. Из-за дефекта в программной генерации seed Coldcard эти физические меры защиты не сыграли роли.