Негативная

Уязвимость seed в Coldcard привела к потерям $130M Bitcoin на 7,700 адресах

мин

Аналитики оценивают, что потери из‑за уязвимости в генерации сидов у Coldcard достигли примерно 2 055 BTC на сумму $130 млн и затронули более 7 700 адресов жертв. Проблема возникает из‑за слабой случайности в некоторых версиях прошивки Coinkite Coldcard, что позволяет злоумышленникам офлайн выводить сиды и опустошать средства.

Уязвимость прошивки Coldcard: детерминированный PRNG и слабая энтропия

Сборки за март 2021 года направляли генерацию сидов в детерминированный программный PRNG вместо аппаратного RNG STM32. В производственной конфигурации макрос аппаратного RNG был задан как ноль, а проверка в libngu лишь удостоверялась в наличии макроса, из‑за чего сборка привязывалась к резервному варианту Yasmarang из MicroPython. Этот резервный генератор инициализировался на основе уникальных ID чипа и регистров таймеров и не добавлял новую энтропию после запуска. Злоумышленник, который мог определить или сузить значения UID устройства, состояние таймера и историю предыдущих вызовов RNG, способен воспроизвести кандидатные выходы офлайн и сопоставить полученные адреса с блокчейном.

Coinkite оценила эффективную энтропию: около 40 бит на Mk3 и примерно 72 бита на Mk4, Mk5 и Q, по сравнению со 128 битами для 12‑словного сида по BIP‑39. Практическая стоимость взлома зависит от доступной информации об UID, времени загрузки, предыдущих вызовах RNG и стоимости деривации. Coinkite выпустила экстренную прошивку 31 июля. Обновление прошивки не исправляет слабый сид. Пользователям нужно сгенерировать новый сид на исправленной прошивке и перевести средства, поскольку восстановление старого сида сохраняет уязвимость.

Волны ончейн‑свипов и поведение атакующего

Первая волна свипов 30 июля: 1 082,65 BTC выведены с 1 196 адресов за 41 минуту, почти по одному BTC на адрес. Позднее, третья предполагаемая волна: около 208 BTC с 1 912 адресов, в среднем чуть более 0,1 BTC на жертву. В более поздних транзакциях объединяли примерно шесть жертв за свип, отправляли монеты каждой жертвы на отдельный адрес назначения и использовали выходы P2WSH вместо более ранних одноключевых выходов. По оценке Galaxy Research, каждую волну проводил один оператор, но ончейн‑данные не позволяют подтвердить, что все волны принадлежат одному и тому же атакующему.

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

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