Баг в приложении Ledger семь лет угрожал кошелькам Zilliqa

iEXExchanger
Баг в приложении Ledger семь лет угрожал кошелькам Zilliqa

Семь лет в приложении Ledger для Zilliqa была ошибка: ключ можно было вычислить по обычным подписям в блокчейне, без доступа к устройству. Zilliqa остановила переводы, токен подешевел почти на пятую часть.

Семь лет баг незаметно жил в приложении для аппаратных кошельков Ledger — и раскрылся только потому, что кто-то начал использовать его на практике.

Речь о приложении для сети Zilliqa, которое Ledger предлагал пользователям с 2019 года для подписи «родных», не-EVM-транзакций. Программа неправильно собирала случайное число для каждой подписи: терялись восемь байт настоящей энтропии, а вместо них оставались нули из технического буфера. В криптографии такой параметр называют nonce — по сути, разовый «случайный ключ» к подписи. Если он предсказуем, соседние подписи одного и того же аккаунта можно сравнить между собой и математически вычислить приватный ключ — без вирусов, без доступа к устройству, только по данным, которые и так лежат в открытом виде в блокчейне. По оценке Zilliqa, для этого достаточно пяти таких подписей, а расчёт занимает секунды на обычном компьютере.

19 июля биржа KuCoin заметила подозрительную активность в сети и начала разбираться. К 21 июля причину подтвердили, а 22-го Zilliqa раскрыла детали публично. Один день между этими датами уже стоил проекту как минимум одной кражи: с холодного кошелька биржи-партнёра вывели ZIL, сумму не раскрывают. Сеть немедленно остановила все «родные» транзакции — EVM-совместимые переводы бага не затронул. Upbit заморозил ввод и вывод ZIL, токен за неделю потерял около 17–19%, опустившись примерно до $0,0024.

Важная деталь: сами устройства Ledger не взломаны — проблема была в стороннем приложении, а не в защищённом чипе кошелька. Но пользователям, которые с 2019 года подписывали «родные» ZIL-транзакции через Ledger, от этого не легче: даже после исправления старые подписи уже опубликованы в блокчейне навсегда, и восстановленный по ним ключ остаётся скомпрометированным. Единственный выход — перевести средства на новый адрес с чистой историей.

История поднимает вопрос не только про Zilliqa: аппаратный кошелёк защищает ключ внутри чипа, но подпись всё равно готовит программный код — и если в нём ошибка, железо тут ни при чём.

Вопросы и ответы

Частые вопросы по теме статьи

Что за уязвимость нашли в приложении Ledger для Zilliqa?

Приложение неправильно генерировало случайное число (nonce) при подписании родных транзакций Zilliqa с 2019 года. Из-за этого по нескольким подписям одного аккаунта можно математически восстановить приватный ключ.

Скомпрометированы ли сами устройства Ledger?

Нет. Проблема была в стороннем приложении для Zilliqa, а не в защищённом чипе кошелька. Ledger-устройства как таковые не пострадали.

Что делать держателям ZIL, которые пользовались Ledger?

Если с 2019 года вы подписывали пять и более родных ZIL-транзакций через Ledger, ключ стоит считать скомпрометированным и перевести средства на новый адрес — исправление в приложении не защищает уже опубликованные подписи.

Как обнаружили проблему?

19 июля биржа KuCoin заметила подозрительную активность в сети, к 21 июля подтвердила причину вместе с Zilliqa, а 22 июля детали раскрыли публично.

Что теперь с сетью Zilliqa?

Родные транзакции временно остановлены, а EVM-совместимые переводы работают как обычно. Zilliqa вместе с Ledger готовит исправленную версию приложения.