15 сентября в сети Ethereum был обнаружен случай, когда неизвестный злоумышленник инициировал вывод около 2900 rsETH, эквивалентных примерно $7,73 млн, из кошелька Safe. Однако перед тем как средства попали к пользователю, их перехватил MEV-бот Yoink, который в том же блоке осуществил собственную операцию и забрал активы.
Как происходила атака
Атакующий использовал публичный вызов Multicall, предназначенный для автоматического выполнения нескольких операций. Через этот контракт он перенаправил пользовательский модуль ликвидности Uniswap v4, привязанный к Safe, в пул, созданный им с вредоносным смарт-контрактом. Контракт развернул обернутый aEthrsETH обратно в rsETH, после чего Yoink мгновенно извлек средства.
Уязвимость в Multicall
Исследователи BlockSec, SlowMist и AstraSec подтвердили, что причина атаки кроется в ошибочной проверке авторизации в дополнительном Multicall-контракте, к которому владелец кошелька дал полномочия. При установке параметра target равного address(this) внутренняя проверка проходила, а msg.sender получал доступ к операциям, не прошедшим надлежащую авторизацию.
Меры реагирования
После выявления подозрительной активности протокол Kelp DAO временно ограничил операции на 24 часа для одного адреса, получившего rsETH, но не затронул базовые смарт-контракты протокола. Пользователям не требуется предпринимать дополнительных действий, а rsETH остаётся полностью обеспеченным.
Влияние на экосистему
- Подтверждена уязвимость в дополнителном компоненте Safe, но базовые контракты Safe не пострадали.
- Случай напоминает о взломе Bybit в феврале 2025 года, когда аналогичная уязвимость в инфраструктуре Safe привела к утечке средств.
- Обновления безопасности и проверка авторизации в Multicall становятся приоритетными задачами для разработчиков экосистемы Ethereum.