Хакер спасает 10 миллионов долларов в Ethereum
Исследователь блокчейн-безопасности и белый хакер (whitehat), известный как samczsun, сегодня опубликовал подробное «вскрытие» секретной операции , в результате которой было спасено 25000 ETH на сумму более 9,6 миллиона долларов.
Исследователь блокчейн-безопасности и белый хакер (whitehat), известный как samczsun, сегодня опубликовал подробное «вскрытие» секретной операции , в результате которой было спасено 25000 ETH на сумму более 9,6 миллиона долларов на тот момент. Средства были спасены от уязвимого смарт-контракта Ethereum.
15 сентября samczsun просматривал смарт-контракты Ethereum в поисках уязвимостей (как он это часто делает). В конце-концов, он обнаружил то, что позже оказалось частью протокола Lien Finance: смарт-контракт, содержащий более 25000 ETH. Только эти средства мог забрать кто угодно.
Согласно сообщению, смарт-контракт содержал функцию «сжигания». По сути, это позволяло любым пользователям чеканить себе много бесполезных токенов и обменивать их на ETH, хранящиеся в контракте, получая кэш стоимостью почти 10 миллионов долларов.
Поскольку команда Lien Finance была анонимной, хакер установил множество потенциальных связей со всеми участниками для спасения 25000 ETH. Александр Уэйд, исследователь безопасности в ConsenSys — одной из двух компаний, проводивших аудит смарт-контрактов (а также финансирующих независимую редакцию Decrypt), — и специалист по безопасности Ethereum Скотт Бигелоу вскоре присоединились к спасательной операции.
Реально ситуацию можно было разрешить двумя способами. Во-первых, Lien Finance могла бы публично раскрыть уязвимость, но это создало бы прекрасную возможность для хакеров вырвать средства — например, поставить знак «бесплатные деньги».
Во-вторых, команда whitehat могла использовать сам смарт-контракт, а затем вернуть средства их законным владельцам. Но это определенно привлекло бы так называемых универсальных ботов-первопроходцев — высших хищников мемпула Ethereum.
Мемпул (транзакции, ожидающие подтверждения в сети), выразительно называемый «Dark Forest», представляет собой специальную «промежуточную зону», где транзакции собираются до того, чтобы быть принятыми майнерами для включения в следующий блок. И эту область постоянно патрулируют специальные боты, которые ищут любые транзакции, которые можно использовать для взлома.
По сути, боты могут автоматически копировать любую транзакцию в пуле памяти, заменять ее адреса своими собственными и удостовериться, что дублирующая операция сначала будет обнаружена майнерами. В нынешней ситуации это означало, что боты могли легко украсть 10 миллионов долларов в считанные секунды. Секретность была важна.
После непродолжительной адаптации, программисты SparkPool потратили следующие пару часов на разработку и тестирование специализированного «whitehat API», который позволял майнерам принимать транзакции, не отображая их в мемпуле. В свою очередь, члены команды whitehat завершили скрипт для генерации четырех последовательных подписанных транзакций, которые в конечном итоге спасут 25000 ETH. Но эти транзакции не были предназначены для прямого вывода средств. Если они будут выполнены в правильном порядке, они передадут 30 000 токенов SBT и LBT — которые можно бесконечно чеканить — в Lien Finance, что позволит конвертировать эти токены обратно в ETH с помощью функции записи с заключительной операцией.
Когда все приготовления были завершены, команда Samczsun наконец приступила к спасательной операции. Работая с майнинговой компанией, боты успешно обходили транзакции. Это связано с тем, что транзакции не отправлялись в мемпул — они были непосредственно помещены в блок самими майнерами.
Теперь команде Lien Finance оставалось только обменять токены SBT и LBT на ETH с помощью функции записи. Через несколько мгновений после выполнения последней транзакции, Etherscan сообщил об ее успешном завершении, обезвредив 25000 ETH.
Таким образом, команда белых хакеров «сбежала из Dark Forest» и спасла небольшое состояние.