Crypto Prices

Эксплуатация FlashLoopAdapter привела к потере $305K из двух связанных кошельков Safe на Aave

2 часа назад
2 минут чтения
2 просмотров

Инцидент с FlashLoopAdapter в Aave v3

Пользовательский FlashLoopAdapter, использовавшийся для управления позициями с кредитным плечом в Aave v3, был эксплуатирован в сети Ethereum, что привело к потерям в размере $305,000 для двух кошельков Safe. Злоумышленник обошел контроль доступа модуля, воспользовавшись уязвимостью аутентификации в контракте FlashLoopAdapter.

По информации компании по безопасности блокчейнов SlowMist, злоумышленник использовал уязвимость, позволяющую фальшивому Safe пройти проверки, предназначенные для ограничения доступа к кошелькам, которые активировали модуль.

В результате злоумышленник смог сохранить около 114.09 ETH после манипуляций с позициями, принадлежащими затронутым кошелькам.

Причины инцидента

Основная причина инцидента заключалась в том, что контроль доступа FlashLoopAdapter для открытия и закрытия позиций проверял только ISafe(msg.sender).isModuleEnabled(address(this)), что можно было подделать с помощью фальшивого Safe, который всегда возвращал true. Инцидент касался пользовательского контракта, построенного на основе Aave, а не основного протокола Aave v3.

Defimon Alerts, обнаруживший атаку в 15:08:57 UTC 1 октября, сообщил, что сам Aave v3 не пострадал.

FlashLoopAdapter – это модуль Safe, который открывает и закрывает кредитные петли Aave v3 для тех Safes, которые его активируют. Safes, использующие этот модуль, могли управлять стратегиями с петлями, связанными с заимствованными активами и залогом.

Механизм атаки

Согласно SlowMist, уязвимость была обнаружена в контроле доступа, используемом функциями открытия и закрытия адаптера. Вместо того чтобы независимо проверять, является ли вызывающий законным Safe, функции проверяли, возвращает ли ISafe(msg.sender).isModuleEnabled(address(this)) true. Злоумышленник смог развернуть фальшивый контракт Safe, который был запрограммирован на возврат true, когда FlashLoopAdapter выполнял проверку.

Как только фальшивый Safe прошел этот тест, злоумышленник получил доступ к функциональности, которая должна была быть ограничена авторизованными кошельками.

Последствия атаки

Атака на FlashLoopAdapter включала не только перевод активов, уже находящихся внутри затронутых кошельков. Злоумышленник взял flash-кредит Morpho WETH и использовал заимствованную ликвидность для погашения примерно 1,335 WETH долга Aave, принадлежащего первому Safe, идентифицированному как 0xcfedf95a3653a128dfc2e4288758a1a1850d169f.

Погашение долга освободило залог, связанный с позицией Aave с кредитным плечом. Затем злоумышленник использовал скомпрометированный путь выполнения модуля, чтобы заставить Safe вывести примерно 1,306 weETH на адрес, контролируемый злоумышленником.

Второй Safe, 0xe3b23e47df7cd85876ac6cb05bdb9d7cd5b28520, потерял еще 6.4 weETH через тот же уязвимый модуль. Defimon сообщил, что оба затронутых Safe имели одного и того же владельца.

Оценка убытков

Часть выведенного weETH была обменена на WETH, когда злоумышленник погасил flash-кредит и другие части транзакции. Злоумышленник остался с около 114.1 ETH, стоимостью примерно $305,000 на момент сообщения об инциденте. SlowMist отдельно оценил убыток в около 114.09 ETH и сообщил, что примерно 1,300 WETH долга было погашено в процессе разблокировки залога.

Реакция Aave

Ни одно из предупреждений о безопасности не выявило уязвимость в самом Aave v3. Основатель и CEO Aave Станислав Кулечов заявил, что затронутый контракт является сторонним внешним адаптером, построенным на основе Aave, и не оказал «никакого влияния на Aave v3».

Это не контракт Aave v3, это сторонний внешний адаптер, построенный на основе Aave, ноль влияния на Aave v3.

FlashLoopAdapter – это отдельный пользовательский контракт, который использует Aave v3 для управления позициями с кредитным плечом, хранящимися через кошельки Safe.

Заключение

SlowMist идентифицировала адрес злоумышленника как 0x42c2633438609881c8fBAb82414eb9A0c45F9353, в то время как уязвимый контракт FlashLoopAdapter был указан как 0x16bb8b912da187870c23ec6756bb3fad061283d8. Последовательность атаки сочетала подделанную аутентификацию Safe с контролем над роутером адаптера и параметрами calldata.

Как только злонамеренный контракт прошел начальную проверку, злоумышленник направил адаптер обратно к жертве Safe и вызвал его функцию выполнения модуля. Flash-кредит Morpho обеспечил WETH, необходимый для погашения долга Aave более крупного кошелька, прежде чем его залог weETH мог быть удален.

Примерно 1,306 weETH было выведено из этого Safe, в то время как еще 6.4 weETH было изъято из второго кошелька. После того как заимствованная ликвидность была погашена и часть выведенных активов была конвертирована, Defimon Alerts подсчитали, что злоумышленник сохранил около 114.1 ETH. SlowMist классифицировала инцидент как уязвимость смарт-контракта и оценила понесенные убытки в $305,000.