При поддержке
Featured

Объяснение уязвимости Coldcard: кто потерял биткоины и кому грозит опасность

30 июля злоумышленник воспользовался слабыми семенами, сгенерированными некоторыми аппаратными кошельками Coldcard, чтобы похитить биткоины на сумму примерно в десятки миллионов с сотен адресов.

АВТОР
ПОДЕЛИТЬСЯ
Объяснение уязвимости Coldcard: кто потерял биткоины и кому грозит опасность

Основные выводы

  • 30 июля в результате краж, связанных с Coldcard, были похищены биткойны из сотен кошельков.
  • По данным Coinkite, семена Mk3 имели энтропию около 40 бит вместо 128.
  • Пользователи Coldcard должны установить исправленную прошивку и сгенерировать новые седы перед переводом средств.

Согласно глубокому анализу Galaxy Research, основная часть кражи произошла в ходе тщательно скоординированной серии действий, длившейся около 25 минут, в то время как более широкий анализ позже установил связь примерно между 1 196 адресами и суммой в 1 083 биткойна, стоимостью почти 70 миллионов долларов, с активностью, продолжавшейся примерно 41 минуту. Окончательные цифры могут измениться, поскольку следователи продолжают отслеживать транзакции в публичной цепочке блоков Биткойна.

Пятилетняя уязвимость затронула биткойн-кошельки по всему миру

Пострадавшие кошельки в основном принадлежали долгосрочным держателям, которые сгенерировали свои семена восстановления с помощью устройств Coldcard, работающих на уязвимой прошивке, выпущенной с марта 2021 года и позже. Coldcard — это аппаратный кошелек с воздушной изоляцией, произведенный канадским производителем Coinkite и предназначенный для хранения ключей от биткоинов (BTC) в изоляции от устройств, подключенных к интернету.

Многие из опустошенных адресов оставались неактивными в течение многих лет. Злоумышленник действовал быстро, платил завышенные фиксированные комиссии за транзакции и не оставлял выходов сдачи, что означает, что каждый адрес был полностью опустошен. Такая схема указывает на автоматизированную операцию с использованием заранее подготовленного списка закрытых ключей, а не на самостоятельное перемещение средств клиентами.

Кража не была вызвана фишингом, вредоносным ПО на компьютере пользователя, кражей физического устройства или обычным удаленным взломом. Вместо этого ошибка в прошивке ослабила степень случайности, используемую при создании семян кошельков на некоторых устройствах Coldcard. Эти семена выглядели нормально, но были взяты из гораздо более узкого диапазона возможных комбинаций, чем было обещано пользователям.

Генератор случайных чисел Coldcard незаметно вышел из строя

Семенная фраза биткойн-кошелька — это секретный набор, обычно представленный в виде 12 или 24 слов, на основе которого кошелек генерирует свои адреса и приватные ключи. Правильно сгенерированная семенная фраза из 12 слов содержит 128 бит энтропии — технический показатель, описывающий огромное количество возможных комбинаций, что делает угадывание семенной фразы фактически невозможным.

Устройства Coldcard должны были получать эту случайность от аппаратного генератора случайных чисел, встроенного в микроконтроллер устройства. Этот компонент использует физический электрический шум, который внешний наблюдатель не должен быть в состоянии предсказать.

Однако во время миграции программных библиотек в 2021 году компания Coinkite сообщила, что произошла путаница между двумя функциями генерации случайных чисел с одинаковыми интерфейсами. Одна из них обращалась к надлежащему аппаратному генератору устройства. Другая представляла собой слабый программный резервный вариант, предназначенный для плат без соответствующего аппаратного обеспечения.

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

Заводские данные и временные параметры заменили истинную случайность

Этот резервный вариант в значительной степени полагался на предсказуемую информацию об устройстве, включая идентификатор чипа, аналогичный серийному номеру, и значения внутренних тактовых частот, связанные со временем запуска. Злоумышленник, способный сузить эти входные данные, столкнулся бы с гораздо меньшим объемом поиска, чем 128-битный диапазон, ожидаемый от надежно сгенерированного семенного числа.

По оценкам Coinkite, эффективное пространство поиска для уязвимых семян Mk3 при текущих допущениях составляет около 40 бит. Это по-прежнему большое количество возможностей, но его можно прочесать с помощью специализированного вычислительного оборудования, особенно если злоумышленник может сравнивать возможные семена с биткойн-адресами, видимыми в блокчейне.

Screenshot of the Coldcard Mk3 model.
Снимок модели Coldcard Mk3.

Более поздние модели Coldcard, включая Mk4, Q и Mk5, добавили некоторую степень случайности за счёт защищённого элемента. Однако только ограниченная часть этой случайности доходила до уязвимого генератора, в результате чего эффективная энтропия семян, созданных до установки исправленной прошивки, составляла примерно 72 бита. Это было надежнее, чем в Mk3, но все же ниже запланированного 128-битного стандарта.

Разница аналогична замене действительно случайной комбинации замка на комбинацию, полученную на основе серийного номера замка и времени его первого включения. Получившаяся комбинация может выглядеть случайной, но тот, кто знает формулу и может оценить исходную информацию, сможет её воспроизвести. Многие пользователи переходят не только с устройств Mk3, но и с Mk4, Q и Mk5.

Coinkite рекомендует пользователям создать совершенно новые седы

Coinkite опубликовала рекомендации по безопасности и выпустила исправленную прошивку после того, как узнала об активной угрозе. Компания заявила, что пользователи, сгенерировавшие седы на уязвимой прошивке, должны создать совершенно новый сед с помощью исправленной версии и перевести свои биткойны на адреса, контролируемые этим седом.

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

Coinkite рекомендовала пользователям обновить устройство, создать новый сед, проверить резервную копию и отпечаток кошелька, подтвердить адрес получения, отправить небольшую тестовую транзакцию, а затем перевести оставшийся баланс. Пользователям следует сохранить старую резервную копию до подтверждения перевода, но больше не рассматривать старый сед как безопасный.

Компания указала исправленные версии, включая Mk3 версии 4.2.0 и выше, Mk4 и Mk5 версии 5.6.0 и выше, а также Q версии 1.5.0Q и выше, наряду с соответствующими версиями Edge. Продукты Tapsigner, Opendime и Satscard используют другой код и, по имеющимся данным, не подверглись воздействию уязвимости.

Дополнительная защита для некоторых владельцев Coldcard

Пользователи, которые добавили достаточное количество независимых бросков кубика при генерации седа, были в значительной степени защищены, поскольку их собственная случайность перевесила дефектный ввод программного обеспечения. Coinkite заявила, что как минимум 50 частных бросков честного кубика обеспечивают адекватную защиту от этой проблемы, хотя дополнительные броски могут обеспечить более широкий запас безопасности.

Надежный пароль по стандарту BIP-39 также создает отдельный кошелек, который невозможно восстановить, опираясь только на слова седа. Кошельки с мультиподписью, для перевода биткойнов в которых требуются ключи с нескольких устройств или из разных мест, были в значительной степени или полностью защищены, когда уязвимый сед Coldcard представлял собой лишь одну часть схемы подписания.

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

Coinkite берет на себя ответственность, а дискуссия переходит к ИИ

Генеральный директор Coinkite Родольфо Новак, широко известный как NVK, 31 июля публично извинился и заявил, что компания принимает на себя полную ответственность за сбой в прошивке. «Мне очень жаль, и я ошеломлен. Наша команда глубоко опечалена вчерашними новостями», — написал Новак. Он признал, что исправление защищает вновь созданные седы, но не может восстановить седы, сгенерированные с помощью уязвимого программного обеспечения.

Coinkite CEO Rodolfo Novak's article screenshot.
Статья с извинениями генерального директора Coinkite Родольфо Новака. Источник изображения: X.

Новак пояснил, что Coinkite опубликует полный технический отчет после проверки деталей и окажет помощь пострадавшим пользователям, желающим подать заявления в полицию, страховые иски или инициировать независимые расследования. Он также предупредил разработчиков, что инструменты искусственного интеллекта (ИИ) теперь могут сканировать старый открытый код на наличие скрытых уязвимостей быстрее, чем это позволяют сделать традиционные процессы проверки.

Coinkite подчеркнула, что должна исходить из того, что злоумышленник использовал ИИ для анализа её прошивки с открытым исходным кодом, хотя нет доказательств того, как именно была обнаружена эта уязвимость. Компания также признала, что недавняя проверка, проведённая с помощью ведущей модели ИИ, не выявила эту проблему. Несколько производителей аппаратных кошельков-конкурентов обратились к социальным сетям, чтобы отметить, что их продукты не затронуты этой проблемой.

«На Ledger не распространяется недавно опубликованное предупреждение о Coldcard Mk3», — сообщила компания пользователям X после инцидента с Coldcard. «Устройства Ledger используют сертифицированный генератор истинных случайных чисел (TRNG), встроенный непосредственно в наш чип Secure Element, который генерирует полную 256-битную энтропию для каждой 24-словной секретной фразы восстановления».

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

Аккаунт Trezor X добавил:

«Мы всегда комбинировали несколько независимых источников случайности (аппаратное обеспечение устройства + хост + защищенные элементы в более новых моделях). Мы искренне сожалеем о том, что кто-то потерял биткоины».

На что следует обратить внимание пользователям Coldcard

Личность злоумышленника по-прежнему неизвестна, и похищенные биткоины могут быть переведены с адресов-сборников в любой момент. Специалисты по расследованию продолжают работу, чтобы определить, сколько уязвимых седов было фактически сгенерировано, какая сумма биткоинов по-прежнему находится под угрозой и были ли уже выявлены злоумышленником другие кошельки с крупными суммами. Однако у Coinkite, возможно, нет достаточной информации о владельцах, которые пользовались услугами компании давно.

«Забавный палка о двух концах: Coinkite удаляет все записи о клиентах через 120 дней для защиты от утечек данных», — сообщил на X соучредитель Casa Джеймсон Лопп. «А это означает, что они не могут связаться с клиентами, которые приобретали уязвимые coldcards в течение последних 5 лет, чтобы предупредить их об этой уязвимости».

X screenshot of the pseudonymous open-source bitcoin developer calle.
Разработчик биткойн-программного обеспечения с открытым исходным кодом, известный под псевдонимом calle, поделился своими мыслями по этому поводу. «Мне действительно очень жаль всех, кто пострадал, особенно тех, кто, возможно, только что лишился сбережений всей жизни. Самое ужасное в том, что они все делали правильно», — написал calle в X.

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

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

Злоумышленник, использующий метод «Coldcard», похитил 30 млн долларов за 10 минут, атаковав крупные кошельки

Злоумышленник, использующий метод «Coldcard», похитил 30 млн долларов за 10 минут, атаковав крупные кошельки

Компания Chainalysis установила, что злоумышленник, атаковавший Coldcard, похитил примерно 30 миллионов долларов в течение 10 минут, уделив при этом первоочередное внимание кошелькам с наибольшими суммами. Более 38 миллионов долларов

Эта статья была переведена с английского языка с помощью искусственного интеллекта. Оригинальная версия на английском языке является авторитетным источником; автоматические переводы могут содержать неточности, особенно в юридической и нормативной терминологии.

Теги в этой статье