Об инциденте стало известно после того, как 30 июля с примерно 500 биткойн-адресов с одной подписью было переведено около 594 $BTC, стоимость которых на тот момент составляла около 38 млн долларов. Когда новость впервые появилась, Bitcoin.com News отметил, что переводы произошли в течение примерно 25 минут и, по-видимому, были направлены на кошельки с общей технической уязвимостью.
Позже анализ блокчейна позволил оценить возможные масштабы кражи. Исследователи подсчитали, что за период около 41 минуты могли пострадать от 1 082 до 1 196 адресов. Впоследствии специальная панель мониторинга под названием Coldcard Sweep Watch оценила общую сумму в 1 128,4717 $BTC, что на тот момент, когда биткоин торговался на уровне около 63 044 долларов, составляло примерно 71,1 млн долларов.

Большая часть средств была сконцентрирована на одном адресе, на котором хранились сотни биткойнов, и значительная часть этих средств оставалась практически неподвижной. Затронутые адреса объединяла одна важная деталь: их семена восстановления были созданы на аппаратных кошельках Coldcard, произведенных канадской компанией Coinkite.
Семенная фраза — это список слов, который контролирует доступ к криптовалютному кошельку. Любой, кто сможет восстановить или получить эту семенную фразу, как правило, может переводить средства с кошелька, не имея физического устройства.
Coldcard обнаружила уязвимость в системе генерации случайных чисел
Coinkite выпустила срочное предупреждение о том, что некоторые семена, сгенерированные на устройствах Coldcard, могут быть уязвимы. Устройства Mk3 с версией прошивки 4.0.1, выпущенной примерно в марте 2021 года, и более поздние версии оказались в числе тех, которые подвергались наибольшему риску.
Дальнейший анализ расширил круг опасений, включив в него семена, созданные на некоторых устройствах Mk4, Mk5 и Q до того, как Coinkite выпустила экстренные исправления прошивки. По имеющимся данным, продукты Tapsigner, Opendime и Satscard не подверглись воздействию этой уязвимости, поскольку в них используется другое программное обеспечение.
Уязвимость была связана с процессом генерации случайных данных. Безопасность кошельков зависит от высокого качества случайности, чтобы их семена восстановления нельзя было угадать. По оценкам исследователей, на наиболее серьезно затронутых устройствах Mk3 семя могло содержать лишь около 40 бит эффективной случайности вместо предусмотренных 128 бит.
Эта разница имеет решающее значение. Правильно сгенерированный 128-битный сед считается практически невозможным для угадывания методом перебора. 40-битный сед предлагает значительно меньше вариантов, что позволяет злоумышленнику, обладающему достаточной вычислительной мощностью, тестировать потенциальные седы в автономном режиме и сравнивать полученные адреса с публичной цепочкой блоков Биткойна.
Некоторые более новые устройства, возможно, обеспечивали примерно 72 бита эффективной случайности, поскольку безопасное аппаратное обеспечение добавляло ещё один уровень непредсказуемых данных. Это затрудняло бы восстановление семян, хотя они по-прежнему оставались бы гораздо более уязвимыми, чем предполагалось.
Одна ошибка в настройке просуществовала 5 лет
Проблема началась с ошибки конфигурации на этапе сборки, связанной с двумя программными функциями, выполнявшими схожие задачи. Одна функция использовала аппаратный генератор истинных случайных чисел устройства, в то время как другая полагалась на более слабый программный процесс, унаследованный от MicroPython.
Coinkite намеревалась отключить опцию MicroPython. Однако программная проверка проверяла только наличие определения конфигурационного метки, а не то, было ли её значение установлено в ноль. В результате готовая прошивка могла незаметно выбирать более слабую функцию.
Поскольку обе функции имели одинаковые форматы, программное обеспечение продолжало компилироваться и работать без появления явных ошибок. Ошибка проникла в код во время миграции программного обеспечения в 2021 году и оставалась в общедоступной прошивке более пяти лет.
Обновление устройства в настоящее время не усиливает сед, сгенерированный с помощью неисправного программного обеспечения. Пострадавшие пользователи должны создать совершенно новый сед с помощью исправленной прошивки или другого безопасного устройства, а затем перевести свои средства на адреса, контролируемые этим новым седом.

Пользователи, которые при создании своего седа добавили не менее 50 независимых бросков кубика, возможно, обеспечили достаточный уровень случайности, чтобы избежать этой уязвимости. Надежный пароль по стандарту BIP-39 также мог бы затруднить восстановление, а кошельки, требующие подписей с нескольких независимых устройств, могли бы предотвратить перевод средств с одного скомпрометированного седа.
Coinkite указывает на ИИ, но доказательств по-прежнему нет
Генеральный директор Coinkite Родольфо Новак публично извинился и заявил, что компания берёт на себя полную ответственность за сбой прошивки. Он сообщил, что команда работает над исправленным программным обеспечением, техническими отчётами и поддержкой затронутых пользователей.
Coinkite и Новак также выдвинули поразительную теорию о том, как была обнаружена уязвимость. Поскольку прошивка компании была общедоступна в течение многих лет, компания заявила, что, по её мнению, кто-то мог использовать ИИ для анализа старых версий кода и обнаружения уязвимого пути генерации случайных чисел.
«Всем остальным разработчикам: мы считаем, что это суровая реальность новой парадигмы ИИ. Проверка кода с помощью ИИ теперь позволяет находить скрытые ошибки со скоростью, превосходящей даже самых опытных экспертов в отрасли», — написал Новак в своём посте с извинениями, опубликованном на X. «Если ваша прошивка является открытой или когда-либо была общедоступной, считайте, что её уже изучают как злоумышленники, так и специалисты по безопасности».
Современные системы кодирования на базе ИИ способны обрабатывать большие репозитории программного обеспечения и выявлять подозрительные связи между настройками конфигурации, функциями и допущениями в области безопасности. Злоумышленник может попросить такую систему специально искать слабые генераторы случайных чисел, резервные функции или ошибки, влияющие на криптографические ключи.

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

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

Противоположные точки зрения не обязательно несовместимы. Человеческая ошибка создала уязвимость и позволила ей сохраниться, в то время как ИИ, возможно, снизил затраты на её обнаружение, понимание или использование. Защитникам необходимо выявить все опасные слабые места, тогда как злоумышленнику достаточно найти лишь одно.
Этот инцидент также ставит под сомнение предположения о безопасности открытого исходного кода. Открытый код позволяет независимым экспертам проверять программное обеспечение, но сама по себе доступность не гарантирует, что кто-то проанализирует нужный фрагмент, обнаружит едва заметный дефект и сообщит о нём до того, как злоумышленник начнёт действовать.
Для пользователей Coldcard первоочередной задачей является определение того, когда и как был сгенерирован их сед. Любой, у кого затронут сед, должен проверить инструкции через официальные каналы Coinkite, установить исправленную прошивку, сгенерировать новый сед и осторожно перевести средства, следя за попытками фишинга и поддельными сообщениями от службы поддержки.
В долгосрочной перспективе основное внимание будет сосредоточено на том, сколько биткойнов было похищено, смогут ли следователи установить личность злоумышленника и сыграл ли искусственный интеллект решающую роль в обнаружении уязвимости. Производители аппаратных кошельков также столкнутся с необходимостью усилить тестирование энтропии, проводить аудит конфигураций сборок и постоянно проверять старый код как с помощью экспертов-людей, так и с помощью инструментов искусственного интеллекта, моделирующих атаки.
end-content







