Skip to content
Blockchain

Эксплойт Coldcard: детерминированный ГПСЧ опустошил $88 млн в BTC

By Anurag Verma•August 5, 2026
Эксплойт Coldcard: детерминированный ГПСЧ опустошил $88 млн в BTC

1 августа 2026 года около 1196 биткоин-адресов были опустошены в ходе скоординированной операции. Никакого фишинга. Никаких подписанных вредоносных PSBT. Никаких ошибок пользователя в традиционном смысле. Эксплойт Coldcard, слившший примерно $88 миллионов в BTC, так и не коснулся ни одного устройства в момент кражи, по данным репортажа CoinDesk об этом инциденте.

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

Это не взлом. Это пятилетний разрыв между коммитом и последствием.

Что на самом деле делал баг в прошивке Coinkite

Дефектная сборка, как подробно описывает The Hacker News, направляла вызовы энтропии через программный ГПСЧ, засеянный из небольшого, легко угадываемого состояния, вместо аппаратного ГСЧ SE-чипа. Пользователи не имели возможности обнаружить подмену. Устройство загружалось, отображало ожидаемые экраны настройки, генерировало 24-словный сид и выглядело идентично корректно сгенерированному кошельку.

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

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

Почему важна цифра в 1196 опустошённых биткоин-адресов

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

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

Незаметная деталь: часть опустошённых UTXO пролежала нетронутой с 2021 года. Пять лет принципа «мои ключи, мои монеты» -- а ключи на самом деле никогда не были вашими.

Проблема детерминированного ГПСЧ в биткоине стара и повторяется снова и снова

Этот класс ошибок имеет долгую и позорную историю. Android SecureRandom в 2013 году уже уносил BTC точно таким же образом. Баг ГПСЧ в Debian OpenSSL в 2008 году калечил SSH-ключи два года, прежде чем кто-то это заметил. Каждое поколение заново узнаёт, что энтропия -- это единственное, что нельзя проверить, глядя на выходные данные.

Нормально сформированное случайное 256-битное число и детерминированное 256-битное число при осмотре выглядят одинаково. Нужно проверять источник, а не выборку. В этом и состоит вся игра.

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

Дискуссия о самостоятельном хранении и ETF -- не то, чем кажется

Моё мнение, и я готов его отстаивать: разговор о самостоятельном хранении против ETF был представлен как вопрос идеологии, хотя на самом деле это вопрос цепочки поставок.

Спотовый ETF на BTC имеет одну поверхность атаки, которая меня беспокоит: операционная безопасность кастодиана. Эта поверхность поддаётся аудиту со стороны регуляторов, страхуется и обслуживается людьми, чья единственная работа — не потерять монеты. Если что-то идёт не так, кто-то выписывает чек.

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

Обе модели несут реальные риски. Делать вид, что одна из них безопасна, — вот что привело к опустошению 1 196 адресов.

Что реально изменится после эксплойта Coldcard

Несколько вещей, которые, на мой взгляд, произойдут и должны произойти:

  • Воспроизводимые сборки прошивки станут обязательным минимумом. Если вы не можете пересобрать бинарник из исходников и сверить его побайтово, вы доверяете подписи, а не кодовой базе.
  • Аттестация энтропии после генерации. Устройство должно подписывать доказательство того, что конкретный сид был получен из защищённого элемента, а не из программного обеспечения. Это не сложно. Coinkite может выпустить это за квартал.
  • Независимые проверки корректности сида. Инструменты сторонних разработчиков, которые — не видя самого сида — могут проверить, что его путь деривации соответствует распределению, характерному для настоящей случайности.
  • Страховые продукты для самостоятельного хранения. Не пародия. Настоящий андеррайтинг, требующий аттестованной прошивки и обновляющий покрытие по мере устаревания сборок.

Всё это не делает аппаратные кошельки устаревшими. Это переводит их в корпоративный класс — именно тот, на который они всегда претендовали.

Неудобный вывод для всех нас

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

Инцидент с Coldcard воспринимается так же, как комментарии генерального директора OpenZeppelin об аудитах DeFi в начале этого года. Инструментарий аудита, который мы унаследовали, создавался для мира, где код, который вы выпускали, был тем же кодом, который вы запускали. Это больше не так, если вообще когда-либо было.

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

Источники