Пользователь сабреддита r/Bitcoin на платформе Reddit под псевдонимом DuckDuckMoss поделился сообществом своей историей. Он пишет, что из-за ошибки в программном обеспечении аппаратного кошелька он потерял свои 2 BTC, которые копил в течение восьми лет. Его сообщение — одно из сотен подобных рассказов, которые появились в сети после 30 июля, когда неизвестный злоумышленник начал опустошать кошельки, созданные на устройствах Coldcard. По расчетам Galaxy Research, с аккаунтов жертв пропало уже 1367 BTC, что составляет около 88,6 миллиона долларов.
Coldcard — это аппаратный кошелек канадской компании Coinkite, который поддерживает только Bitcoin и на протяжении многих лет считался устройством для самых требовательных пользователей. Его программное обеспечение работает на модифицированном MicroPython. В конфигурации платы производитель намеренно отключил встроенную поддержку аппаратного генератора, так как у него была собственная реализация. Проблема в том, что библиотека libngu проверяла только наличие соответствующего флага, а не его значение. Компиляция проходила без предупреждений, а функция, отвечающая за случайность, попадала в программный резервный путь, унаследованный от MicroPython.
Этот резервный генератор инициализируется один раз, при первом вызове, на основе заводского номера чипа и состояния часов. Ни одно из этих значений не является криптографической тайной. Серийный номер постоянен и частично виден даже в идентификаторе USB устройства, а временные регистры можно ограничить до небольшого числа возможностей. Подробную реконструкцию опубликовала команда безопасности Block в техническом отчете о экстренном генераторе в прошивке Coldcard.
Изменение было внесено в репозиторий 1 марта 2021 года, а в выпущенное программное обеспечение попало 17 марта вместе с версией 4.0.0. Все опустошенные адреса были созданы после этой даты. Нападающему не нужно было трогать ни одно устройство. Достаточно было воспроизвести возможные потоки случайных чисел, вывести из них адреса и сравнить их с публичной цепочкой блоков.
Первое сканирование кошельков длилось с 3:10 до 3:51 по польскому времени 30 июля и охватило девять блоков. Chainalysis подсчитала, что в первые десять минут пропало более 30 миллионов долларов, а самая крупная отдельная жертва потеряла около 1,8 миллиона долларов. Первоначальные оценки говорили о 594 BTC из менее чем 500 кошельков. Последующие анализы Galaxy Research повысили это число до 1082, затем до 1158, пока 1 августа не была обнаружена третья волна, в которой из 1912 адресов было выведено еще 207,73 BTC. На этот раз злоумышленник добрался до остатков в несколько тысяч долларов, то есть удовлетворился "мелочью".
Украденные средства остаются нетронутыми на адресах злоумышленника. Аналитики отмечают, что все транзакции имели одинаковую ставку комиссии и не генерировали сдачи, что позволяет их группировать, но само по себе это ничего не доказывает. Сборный перевод выглядит одинаково независимо от того, переносит ли монеты вор или владелец.
Компания Coinkite опубликовала соответствующее предупреждение 30 июля, а на следующий день выпустила исправленное программное обеспечение для всех моделей и обеих веток выпуска. Производитель в официальном сообщении по безопасности подчеркивает, что обновление защищает только новые семена и не исправляет уже созданные. В безопасности находятся те, кто при создании кошелька добавил как минимум 50 честных, незаписанных бросков кубика. Сильный, уникальный пароль BIP-39 создает отдельный кошелек и реально усложняет ситуацию, но производитель все равно рекомендует миграцию. Multisig защищает только в том случае, если кворум не состоит исключительно из уязвимых устройств. Карты TAPSIGNER, OPENDIME и SATSCARD работают на другом коде и проблема их не касается.
Родольфо Новак, глава Coinkite, извинился перед пользователями и взял на себя ответственность за ошибку, признав, что внутренние проверки кода не выявили ее. Он также предположил, что уязвимость могла быть обнаружена искусственным интеллектом, пропущенным через более старые версии открытого программного обеспечения. Несколько недель назад компания сама пропустила тот же код через одну из лучших доступных моделей и не получила никаких сигналов тревоги. Однако некоторые исследователи считают, что тема ИИ отвлекает внимание от банальной инженерной ошибки, которую обычный аудит генерации ключей должен был выявить много лет назад.
Реакция отрасли резкая. Комментатор Гай Суонн назвал это самым болезненным ударом в истории Биткойна, направленным на людей, которые правильно защищались, потому что на этот раз речь идет не о бирже с горячими ключами, а о тысячах частных кошельков. Лоренцо Валенте из ARK Invest прямо заявил, что клиенты обменяли риск контрагента на риск программного обеспечения, оборудования, цепочки поставок и собственной ошибки. Ник Нейман из компании Casa критикует саму рекомендацию производителя, так как добавление пятидесяти бросков кубика не подходит для подавляющего большинства пользователей. Дэвид Лоуренс из Amicus добавляет, что после таких событий новые инвесторы будут выбирать ETF и регулируемых доверительных управляющих.
Точно такой же вывод сделал автор поста на Reddit, который сожалеет, что не купил доли инвестиционного фонда, когда они стартовали. Его индивидуальный случай никто публично не проверил, так как он не указал ни модель устройства, ни версию программного обеспечения. Galaxy Research предупреждает, что список пострадавших может еще вырасти. Уязвимость уже публична, а часть владельцев уязвимых семян все еще не перенесла средства.
Этот контент предоставляется исключительно в общих информационных целях и не является финансовым, инвестиционным, юридическим или налоговым советом. Любые мероприятия, вознаграждения, онлайн-акции или связанная с ними информация, упомянутые в настоящем документе, не должны рассматриваться как рекомендация, приглашение к покупке, продаже, торговле или иной сделке с какими-либо криптоактивами. Криптоактивы очень волатильны и могут привести к убыткам. Доступность услуг, продуктов WEEX и связанных с ними событий может варьироваться в зависимости от региона. Вы несете ответственность за обеспечение того, чтобы ваше участие соответствовало применимым местным законам и нормативным актам.





























