Исследование безопасности FRB

Инцидент COLDCARD RNG: как слабая энтропия проявилась в блокчейне

Отчёт для разработчиков, который связывает публичную причину в прошивке с проверяемыми ончейн-данными, не публикуя инструменты восстановления seed, адреса пострадавших или секретные материалы.

Снимок доказательств проверен 12 августа 2026 года
Инцидент COLDCARD RNG: как слабая энтропия проявилась в блокчейне

Краткий ответ

Причина связана с веткой прошивки, где аппаратный RNG был задан как отключённый, но условие препроцессора всё равно выбирало детерминированный резервный генератор. В более новых устройствах добавлялся аппаратный материал, однако в reseed поступало только 32-битное производное значение. Обновление исправляет будущую генерацию, но не усиливает ранее созданные seed.

4

публичных кластера первой волны

1 195

связанных исходных входов первой волны

1 478

связанных входов последующих наблюдений

2

первичных технических источника

Технический метод по шагам

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

Схема слабого места COLDCARD RNG от конфигурации до проверки публичного адреса
Рис. 1. Ошибка образует цепочку: семантика конфигурации, выбор fallback, состояние с малой энтропией, деривация и публичная проверка. Хеширование в середине не возвращает утраченную энтропию.
01

Конфигурация обозначала «отключено»

В конфигурации платы функция RNG определялась значением 0. По смыслу это отключение, но для препроцессора символ всё равно остаётся определённым.

02

Проверялось наличие символа, а не его значение

Условная компиляция выбирала резервную ветку. Связанный rng_get разрешался в детерминированный программный генератор вместо аппаратного источника энтропии.

03

Резервный генератор инициализировался наблюдаемым состоянием

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

04

Хеширование не создаёт отсутствующую энтропию

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

05

На новых устройствах reseed был усечён

Аппаратные чтения хешировались, но только четыре байта дайджеста распаковывались в значение reseed. Прямой вклад ограничивался 32 битами с учётом более широкого контекста выполнения.

06

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

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

Несоответствие потока управления в четырёх безопасных фрагментах

Фрагменты объясняют причину, но не содержат цикл восстановления кошелька.

Настройка платы
#define MICROPY_HW_ENABLE_RNG (0)
Неверная проверка наличия
#ifndef MICROPY_HW_ENABLE_RNG
Компонент состояния fallback
pad = UID_low32 ^ SysTick->VAL
Граница reseed на новых моделях
reseed = SHA256d(rng1 || rng2)[0:4]
Хронология регрессии COLDCARD, затронутых устройств, раскрытия и исправлений
Рис. 2. Обновление закрывает уязвимую генерацию в будущем, но seed, созданный на затронутой прошивке, необходимо заменить.

Затронутые прошивки и граница исправления

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

СемействоЗатронутый диапазонИсправленный релизЧто означает исправление
Mk2 / Mk34.0.1–4.1.94.2.0 и новееНовые seed создаются исправленным путём; старые не усиливаются.
Mk4 / Mk5Стандартные релизы до 5.6.05.6.0 и новееИсправленный релиз предотвращает будущую генерацию по проблемному пути.
COLDCARD QСтандартные релизы до 1.5.0Q1.5.0Q и новееСначала обновление, затем новый seed и миграция.
Канал EdgeДо 6.6.0X / 6.6.0QX6.6.0X / 6.6.0QX и новееИспользуйте исправленный релиз канала для своего устройства.

Обновление не добавляет энтропию в уже существующий seed. Защитный путь — новый seed на исправленном ПО, проверка резервной копии и миграция.

Что показывает публичный блокчейн

Мы воспроизвели ограниченный снимок по опубликованным меткам консолидаторов и публичным API адресов и транзакций Blockstream. Таблица показывает поток, но не доказывает личность оператора и не является окончательным числом жертв или потерь.

Схема двух волн консолидации инцидента COLDCARD и правила против двойного счёта
Рис. 3. Исходные входы и последующие выходы консолидации — этапы одного графа. Их сложение как отдельных потерь создаёт двойной счёт.

Связанный объём исходных входов первой волны

1 082,58680432 BTC

Воспроизводимый снимок графа; публичные метки не являются атрибуцией личности.

Связанный объём исходных входов последующей волны

76,09142381 BTC

Воспроизводимый снимок графа; публичные метки не являются атрибуцией личности.

Публично указанные адреса-консолидаторы

ВолнаПервое наблюдениеАдресПолучено на дату снимкаТранзакций адреса
Волна 12026-07-30bc1qnk4zh9qcnap2mycp56qjrgza3cc8ylrh8fecp0594.47727254 BTC506
Волна 12026-07-30bc1qc779m8gec84k3t0ffvu0pps94zheht7lr7ueyn398.48587857 BTC492
Волна 12026-07-30bc1qdaarag7729c2n4l2wnyt3hkhfpcs66n98z7uuh88.85045709 BTC101
Волна 12026-07-30bc1qh0l7q0mca3ln7wsl9luwns0jc9jhgrtft025l40.77324382 BTC105
Волна 22026-07-31bc1qsjrf5ze5tmulz7y2x4pc7qaex2a35sanp3rqlx45.90666052 BTC1217
Волна 22026-08-07bc1qmd5m5ktv7m5ffujxv4248fxv36myvdx79n8jp630.18478329 BTC96

«Получено» — статистика адреса на 12 августа 2026 года. Нельзя складывать её с последующими выходами консолидации или называть сумму подтверждённым ущербом.

Репрезентативные транзакции консолидации

ВремяВходыЕдинственный выходТранзакция
2026-07-30 01:43 UTC491398.47573857 BTC14edd9ee8445…
2026-07-30 01:43 UTC20489.62327890 BTC4b50d61a3d6e…
2026-07-30 01:51 UTC341562.01962301 BTC0c6bf853a645…
2026-07-31 09:22 UTC121245.90251994 BTCba119968ec4b…
2026-08-07 03:35 UTC9330.18461329 BTC93df0d26e08c…

Воспроизводимая ончейн-методика

  1. 01Начинать только с меток консолидаторов, уже опубликованных в материалах об инциденте; не включать публично адреса, сообщённые пострадавшими.
  2. 02Запрашивать публичные API адресов и транзакций, сохраняя txid, время подтверждения, число входов, значения выходов и дату проверки.
  3. 03Пересчитывать BTC из целых сатоши, а не из скриншотов или оценок в долларах.
  4. 04Удалять дубликаты по txid и классифицировать исходные, первые и вторые этапы до агрегации.
  5. 05Не складывать выход консолидации с входами, которые его профинансировали: это один поток на разных этапах.
  6. 06Считать метки графа наблюдаемыми связями. Путь в блокчейне не доказывает владельца, намерение, модель устройства или юридическую ответственность.

Защитное воспроизведение без реальных кошельков

Отдельный локальный стенд использовал 1 000 детерминированных синтетических кошельков для проверки контрольной суммы BIP-39, повторной деривации ожидаемых адресов и уникальности тест-векторов. Все 1 000 векторов были повторно выведены, а пять ограниченных smoke-тестов восстановления прошли. Реальных данных кошельков нет; набор не публикуется, потому что цель — инженерная проверка, а не операционное восстановление.

Существенные ограничения

  • Ни официальный источник, ни этот отчёт не заявляют универсальное время полного перебора.
  • 32-битный reseed не означает автоматически ровно 32 бита полной безопасности seed: история вызовов и состояние fallback также важны.
  • Консолидаторы могут получать посторонние или более поздние средства, поэтому текущие суммы адресов не являются фиксированным реестром потерь.
  • Публичный граф не устанавливает личность и не доказывает, что каждый исходный вход связан с одним дефектом прошивки.
  • FRB Agent не является аппаратным Bitcoin-кошельком; отчёт не утверждает, что FRB предотвращает этот класс инцидентов.

Защитные действия для потенциально затронутых владельцев

01

Прочитать актуальное уведомление Coinkite и подтвердить модель устройства и канал прошивки.

02

Обновиться до исправленного релиза до создания нового материала.

03

Создать новый seed исправленным способом; при ручной энтропии следовать инструкции производителя по броскам кубика.

04

После проверки новой резервной копии перенести активы из всех кошельков затронутого seed, включая варианты с passphrase.

05

Не публиковать seed-слова, xprv, приватные ключи или предполагаемые адреса жертв в поддержке и публичных проверках.

Почему это важно разработчикам систем исполнения

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

Первичные источники и проверяемые данные

Источники проверены 12 августа 2026 года. Состояние в обозревателе меняется при новых поступлениях и расходах.

Частые вопросы

Исправляет ли обновление старый seed?

Нет. Обновление корректирует будущую генерацию. Seed, созданный затронутым путём, нужно заменить и перенести средства на адреса из нового материала.

Это удалённый взлом устройства?

Документированная слабость находится в генерации seed. Публичная модель атаки использует ограниченные состояния-кандидаты и блокчейн как проверочный оракул; последующий удалённый контроль устройства не требуется.

Означает ли 32-битный reseed мгновенное восстановление любого seed?

Нет. Он ограничивает один вклад, но практическая реализуемость зависит от fallback-состояния, порядка вызовов, наблюдений, целей деривации и деталей реализации. Универсальной оценки времени здесь нет.

Почему опубликованы консолидаторы, но не адреса пострадавших?

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

Почему нет кода восстановления?

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

Контролируйте пульс

Расширьте свое исполнение

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

Часто задаваемые вопросы