🌊 Как из Liquid украли 4000 BTCВ Liquid суммы переводов скрыты. Узлы не видят, сколько монет находится в каждом выходе транзакции, поэтому вместо обычной проверки они проверяют криптографические доказательства: деньги не появились из воздуха, а каждая скрытая сумма находится в допустимом диапазоне.
Такие проверки дорогие, поэтому Elements — программа, на которой работает Liquid, — кэшировала уже проверенные доказательства. Проблема оказалась в «ярлыке», по которому программа узнавала доказательство: в него входили не все данные, влияющие на результат проверки.
Упрощённо атака выглядела так:
1. Сначала атакующие показали узлам корректный выход. Узлы проверили выход и запомнили доказательство.
2. Затем они подали специально сконструированный выход в другом контексте, но с тем же ключом кэша.
3. Узлы нашли знакомый ключ и не стали заново выполнять полную проверку. Невалидный выход приняли как корректный.
Так в Liquid появились необеспеченные L-BTC — цифровые расписки на биткоины, которых никто на самом деле не вносил.
Далее атакующие отправили 4 000 таких L-BTC в обычный сервис вывода SideSwap. Для SideSwap и федерации монеты выглядели настоящими: L-BTC были сожжены, разрешение на вывод было корректным, и федерация подписала выплату примерно 3 996 настоящих BTC из резерва Liquid.
Blockstream
сообщили, что обновлённое ПО уже развёрнуто, а сеть готовят к согласованному перезапуску. Атакующие, называющие себя white hats,
вернули 3 400 BTC. Примерно 598,5 BTC всё ещё остаются под их контролем.
Поддержать •
Обменник