Samczsun обнаружил уязвимость 15 сентября, занимаясь поиском багов в смарт-контрактах Эфириума. «Хакер» случайно нашел контракт протокола Lien Finance, в котором содержалось свыше 25 000 ETH. samczsun выяснил, что вывести монеты из этого смарт-контракта мог любой желающий. В нем была функция «сжигания», с помощью которой пользователи могли самостоятельно выпускать токены, не имеющие ценности, и обменивать их на эфиры, хранящиеся в смарт-контракте.
Учитывая анонимность команды Lien Finance, исследователь сообщил о проблеме Александру Уэйду (Alexander Wade) - специалисту по кибербезопасности ConsenSys, работающей над развитием экосистемы Эфириума, а также связался со специалистом по безопасности Эфириума Скоттом Бигелоу (Scott Bigelow). Они начали искать решение проблемы, рассматривая несколько вариантов развития событий.
Команда Lien Finance могла раскрыть информацию об уязвимости, однако в таком случае злоумышленники воспользовались бы этой возможностью. Возвращать монеты прежним держателям тоже было небезопасно, так как «боты-хищники» могли бы присвоить их, выполнив такие же операции, используя мемпул Эфириума «Ethereum’s Dark Forest».
Мемпул представляет собой промежуточную зону, в которой скапливаются транзакции, ожидающие подтверждения майнеров, чтобы быть включенными в следующий блок. Эта зона постоянно «патрулируется ботами-хищниками», которые могли бы автоматически скопировать транзакции в мемпул, заменить их адреса на собственные и «подсунуть» дублированные операции майнерам. Поэтому прямой вывод криптоактивов из смарт-контракта Lien Finance привел бы к краже 25 000 ETH этими ботами в считанные секунды.
Исследователи подключили к решению исследовательницу блокчейна Тину Чжень (Tina Zhen), а также аудиторскую компанию CertiK и майнинговый пул SparkPool. Совместными усилиями они разработали специальный API, с помощью которого майнеры могли принимать транзакции без их раскрытия в мемпуле. Кроме того, с целью «спасения» 25 000 ETH специалисты подготовили скрипт для создания четырех подписанных транзакций. Однако эти меры все же не подразумевали прямой вывод монет. В Lien Finance требовалось перевести 30 000 токенов SBT и LBT, которые доступны для выпуска в неограниченном количестве, и конвертировать их в ETH через функцию сжигания.
В результате операция по спасению эфиров была выполнена успешно при сотрудничестве с майнинговым пулом, что позволило избежать отправки транзакций в мемпул и их столкновения с ботами. Транзакции были размещены в блоке самими майнерами. Команде Lien Finance оставалось лишь обменять токены SBT и LBT на ETH, используя функцию сжигания. Через некоторое время в обозревателе блокчейна Эфириума Etherscan подтвердилось успешное проведение операции.
Напомним, что в мае «белые хакеры» обнаружили в криптовалютных биржах Lykke и Hubdex уязвимости, из-за которых можно было вывести цифровые активы общей стоимостью $18 млн. В 2018 году этичные хакеры получили около $900 тысяч за информацию о багах в различных криптовалютных проектах.