Coldcard раскрыл пятилетний дефект генерации сид-фразы в своих аппаратных кошельках

Coldcard раскрыл пятилетний дефект генерации сид-фразы в своих аппаратных кошельках

Худший отказ аппаратного кошелька — не тот, при котором утекает ключ. Худший — тот, при котором хорошего ключа вам не выдали с самого начала. Именно об этом 30 июля сообщила Coinkite, производитель Coldcard.

Что, по словам производителя, произошло

Устройство должно брать случайность для новой сид-фразы у выделенного аппаратного генератора. На затронутых экземплярах оно этого не делало. В описании самой Coinkite: «ошибка интеграции при сборке и компоновке привела к тому, что настройка не дала задуманного эффекта, и символ rng_get() из libNgU разрешился в штатную реализацию Yasmarang из MicroPython».

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

Затронутые версии, как опубликовал производитель:

  • Mk2 и Mk3 — прошивки 4.0.1–4.1.9
  • Mk4 и Mk5 — всё до 5.6.0 (Edge до 6.6.0X)
  • Q — всё до 1.5.0Q (Edge до 6.6.0QX)

Последствия у моделей разные. На Mk4, Mk5 и Q сид-фразы несли примерно 72 бита энтропии вместо задуманных 128. Сид-фразы Mk2 и Mk3 производитель называет непригодными прямо — если только пользователь не ввёл при настройке не менее 50 независимых бросков собственных костей, что устройство всегда предлагало и что в этом случае и оказалось границей между надёжной и угадываемой сид-фразой.

В чём пользователи ошибаются чаще всего

Обновление прошивки затронутую сид-фразу не чинит.

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

Что было дальше

Со 2 по 20 августа Coinkite выпустила серию дополнительных укрепляющих исправлений, все вошли в 5.6.1 и 1.5.1Q. В списке — проверки границ в callgate, восстановление после ошибок ГСЧ, блокировка SIGHASH_SINGLE по умолчанию, разделение проверочного nonce защищённого элемента и дайджеста PIN-кода, валидация текста BIP-322, проверка ключей мультиподписи, подсчёт бросков костей и, что примечательно, проблема подмены подготовленного PSBT, которая позволяла подключённому хосту переписать транзакцию после того, как пользователь просмотрел её на экране.

Последняя — дефект другого класса, чем история с энтропией, и на практике едва ли менее серьёзный: вся посылка аппаратного подписанта в том, что подписывается ровно то, что вы подтвердили на устройстве.

О цифрах потерь

Coinkite не публиковала сумму потерь. Цифры в обороте — оценка аналитической фирмы примерно в 116 млн $ и сообщение о 594 BTC, выведенных за двадцать пять минут 31 июля, — исходят от третьих сторон, а не от производителя. Вполне возможно, что они верны. Мы фиксируем их как неподтверждённые, потому что ни один первичный источник их не называет и потому что размер вывода по слабым сид-фразам — ровно та величина, которую повторяют до тех пор, пока она не затвердеет.

Что делать владельцу устройства

Проверьте версию прошивки на самом устройстве. Если она старше исправленных релизов выше, считайте сид-фразу затронутой, создайте новый кошелёк на обновлённой прошивке и переведите средства туда. Не восстанавливайте старую сид-фразу на новой прошивке — проблема в сид-фразе, а не в устройстве.

Шире: это аргумент в пользу того, чтобы подавать собственную энтропию при настройке. Броски костей, благодаря которым сид-фразы Mk2 и Mk3 остались живы, были не причудой продвинутого пользователя. Это единственный механизм, который не зависел от того, правильно ли собрана прошивка производителя.

Источники

  • Предупреждение Coinkite о генерации сид-фразы, 30 июля 2026, обновлено 1 и 14 августа — blog.coinkite.com
  • Техническая справка об энтропии, 30 июля 2026 — blog.coinkite.com
  • Обновление безопасности 5.6.1 и 1.5.1Q, 20 августа 2026 — blog.coinkite.com
  • Дополнение к публичной записи, 4 августа 2026, обновлено 14 августа — blog.coinkite.com
  • Указатель исторических раскрытийcoinkite.com

FAQ

Какие устройства Coldcard затронуты?+

Mk2 и Mk3 с прошивками 4.0.1–4.1.9; Mk4 и Mk5 с любой прошивкой до 5.6.0 либо Edge до 6.6.0X; Q до 1.5.0Q либо Edge до 6.6.0QX. Дефект восходит к переходу на другую библиотеку в марте 2021 года.

Что именно пошло не так технически?+

По формулировке самой Coinkite, ошибка интеграции при сборке и компоновке привела к тому, что настройка не дала задуманного эффекта, и функция получения случайного числа разрешилась в штатную реализацию Yasmarang из MicroPython вместо аппаратного генератора. Слова сид-фразы брались у программного ПСЧ.

Насколько слабее затронутая сид-фраза?+

Coinkite указывает, что сид-фразы Mk4, Mk5 и Q несли около 72 бит энтропии вместо задуманных 128. Сид-фразы Mk2 и Mk3 описаны как непригодные, если только пользователь не ввёл при настройке не менее 50 независимых бросков собственных костей.

Обновление прошивки это исправит?+

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

Сколько было украдено?+

Coinkite ни в одной публикации суммы не назвала. Оценки, которые ходят по публикациям, исходят от сторонних аналитических фирм, а не от производителя, и подтверждёнными мы их не считаем.

Похожее

DISCLAIMER

Содержимое сайта не является инвестиционной рекомендацией. Инвестирование спекулятивно, ваш капитал под риском.

Последние новости

Weekly Finance Digest

Подписываясь, вы соглашаетесь с условиями AllCryptoToday