Уязвимость в генерации случайности в Coldcard Wallet раскрывает слабое место в безопасности аппаратных кошельков

iconTechFlow
Поделиться
AI summary iconСводка
Недавний отчет о уязвимости выявил критический дефект случайности в аппаратных кошельках Coldcard. Проблема, представляющая угрозу безопасности для нескольких моделей, возникла из-за обновления прошивки в марте 2021 года. Вместо использования аппаратного генератора случайных чисел кошелек применял слабый детерминированный алгоритм. Это снизило энтропию seed-фраз и повысило уязвимость к атакам методом перебора. Coinkite и Block обнаружили, что у скомпрометированных seed-фраз пространство поиска составляло 40–72 бита. Пользователям настоятельно рекомендуется создать новые seed-фразы вручную и произвести перевод средств. Более 77 402 BTC уже были перемещены с затронутых адресов.

Автор: Лайам «Акиба» Райт

Саоирш, Foresight News

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

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

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

Высококачественный современный генератор случайных чисел может выводить достаточный уровень энтропии. Однако, если злоумышленник знает логику работы генератора случайных чисел, он может восстановить весь процесс генерации.

Ручной бросок костей предоставляет пользователям набор случайных источников, где случайность является интуитивно понятной и контролируемой, а также независимой от кода, написанного производителем.

Скрытые слабые места безопасности кошелька Bitcoin

Генерация семени в Coldcard содержит скрытые уязвимости. Злоумышленники могут генерировать кандидаты на семя вне устройства, преобразовывать их в публичные адреса и сопоставлять с записями транзакций на публичном блокчейне Bitcoin для проведения атаки.

Техническая причина уязвимости настолько мала, что вызывает тревогу. 1 марта 2021 года изменение кода переместило функцию генерации семени Coldcard в новую кодовую базу. В серийной прошивке параметр MICROPY_HW_ENABLE_RNG был установлен в значение 0, что означает отключение аппаратного генератора случайных чисел; однако логика интеграции кода проверяла только наличие этого параметра, а не его значение. Если параметр существовал, система отказывалась от аппаратного генератора случайных чисел и переключалась на детерминированный алгоритм Yasmarang из MicroPython в качестве резервного варианта. Согласно совместному отчету Block, этот дефектный логический механизм был официально выпущен в прошивке версии 4.0.0 17 марта.

Сгенерированные мнемонические фразы выглядят абсолютно нормально, но скрытый пространство для перебора значительно сокращено. По предварительным расчетам Coinkite, эффективное пространство поиска для зараженных моделей Mk2 и Mk3 составляет около 40 бит; для зараженных моделей Mk4, Mk5 и серии Q — около 72 бит.

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

Оба аналитических отчета подтверждают, что все поздние модели до исправления прошивки находились в зоне риска. В безопасностном уведомлении Coinkite указано, что受影响 прошивки Mk4 и Mk5 до стандартной версии 5.6.0 и Edge 6.6.0X, а также прошивки серии Q до стандартной версии 1.5.0Q и Edge 6.6.0QX. Для Mk2 и Mk3 Coinkite указывает рискованные версии с 4.0.1 по 4.1.9, в то время как команда Block считает, что уязвимость существовала уже с версии 4.0.0. В связи с спорной границей версий пользователям рекомендуется соблюдать осторожность.

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

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

Bitcoin Optech опубликовал оценочные данные на 31 июля, согласно которым объем под угрозой активов превышает 1000 биткоинов. По состоянию на 2 августа Galaxy Research оценивает, что примерно 1367 биткоинов находятся под угрозой в 4585 адресах. Пользователь X-платформы с ником Graham_Quantum сообщил, что 29 июля от связанных кошельков было переведено 18,25245043 биткоина.

После раскрытия информации о сообщении множество пользователей перевели активы в целях защиты от рисков, что привело к еще более масштабному движению капитала. После раскрытия информации об уязвимости 77 402 биткоина были переведены из пула старых неизрасходованных выходных транзакций (UTXO).

Требуется различать два типа данных:

Эта авария вызвала два серьезных последствия: во-первых, хакеры украли активы, во-вторых, произошла еще более масштабная волна добровольного перемещения пользователей для обеспечения своей безопасности.

Уязвимость кошелька Coldcard, связанная с утечкой примерно 89 миллионов долларов США, вызвала крупнейший с момента краха FTX поток переводов биткоинов в блокчейне и серьезно затруднила интерпретацию рыночных сигналов. Тысячи пользователей срочно перевели биткоины из своих старых кошельков, что сделало трудно различимыми подлинные и ложные медвежьи сигналы, исходящие от ключевых показателей блокчейна.

Ручной бросок костей может привести к каким изменениям?

Официальная документация Coldcard по костям: честный шестигранный кубик при каждом независимом броске генерирует примерно 2,585 бита энтропии. 50 бросков обеспечивают примерно 129,25 бита исходной энтропии, что соответствует стандартной безопасности 128 бит; 99 бросков генерируют примерно 255,91 бита исходной энтропии, что практически достигает стандарта безопасности 256 бит (это значение еще не обработано встроенным алгоритмом преобразования кошелька).

Эти значения соответствуют широко используемому стандарту BIP-39 для мнемонических фраз: 12 слов кодируют 128 бит энтропии плюс 4 бита контрольной суммы; 24 слова кодируют 256 бит энтропии плюс 8 бит контрольной суммы.

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

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

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

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

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

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

Настройте高强度, уникальный BIP-39 пароль, который повышает порог атаки на другом уровне. Пароль эквивалентен отдельному ключу; даже если злоумышленник получит мнемоническую фразу, ему всё равно нужно взломать пароль, чтобы получить доступ к активам. Обратите внимание: энтропия самой мнемонической фразы не увеличивается за счёт добавления пароля. Любой пароль (даже если введён с ошибкой в одном символе) порождает набор допустимых адресов кошелька; при потере пароля активы будут навсегда заблокированы. PIN-код аппаратного кошелька имеет совершенно иное назначение, чем пароль.

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

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

Уязвимость Coldcard вновь напоминает всем: основа безопасности кошелька Bitcoin — это достаточная сила случайности в момент генерации семени. Подобные базовые дефекты ранее неоднократно обнаруживались в различных кошельках.

В 2023 году Ledger Donjon сообщил, что определённая версия браузерного расширения Trust Wallet использует в пути выполнения WebAssembly случайное семя, генерируемое на основе 32-битного алгоритма Мерсенна. Все такие, казалось бы, нормальные мнемонические фразы происходят из примерно 4 миллиардов начальных значений. Риск четко определён: браузерные расширения версий 0.0.172–0.0.182, использующие Trust Wallet Core версии ранее 3.1.1. Уязвимость зафиксирована в Национальной базе уязвимостей США и была использована в декабре 2022 года и в марте 2023 года.

Событие «уязвимость Milk Sad» наглядно демонстрирует аналогичные риски. Команда bx seed в Libbitcoin Explorer 3.x использует 32-битный алгоритм Мерсеннского торнадо, инициализированный системным временем; при одинаковых условиях часов программное обеспечение может сгенерировать идентичные мнемонические фразы. Атакующему, достаточно точно знающему время создания семени, потребуется значительно меньший переборный диапазон, чем тот, который подразумевается внешним видом мнемонической фразы.

Исследователи обнаружили более 2600 активно используемых кошельков Bitcoin в пределах рискового диапазона; по оценкам на август 2023 года, связанная с ними стоимость украденных активов на нескольких блокчейнах превышает 900 000 долларов США. Более 2550 кошельков демонстрируют признаки автоматизированных операций и, скорее всего, принадлежат одному владельцу. Исследователи также отметили, что некоторые инциденты кражи активов, возможно, были связаны с другими уязвимостями в безопасности.

Эти уязвимости каждый раз появляются под разными масками: Coldcard случайно активирует резервный алгоритм генерации случайных чисел в прошивке; браузерное расширение Trust Wallet и командная утилита Libbitcoin генерируют слабые случайные числа из-за зависимости от системных часов. В результате сгенерированные ключи кошелька выглядят безупречно, но размер пула ключей, подверженного перебору, настолько мал, что создает смертельную угрозу.

Большинство рекомендаций по хранению биткоинов на рынке начинаются после генерации семени: оффлайн-хранение мнемонической фразы, использование прочных носителей резервных копий, изоляция прав доступа, тестирование процесса восстановления. Эти меры по-прежнему имеют ценность. Но инцидент с Coldcard напоминает нам, что防线 безопасности нужно сдвинуть немного вперед.

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

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