14.3Kпросмотров
9 июля 2024 г.
Score: 15.7K
MEV безумие. Поговорим об эксплойтах. В прошлом посте мы поговорили по поводу основных атаках, но это не все Вот что недавно со мной произошло - Я написал контракт который будет собирать токены на кошелек который я укажу в транзакции
- Раскидал на кошельки токены
- Запустил бота, транзакция отправилась, но зафейлилась, а токены ушли на другой адрес в другой транзе в этом же блоке И как это произошло?
- Есть N бот, он постоянно проверяет транзакции в мемпуле, берет их параметры и всячески издевается над входными данными: пытается отправить такой же вызов контракта, но со своего коша; меняет параметры, которые похожи на ресивера. Одним словом - методом перебора и выстрела в небо чтобы найти в контракте ошибку - Я написал контракт правильно, за исключением вызова этой основной функции. Ошибка заключалась в том, что я не добавил вайтлист или проверку на онлиовнера при ее вызове, и получается, каждый мог взять дату что я указал, поменять в конце ресивера на свой адрес и вызвать эту функцию - Мев бот случайно перебрал N вариант что можно сделать с моей датой, просимулировал транзу, увидел что в результате выполнения ему будет переведены токены с Y стоимостью и отправил свою транзу, указав гвей выше моего чтобы его tx исполнилась быстрей Вот живой пример
- Человек отправляет транзу на минт токенов USDC | transaction
- Бот перехватывает транзу, ничего не меняя, но указывая ту же дату | transaction
- Бот получил копейку USDC после включения транзы в блок // Вы тоже можете проверить что можно было сделать и просимулировать транзакцию в прошлом блоке через тендерли, действительно крутая тулза, я только так понял как это получилось Так же, были случаи крупных хаков, которые перехватывали такие боты из-за простейшей ошибки
- Вы нашли как ломануть протокол на 10m$, долго подготавливались к этому дню
- Кидаете транзу, секундное ожидание
- И ваш хак присваивает бот-перехватчик
- выход в окно Да, этим промышляли еще 4 года назад, но с этим никак не столкнуться пока сам не начнешь писать контракты и запускать ботов. //В момент, когда у меня дернули токены, я настолько был в шоке, что потом еще минут 30 кормил бота тестовыми транзами и смотрел что он делает - это очень интересно