Метод «Dark Skippy» может украсть ключи аппаратного кошелька биткоин
Исследователи безопасности обнаружили тревожный новый метод, который хакеры могут использовать для извлечения закрытых ключей из аппаратного кошелька Bitcoin с помощью всего двух подписанных транзакций. Метод назвали «Dark Skippy».
Уязвимость потенциально затрагивает все модели аппаратных кошельков, но она может сработать только в том случае, если злоумышленник обманом заставит жертву загрузить вредоносную прошивку.
Предыдущая версия метода требовала от жертвы публикации «десятков» транзакций в блокчейне. Но новая версия «Dark Skippy» может быть выполнена, даже если жертва публикует только несколько транзакций в блокчейне. Кроме того, атака может быть выполнена, даже если пользователь использует отдельное устройство для генерации начальных слов.
Отчет о раскрытии информации был опубликован Ллойдом Фурнье, Ником Фэрроу и Робином Линусом 5 августа. Фурнье и Фэрроу являются соучредителями производителя аппаратных кошельков Frostsnap, а Линус является соразработчиком протоколов Bitcoin ZeroSync и BitVM.
Источник: Ник Фэрроу
Согласно отчету, прошивку аппаратного кошелька можно запрограммировать на встраивание частей начальных слов пользователя в «секретные одноразовые числа с низкой энтропией», которые затем используются для подписи транзакций. Полученные подписи публикуются в блокчейне при подтверждении транзакций. Затем злоумышленник может сканировать блокчейн, чтобы найти и записать эти подписи.
Полученные подписи содержат только «открытые одноразовые числа», а не части самих начальных слов. Однако злоумышленник может ввести эти открытые одноразовые числа в алгоритм Полларда «Кенгуру», чтобы успешно вычислить секретные одноразовые числа из их открытых версий.
Алгоритм кенгуру Полларда, открытый математиком Джоном Поллардом, представляет собой алгоритм в вычислительной алгебре, который можно использовать для решения задачи дискретного логарифма.
По словам исследователей, с помощью этого метода можно получить полный набор начальных слов пользователя, даже если пользователь создает только две подписи со своего скомпрометированного устройства и даже если начальные слова были созданы на отдельном устройстве.
Предыдущие версии уязвимости были задокументированы в прошлом, заявили исследователи. Однако эти старые версии полагались на «измельчение nonce», гораздо более медленный процесс, который требовал размещения гораздо большего количества транзакций в блокчейне. Тем не менее, исследователи не стали называть Dark Skippy новой уязвимостью, заявив вместо этого, что это «новый способ эксплуатации существующей уязвимости».
Чтобы смягчить угрозу, в отчете предлагается, чтобы производители аппаратных кошельков проявляли особую осторожность, чтобы предотвратить попадание вредоносных прошивок в устройства пользователей, что они могут сделать с помощью таких функций, как «безопасная загрузка и заблокированные интерфейсы JTAG/SWD… воспроизводимые и подписанные поставщиком сборки прошивок,… и различные другие функции безопасности». Кроме того, в нем предлагается, чтобы владельцы кошельков, возможно, захотят использовать методы для обеспечения безопасности своих устройств, включая «секретные места, личные сейфы или, возможно, даже сумки с защитой от несанкционированного доступа», хотя в отчете также говорится, что эти методы могут быть «обременительными».
Методы смягчения Dark Skippy. Источник: исследователи Dark Skippy.
Другое предложение, которое он предлагает, заключается в том, чтобы программное обеспечение кошелька использовало протоколы подписи «антиэксфильтрации», которые не позволяют аппаратному кошельку самостоятельно создавать одноразовые номера.
Уязвимости биткоин-кошельков в прошлом наносили пользователям значительные убытки. В августе 2023 года компания по кибербезопасности SlowMist сообщила, что из-за уязвимости в библиотеке Libbitcoin explorer было украдено более 900 000 долларов биткоинов. В ноябре Unciphered сообщила, что биткоины на сумму 2,1 млрд долларов, хранящиеся в старых кошельках, могут быть украдены злоумышленниками из-за уязвимости в программном обеспечении кошелька BitcoinJS.