Luke Dashjr: уязвимости в ГСЧ Coldcard можно было найти вручную — разбор из девяти пунктов


Разработчик Bitcoin Core Люк Дэшджр в понедельник высказал девять замечаний относительно кода генератора случайных чисел Coldcard, заявив, что первоначально он обсуждал их с Coinkite в частном порядке.
Он опубликовал этот список, чтобы опровергнуть утверждение о том, что только «гениальный ИИ» может обнаружить недостатки в ГСЧ кошелька.
Девять замечаний к ГСЧ стали достоянием общественности после частных сообщений компании Coinkite
«Прошло достаточно много времени, и я слышу, как nvk пытается убедить всех, что люди не могли найти дефект в Coldcard», — написал Дэшджр в ветке на X. Родульфо Новак (Nvk) является соучредителем Coinkite.

Будьте в курсе
движения ваших монет
Алерты, котировки в реальном времени и новости рынка — в одном приложении

Наведите камеру телефона, чтобы установить

4,8 на основе 40 К оценок в App Store и Google Play



Первый пост Люка Дэшджра в этой ветке, опубликованный на X 9 ноября 2026 года.
Дэшджр заявил, что не знает, исправила ли Coinkite указанные проблемы после его обращения к компании. Он не утверждал, что каждый пункт можно использовать в качестве оружия или что все они являются определенными ошибками.
«Но утверждение о том, что только „гениальный ИИ“ может выявить проблемы с ГСЧ, является откровенной ложью», — написал Дэшджр.
Первое замечание касалось примечания TODO в функции rng_init, которая запускает работу ГСЧ Mk4. По его словам, некоторые чипы STM32 требуют отбрасывания первого образца.
По словам Дэшджра, драйвер также игнорирует биты ошибок семплирования и часов чипа. Кроме того, в руководстве STM32 указано, что для криптографических целей требуется дополнительная постобработка.
Функция random_buffer обнаруживает повторяющиеся выходные данные ГСЧ, но прямые вызовы rng_get этого не делают.
Дэшджр заявил, что rng_get_or_fault нельзя считать безопасным до тех пор, пока проверка random_buffer не будет доказана как избыточная. Он также спросил: если вывод STM32 стал детерминированным, почему энтропия генератора случайных чисел в защищённом элементе не сохранялась на полном уровне 256 бит?
Дэшджр отметил, что заменяющий код по сути представляет собой новый ГСЧ, требующий полного тестирования.
Патч отключает старый ПСЧ только на этапе сборки, и он предложил вместо этого использовать проверку во время выполнения. Таймаут ГСЧ в неподходящем контексте может привести к неопределённому поведению, возможно, к сбою, который рискует «заbrickить» медленные устройства, написал он.
Прошивка Coinkite версии 5.6.1 уже проверяет состояние ошибки флагового семени.
В техническом обзоре Coinkite от 30 июля 2026 года говорилось, что компания «не знала об уязвимости до сегодняшнего дня». Cryptopolitan сообщил, что компания предположила: внешняя сторона могла использовать ИИ для анализа её прошивки с открытым исходным кодом, чтобы заранее обнаружить уязвимость.
Coinkite добавила, что эта уязвимость не была обнаружена её собственным ИИ-ассистированным обзором, проведённым несколькими неделями ранее. Ошибка стала результатом изменения прошивки, внесённого в марте 2021 года, которое перенесло генерацию семени с аппаратного чипа генератора случайных чисел.
Вместо этого семена генерировались с помощью Yasmarang — программного инструмента, который использовал серийный номер чипа и таймер. Семена Mk2 и Mk3 содержали около 40 бит реальной энтропии, что значительно меньше предполагаемых BIP-39 128 бит, и злоумышленники смогли восстановить эти слабые семена офлайн.
Устройства Mk4 и Mk5 получили обновление прошивки 5.6.1, а Q — версию 1.5.1Q 20 августа. В безопасности обновления Coinkite упоминается «проверка с помощью ИИ-ассистентов Kimi и других передовых моделей», а также выражается благодарность внешним исследователям за сообщение об ошибках.
Некоторые из изменений входят в список требований Dashjr. Прошивка теперь проверяет состояние ошибки семени аппаратного ГСЧ и отбрасывает следующие 12 аппаратных слов после восстанавливаемой ошибки.
Проверка при загрузке гарантирует, что rng_get() обращается к пути чтения аппаратного обеспечения. Резервный генератор изменён на SHA-256 Hash_DRBG.
Кражи начались 30 июля, когда злоумышленник похитил около 594 BTC (примерно 38 млн долларов) из примерно 500 кошельков за 25 минут. Некоторые выводы средств были совершены белыми шляпами для спасения, однако совокупные потери оцениваются более чем в 140 млн долларов.
Клиент Coldcoin Амир Реза Надери подал коллективный иск в Верховный суд юстиции Онтарио против Coinkite, Новака и сооснователя Питера Д. Грея. Он утверждает, что они знали о проблеме генерации семян с мая 2025 года и не предупредили пользователей, что компания Coinkite отрицает.
