Експлойт FlashLoopAdapter спустошує пов'язані з Aave гаманці Safe на $305K

ETH
WETH
експлойт контролю доступуFlashLoopAdapterгаманець SafeFlash LoanSlowMistAave v3
1 годину томуДжерело: crypto.news
Експлойт FlashLoopAdapter спустошує пов'язані з Aave гаманці Safe на $305K

Кастомний FlashLoopAdapter, який використовувався для управління позиціями з плечем на Aave v3, було використано на Ethereum, внаслідок чого два гаманці Safe зазнали збитків, оцінених у $305,000, після того як зловмисник обійшов контроль доступу модуля.

Підсумок

  • Недолік контролю доступу FlashLoopAdapter дозволив зловмиснику вивести близько $305,000 з двох гаманців Safe на Ethereum.
  • Зловмисник використав флеш-позику Morpho, щоб погасити близько 1,335 WETH боргу в Aave, перш ніж вивести близько 1,306 weETH застави.
  • Засновник Aave Stani Kulechov заявив, що постраждалий контракт був стороннім адаптером, побудованим на Aave, і не мав жодного впливу на Aave v3.

Фірма з блокчейн-безпеки SlowMist повідомила, що зловмисник використав недолік автентифікації в контракті FlashLoopAdapter, що дозволило фальшивому Safe пройти перевірки, призначені для обмеження доступу до гаманців, які активували модуль. Зловмисник зрештою зберіг близько 114.09 ETH після використання модуля для маніпулювання позиціями, які утримували постраждалі гаманці.

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

Контроль доступу FlashLoopAdapter дозволив фальшивому Safe пройти

FlashLoopAdapter був розроблений як модуль Safe для відкриття та закриття позицій з плечем через Aave v3. Safe, які активували модуль, могли використовувати його для управління стратегіями циклічного запозичення, що включають позичені активи та заставу.

За словами SlowMist, слабкість була виявлена в контролі доступу, який використовується функціями open() та close() адаптера.

Замість того щоб самостійно встановити, що викликач був легітимним Safe, функції перевіряли, чи повертає ISafe(msg.sender).isModuleEnabled(address(this)) значення true. Зловмисник міг розгорнути фальшивий контракт Safe, запрограмований повертати true, коли FlashLoopAdapter виконував перевірку.

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

Defimon Alerts заявив, що перевірки, виконані під час зворотного виклику, не зупинили транзакцію, оскільки контракт зловмисника також виступав постачальником флеш-ліквідності. Інша функція, _swap(), потім дозволила сирий виклик до swapRouter з використанням swapCalldata, наданих викликачем.

Обидва вхідні параметри могли контролюватися зловмисником.

Замість звичайного своп-роутера зловмисник встановив роутером один із гаманців Safe жертви. Calldata було налаштовано на виклик execTransactionFromModule — функції Safe, яка дозволяє активованому модулю виконувати транзакцію.

FlashLoopAdapter вже був активований гаманцем Safe жертви, тому отриманий виклик було прийнято.

Подібна проблема, пов'язана з дозволами, прикріпленими до модулів Safe, виникла у вересні. Експлойт гаманця Ethereum Safe із залученням близько 2,900 rsETH було простежено BlockSec до слабких перевірок авторизації в контракті виконавця, підключеному до активованого модуля Safe. MEV-бот випередив спробу експлойту та отримав активи до того, як оригінальна транзакція атаки була відхилена, як раніше повідомляв crypto.news.

Атакувальник погасив 1 335 WETH, щоб розблокувати заставу weETH

Атака FlashLoopAdapter передбачала не просто переказ активів, які вже знаходилися в уражених гаманцях.

Defimon Alerts повідомила, що атакувальник узяв флеш-позику Morpho WETH і використав позичену ліквідність для погашення приблизно 1 335 WETH боргу Aave, що належав першому Safe, ідентифікованому як 0xcfedf95a3653a128dfc2e4288758a1a1850d169f.

Погашення боргу вивільнило заставу, пов’язану з левериджованою позицією Aave. Потім атакувальник використав скомпрометований шлях виконання модуля, щоб змусити Safe вивести приблизно 1 306 weETH на адресу, контрольовану атакувальником.

Другий Safe, 0xe3b23e47df7cd85876ac6cb05bdb9d7cd5b28520, втратив ще 6,4 weETH через той самий уразливий модуль.

Defimon заявила, що обидва постраждалі Safe мали одного й того самого єдиного власника.

Частину виведених weETH було обміняно на WETH, коли атакувальник розраховувався за флеш-позику та інші частини транзакції. В атакувальника залишилося близько 114,1 ETH, що оцінювалося приблизно в 305 000 доларів на момент повідомлення про інцидент.

SlowMist окремо оцінила збитки приблизно в 114,09 ETH і заявила, що під час процесу розблокування застави було погашено близько 1 300 WETH боргу.

Таким чином, велике виведення застави не відображає чистий прибуток атакувальника. Значна частина капіталу, що пройшов через транзакцію, була пов’язана з погашенням боргу та розкручуванням левериджованої позиції, перш ніж можна було забрати решту активів.

Контракти Aave v3 не були визначені як уразливий компонент

Жодне з попереджень безпеки не виявило недоліку в самому Aave v3.

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

FlashLoopAdapter — це окремий кастомний контракт, який використовує Aave v3 для управління левериджованими позиціями, що утримуються через гаманці Safe. Повідомлена уразливість стосувалася того, як адаптер автентифікував виклики та що вони могли змусити виконувати увімкнений модуль.

Ця відмінність нагадує інші інциденти, у яких протокол або сервіс залишався працездатним, тоді як модуль, підключений до гаманців Safe, забезпечував шлях, використаний атакувальником.

У травні експлойт, пов’язаний із SquidRouterModule, спустошив Safe в Ethereum і Base. Було викрадено близько 3–3,2 мільйона доларів з 86 гаманців після того, як атакувальники націлилися на сторонній модуль Safe, тоді як Squid заявила, що її основні контракти маршрутизатора та кошти користувачів не постраждали.

Ще один інцидент, пов’язаний із Safe, стався через кілька днів, коли користувачів Gnosis Pay закликали вивести кошти після експлойту, пов’язаного з її модулем затримки Zodiac. Співзасновник Gnosis Мартін Кеппельманн тоді заявив, що цей недолік міг дозволити атакувальнику ініціювати транзакції з Safe, які використовують уражений модуль.

Модулям Safe може бути надано дозвіл виконувати транзакції з гаманця без проходження стандартного потоку транзакцій власника щоразу. FlashLoopAdapter покладався на цю можливість для автоматизації левериджованих позицій Aave, але той самий дозвіл означав, що успішний обхід логіки автентифікації адаптера міг дістатися до активів, контрольованих Safe.

Атакувальник FlashLoopAdapter зберіг близько 114 ETH

SlowMist ідентифікувала адресу атакувальника як 0x42c2633438609881c8fBAb82414eb9A0c45F9353, тоді як уразливий контракт FlashLoopAdapter було вказано як 0x16bb8b912da187870c23ec6756bb3fad061283d8.

Послідовність атаки поєднала підроблену автентифікацію Safe з контролем над маршрутизатором адаптера та параметрами calldata. Щойно шкідливий контракт пройшов початкову перевірку, атакувальник спрямував адаптер назад до жертви Safe і викликав його функцію виконання модуля.

Флеш-позика Morpho надала WETH, необхідні для погашення боргу Aave більшого гаманця, перш ніж його заставу weETH можна було вилучити. Приблизно 1 306 weETH було виведено з того Safe, тоді як ще 6,4 weETH було взято з другого гаманця.

Після погашення позиченої ліквідності та конвертації частини виведених активів Defimon Alerts підрахував, що зловмисник зберіг приблизно 114,1 ETH.

SlowMist класифікував інцидент як уразливість смарт-контракту та оцінив завдані збитки у 305 000 доларів.