Хакер предотвратил кражу $10 млн из уязвимого DeFi-протокола

Хакер предотвратил кражу $10 млн из уязвимого DeFi-протокола

25.09.2020
0
Александр Сорокин

Эксперт по безопасности блокчейнов и этичный хакер под ником samczsun опубликовал детальный разбор операции по спасению 25 000 ETH или около $10 млн из уязвимого смарт-контракта в сети Ethereum.

Изучая смарт-контракты в поисках уязвимостей 15 сентября, samczsun наткнулся на протокол Lien Finance. Оказалось, что вывести криптовалюту из него мог любой желающий.

Контракт Lien содержал функцию «сжигания», позволявшую пользователям выпускать ничего не стоящие токены и обменивать их на эфир. К удаче разработчиков и пользователей, первым на уязвимость наткнулся автор публикации в блоге.

Рассматривалось два варианта выхода из сложившейся ситуации. Команда Lien могла бы публично сообщить об уязвимости, но в этом случае ею непременно воспользовались бы злоумышленники. Прямой вывод активов из контракта путем эксплуатации бага также не был безопасен из-за присутствия ботов, которые могли бы провести ту же операцию с более высокой комиссией или при содействии майнеров и присвоить криптовалюту.

К процедуре были подключены аудиторская компания CertiK и майнинг-пул SparkPool. С их помощью был разработан специальный API, который позволил майнерам самостоятельно отправить и принять транзакции без их раскрытия в мемпуле.

Также было подготовлено четыре подписанных транзакции. Вывод средств опять же осуществлялся не напрямую. Для этого потребовалось перевести 30 000 токенов SBT и LBT, доступных для выпуска в неограниченных объемах, и конвертировать их в ETH через функцию сжигания.

«Я некоторое время медлил, но мы сделали все возможное, – пишет автор. – Мы могли потерять $9,6 млн, но ни о чем не сожалели бы. 15 блоков, которые прошли перед добавлением наших транзакций, ощущались как часы, но наконец транзакции были безупречно добавлены, по порядку и не обращены».

Затем команде Lien Finance оставалось только обменять токены SBT и LBT на ETH при помощи функции сжигания. Спустя короткое время в блокчейне появилось подтверждение успешного спасения 25 000 ETH.


Подписаться
Уведомить о
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x