
6 сентября неизвестные вывели из сайдчейна Liquid Network около 4000 биткоинов. Сайдчейн - это вспомогательная сеть, привязанная к основному блокчейну биткоина. Сумма ущерба составила примерно 320 млн долларов. Получатели средств назвали себя белыми хакерами и пообещали вернуть большую часть денег после того, как разработчики устранят уязвимость.
Команда Liquid Network подтвердила инцидент. Разработчики отключили мостовые узлы, остановили прием новых транзакций и попросили биржи приостановить ввод и вывод токенов L-BTC. Другие активы сети, включая USDT и ряд токенов, привязанных к реальным активам, атака не затронула.
Хакеры оставили сообщение прямо в блокчейне: «Мы - белые хакеры. Свяжитесь с нами через блокчейн». Позднее они начали переписку с компанией Blockstream, которая выступает техническим поставщиком Liquid. Для общения использовали зашифрованные сообщения и встроенный в транзакции механизм OP_RETURN.
Глава исследовательского подразделения Galaxy Алекс Торн опубликовал фрагменты переписки. В одном из сообщений взломщики заявили: «После подтверждения исправления мы переведем деньги обратно». Технические детали уязвимости они передали в послании, зашифрованном публичным ключом Blockstream. Конкретную сумму возврата в открытой части переписки не называли.
Как сработала атака
Злоумышленники использовали ошибку в программном обеспечении Elements, на котором работает Liquid. Они создали 4000 токенов L-BTC без внесения биткоинов в резервный кошелек федерации. Затем эти токены отправили в сервис SideSwap для обратного обмена на настоящие биткоины.
Обычная процедура устроена иначе. Пользователь блокирует биткоины в основной сети и получает равное количество L-BTC в сайдчейне. При выводе средств токены сжигают, а федерация возвращает биткоины из резервов. SideSwap принял поддельные токены за настоящие и запустил стандартную процедуру. После сжигания L-BTC федерация перевела на адрес получателя 3996 биткоинов.
В SideSwap подчеркнули, что атакующие не получали доступа к системам сервиса и не похищали ключ авторизации вывода. Ошибку в ПО Elements, позволившую создать необеспеченные токены, обнаружили специалисты Blockstream.
Корень проблемы
Исследователь под псевдонимом OrangeSurf объяснил вероятную причину сбоя. Liquid скрывает суммы переводов с помощью конфиденциальных транзакций. Чтобы проверить корректность операции без раскрытия суммы, узлы сети выполняют ресурсоемкие криптографические вычисления.
Около семи лет назад разработчики добавили кеш для хранения успешных проверок. Это позволяло не повторять вычисления каждый раз. Но при обращении к кешу система не учитывала тип актива и условия расходования средств. Новая некорректная транзакция могла получить положительный результат от ранее проверенной, хотя полноценная проверка должна была ее отклонить.
Исправление этой ошибки уже существовало на момент атаки. В репозитории Elements есть коммит от 3 августа, внесенный 1 сентября. Однако отдельный релиз с патчем к моменту взлома не вышел. OrangeSurf задался вопросом, почему участники федерации с правом вывода биткоинов продолжали использовать старую версию ПО.
Исследователь также отметил, что один из узлов сети, работавший на неисправленной версии, отклонил проблемную транзакцию. Это указывает на противоречивую реакцию разных узлов.
Отдельно OrangeSurf сообщил, что ИИ-модель Fable 5 от Anthropic, встроенная в GitHub Copilot, нашла ошибку в исходном коде предлагаемого исправления по простому запросу.
Читайте также
За неделю в биткоин- и Ethereum-ETF в США вложили больше $1,2 млрд
Как отчитаться перед налоговой за криптовалюту: сроки, ставки, документы
Кошелёк опустошили через расширение браузера: как работают дрейнеры