InVM - изнутри о Web3
809 subscribers
45 photos
5 files
73 links
Про тонкости работы Defi в EVM-блокчейнах глазами solidity разработчика.

Админ @zerofuz
Download Telegram
#HACK
Произошла спланированная атака на sandwith MEV ботов. ~25kk$

Коротко:
- Атакующие стали валидаторами и создали токен пару недель назад.
- Отправили выгодную транзакцию свапа в мемпуле и арб боты перехватили ее (тоесть в бандле смайнится быстрее чем в публичном мемпуле) и отправили бандл (mevTx1, targetTx, mevTx2), все поверхностные проверки что бандл прибыльный пройдены.
- Этот бандл попал на майнинг блока к атакующему валидатору (например валидатор подключен к flashbots)
- Валидатор подменил target на обратное направление свапа, сделав mevTx2 убыточной
- Смайнил блок

Стоимость атаки:
- 32eth(валидатор)
- Создание токена с ликвидностью 10k-500k$
- Подобрать такое соотношение ликвидности и размера свапа, чтобы sandwith боты вливали млн$ чтобы извлечь выгоду из «очевидно прибыльной транзакции»

Источник:
https://twitter.com/PeckShieldAlert/status/1642787345366941697
#HACK

Sushiswap RouterProcessor2 контракт скомпроментирован, атакующие могут распоряжаться средствами, которые разрешено тратить контракту.
В сети eth 0x044b75f554b886a065b9567891e45c79542d7357, и других сетях.

Один из вариантов проверить, не дал ли кошелек лишний апрув, так: https://etherscan.io/tokenapprovalchecker , ввести адрес кошелька и посмотреть его approvals, подозрительные отключить.

Для исполнения атаки нужен собственный контракт, который обащается к RouterProcessor2.uniswapV3SwapCallback

Источник: https://twitter.com/peckshield/status/1644907207530774530?s=20
#HACK
Разберемся, безопасен ли токен grimace в догечейне, который активно продвигают.
Смарт-контракт не верифицирован в сканере, поэтому проверим по-другому.

На dexscreener и dextools есть и покупки и продажи. Простейший ханипот отпадает, но что, если внутри кода есть метод на отключение продаж?

Goplus не поддерживает dogechain
decompile.tools не поддерживает dogechain

Повышаем ставки

Код контракта из сканнера вставляем в ethervm.io, подозрительных функций не видно, но может внутри одной из функций будет триггер? Например, если вызвать .transfer с конкретным большим числом, то это отключит возможность продавать.
- Пойдем с конца, легче найти tx.log Transfer
- Перевод завершается по Transfer(address,address,uint256) 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
- func_052F - функция перевода токенов, в нее входят из .transfer и .transferFrom
- 0xa9059cbb - transfer(address,uint256)
- 0x23b872dd - transferFrom(address,address,uint256)
- При беглом осмотре подозрительного кода не видно

panoramix
Все выглядит хорошо, кроме .name() и .symbol() (вывод panoramix в первом комментарии)
В ethervm.io аналогично

Посмотрим как выглядят функции в контрактах с верифицированным кодом (предоставленный .sol файл скомпилировался в конретный байткод на стороне сканера bscscan и поэтому сканер показывает исходный код)

wbnb (panoramix код в комментах)
Все функции хорошо читаются, подвоха точно нет, но интересующие функции отличаются от grimace, пропускаем.

pepeai (panoramix код в комментах)
.name() и .symbol() внешне совпадают с кодом от grimace, у pepeai код верифнут. Следовательно, grimace методы тоже надежные.

Можно было подойти с другой стороны, разместить код из dogechain в avax/polygon сети и пройтись более человечными анализаторами, но это слишком просто)

Выводы:
- Код контракта полностью безопасен
- Grimace основан на версии компилятора 0.8.16 как и pepeai
- Остаются риски с влиянием на цену крупными холдерами токенов, но где такого нет? 😄
InVM - изнутри о Web3
Снимок экрана 2022-12-17 в 10.50.44.png
#HACK Помолчал и хватит.

В сентябре стремился повторить salmonela.

Идея в том, что нужно отправить такую "уязвимую транзакцию", что на нее поведется frontrun/backrun бот и не сможет продать токены обратно.
Идеальный пример выглядит так:
- Взять за основу код классического контракта от OpenZeppelin
- Добавить ряд переключателей, чтобы или брать комиссию или отключать свапы
- Создать uniswap v2 пару c некоторой ликвидностью
- Отправить транзакцию обмена со slippage >X$ потерь
- Frontrun бот разместит свои транзакции так, что заработает себе X$ из нашего slippage
- Но несколько позиций в блоке Frontrun бот держит наши токены
- Отключаем возможность продажи через бандл или любым другим способом
- Как итог, Frontrun бот купил наших токенов, но продать не сможет.
- Профит!

Но на практике все очень сложно:
- Если подменять собственную транзакцию свапа со слиппеджем на транзакцию отключения свапов, то боты это видят и даже подменяют свои FR транзы на self-send. Но чаще видят и совсем не реагируют
- Если отправить свап как обычно, а отключение свапов через бандл, то снова никто не ловится, боты это видят.

После тестов в eth/bsc/arbitrum/polygon/avax/base могу с уверенность сказать, что:
- Frontrun и Backrun боты работают исключительно через бандлы, а бандлы есть в eth/bsc
- В любых других блокчейнах без бандлов, есть только снайпер-боты что покупают на копейки свеже-созданный токен
- Благодаря бандлам, боты полностью защищены от подмен и ловушек, риск только в совбстенных ошибках в боте.
- Есть такой тип ботов, что стремится выкупить сапплай токена при резком дампе цены до микро-центов, чтобы мгновенно зарабатывать с любого притока $ в торговую пару.

Касательно бандл-провайдеров, в eth их много, все они форкнулись от flashbots.
В bsc два покемона, первый bnb48.