Обнаружены 2 уязвимости нулевого дня в реализации широко используемых криптографических протоколов GG-18, GG-20 и Lindell17. Недостатки затронули популярные криптокошельки, в том числе Coinbase, ZenGo и Binance. Уязвимости позволяют злоумышленнику в считанные секунды похитить криптовалюту из кошелька без взаимодействия с пользователем.
Команда по исследованию криптографии Fireblocks обнаружила недостатки в мае 2023 года, и назвала их “BitForge”. Аналитики обнародовали информацию о BitForge в презентации на BlackHat.
На данный момент Coinbase и ZenGo устранили проблемы. Однако, по данным Fireblocks, Binance и десятки других провайдеров кошельков остаются уязвимыми для BitForge. Fireblocks также создали инструмент проверки статуса для проектов , чтобы проверить, подвергаются проекты рискам из-за ненадлежащей реализации протокола конфиденциальных вычислений (Multi-Party Computation, MPC).
Первая уязвимость ( CVE-2023-33241 CVSS: 9.6 ) затрагивает пороговые схемы подписи (Threshold Signature Schemes,TSS) GG18 и GG20 , которые являются основополагающими для индустрии MPC-кошельков, позволяя нескольким сторонам генерировать ключи и совместно подписывать транзакции.
Злоумышленник, в зависимости от параметров реализации, может отправить специально созданное сообщение и извлечь фрагменты ключа в блоках по 16 бит, извлекая полный приватный ключ из кошелька за 16 попыток.
Вторая ошибка ( CVE-2023-33242 CVSS: 9.6 ) затрагивает реализацию протокола Lindell17(2PC), имеет аналогичную природу и позволяет злоумышленнику извлечь весь приватный ключ после 256 попыток.
Недостаток заключается в реализации протокола 2PC, а не в самом протоколе, и проявляется в неправильном обращении кошельков с прерываниями, что вынуждает их продолжать подписывать операции, которые непреднамеренно раскрывают биты приватного ключа. Недостаток также раскрывает секретный ключ клиента с помощью специально созданных сообщений. Для полного извлечения ключа требуется 256 запросов.
Аналитики также опубликовали на GitHub два эксплойта для проверки концепции (PoC) для каждого из протоколов – GG18 и GG20 , Lindell17 .