Exploit FlashLoopAdapter wysysa 305 tys. dolarów z portfeli Safe powiązanych z Aave

ETH
WETH
exploit kontroli dostępuFlashLoopAdapterportfel SafeBłyskawiczna pożyczkaSlowMistAave v3
3 godzin temuŹródło: crypto.news
Exploit FlashLoopAdapter wysysa 305 tys. dolarów z portfeli Safe powiązanych z Aave

Niestandardowy FlashLoopAdapter używany do zarządzania lewarowanymi pozycjami Aave v3 został wykorzystany na Ethereum, pozostawiając dwa portfele Safe ze stratami szacowanymi na 305 000 dolarów po tym, jak atakujący ominął kontrolę dostępu modułu.

Podsumowanie

  • Luka w kontroli dostępu FlashLoopAdapter pozwoliła atakującemu wyczerpać około 305 000 dolarów z dwóch portfeli Safe na Ethereum.
  • Atakujący użył błyskawicznej pożyczki Morpho, aby spłacić około 1 335 WETH długu w Aave przed wycofaniem około 1 306 weETH w zabezpieczeniu.
  • Założyciel Aave, Stani Kulechov, powiedział, że dotknięty kontrakt był adapterem strony trzeciej zbudowanym na Aave i nie miał żadnego wpływu na Aave v3.

Firma zajmująca się bezpieczeństwem blockchain SlowMist powiedziała, że atakujący wykorzystał lukę w uwierzytelnianiu w kontrakcie FlashLoopAdapter, co pozwoliło fałszywemu Safe przejść kontrole mające na celu ograniczenie dostępu do portfeli, które włączyły moduł. Atakujący ostatecznie zatrzymał około 114,09 ETH po użyciu modułu do manipulowania pozycjami posiadanymi przez dotknięte portfele.

Incydent dotyczył niestandardowego kontraktu zbudowanego na Aave, a nie podstawowego protokołu Aave v3. Defimon Alerts, który wykrył atak o 15:08:57 UTC 1 października, powiedział, że samo Aave v3 nie zostało dotknięte.

Kontrole dostępu FlashLoopAdapter pozwoliły fałszywemu Safe przejść

FlashLoopAdapter został zaprojektowany jako moduł Safe do otwierania i zamykania lewarowanych pozycji przez Aave v3. Safe, które włączyły moduł, mogły go używać do zarządzania strategiami pętli obejmującymi pożyczone aktywa i zabezpieczenie.

Według SlowMist słabość została znaleziona w kontrolach dostępu używanych przez funkcje open() i close() adaptera.

Zamiast niezależnie ustalić, że wywołujący był legalnym Safe, funkcje sprawdzały, czy ISafe(msg.sender).isModuleEnabled(address(this)) zwraca true. Atakujący mógł wdrożyć fałszywy kontrakt Safe zaprogramowany tak, aby zwracał true, gdy FlashLoopAdapter dokonywał sprawdzenia.

Gdy fałszywy Safe przeszedł ten test, atakujący uzyskał dostęp do funkcjonalności, która powinna być ograniczona do autoryzowanych portfeli.

Defimon Alerts powiedział, że kontrole wykonane podczas callbacku nie zatrzymały transakcji, ponieważ kontrakt atakującego działał również jako dostawca błyskawicznej płynności. Inna funkcja, _swap(), następnie pozwoliła na surowe wywołanie do swapRouter przy użyciu swapCalldata dostarczonego przez wywołującego.

Oba wejścia mogły być kontrolowane przez atakującego.

Zamiast dostarczyć zwykły router swap, atakujący ustawił router na jeden z portfeli Safe ofiary. Calldata została ustawiona, aby wywołać execTransactionFromModule, funkcję Safe, która pozwala włączonemu modułowi wykonać transakcję.

FlashLoopAdapter był już włączony przez portfel Safe ofiary, więc wynikowe wywołanie zostało zaakceptowane.

Podobny problem dotyczący uprawnień przypisanych do modułów Safe pojawił się we wrześniu. Exploit portfela Ethereum Safe obejmujący około 2 900 rsETH został prześledzony przez BlockSec do słabych kontroli autoryzacji w kontrakcie executor połączonym z włączonym modułem Safe. Bot MEV wyprzedził próbę exploitu i otrzymał aktywa, zanim pierwotna transakcja ataku została wycofana, jak wcześniej informował crypto.news.

Atakujący spłacił 1 335 WETH, aby odblokować zabezpieczenie weETH

Atak na FlashLoopAdapter polegał na czymś więcej niż tylko transferze aktywów już znajdujących się w zaatakowanych portfelach.

Defimon Alerts podał, że atakujący zaciągnął pożyczkę błyskawiczną Morpho WETH i wykorzystał pożyczoną płynność do spłaty około 1 335 WETH długu w Aave należącego do pierwszego Safe, zidentyfikowanego jako 0xcfedf95a3653a128dfc2e4288758a1a1850d169f.

Spłata długu uwolniła zabezpieczenie powiązane z dźwigniową pozycją w Aave. Atakujący następnie wykorzystał skompromitowaną ścieżkę wykonania modułu, aby zmusić Safe do wypłaty około 1 306 weETH na adres kontrolowany przez atakującego.

Drugi Safe, 0xe3b23e47df7cd85876ac6cb05bdb9d7cd5b28520, stracił kolejne 6,4 weETH przez ten sam podatny moduł.

Defimon podał, że oba dotknięte Safe miały tego samego jedynego właściciela.

Część wypłaconego weETH została zamieniona na WETH, gdy atakujący rozliczał pożyczkę błyskawiczną i inne części transakcji. Atakującemu pozostało około 114,1 ETH, o wartości około 305 000 dolarów w momencie zgłoszenia incydentu.

SlowMist niezależnie oszacował stratę na około 114,09 ETH i podał, że w procesie odblokowywania zabezpieczenia spłacono około 1 300 WETH długu.

Duża wypłata zabezpieczenia nie reprezentuje zatem zysku netto atakującego. Większość kapitału przepływającego przez transakcję była związana ze spłatą długu i zamknięciem dźwigniowej pozycji, zanim pozostałe aktywa mogły zostać zabrane.

Kontrakty Aave v3 nie zostały zidentyfikowane jako podatny komponent

Żaden z alertów bezpieczeństwa nie zidentyfikował wady w samym Aave v3.

Założyciel i CEO Aave, Stani Kulechov, powiedział, że dotknięty kontrakt był zewnętrznym adapterem strony trzeciej zbudowanym na Aave i miał „zerowy wpływ na Aave v3”.

FlashLoopAdapter to oddzielny niestandardowy kontrakt, który wykorzystuje Aave v3 do zarządzania dźwigniowymi pozycjami utrzymywanymi przez portfele Safe. Zgłoszona podatność dotyczyła sposobu, w jaki adapter uwierzytelniał wywołujących i co mogli oni zmusić włączony moduł do wykonania.

Rozróżnienie to przypomina inne incydenty, w których protokół lub usługa pozostały operacyjne, podczas gdy moduł połączony z portfelami Safe zapewniał ścieżkę wykorzystaną przez atakującego.

W maju exploit involving the SquidRouterModule drained Safes na Ethereum i Base. Około 3 milionów do 3,2 miliona dolarów zostało skradzionych z 86 portfeli po tym, jak atakujący obrali za cel moduł Safe strony trzeciej, podczas gdy Squid podał, że jego główne kontrakty routera i środki użytkowników nie zostały naruszone.

Kolejny incydent związany z Safe pojawił się kilka dni później, gdy użytkownicy Gnosis Pay zostali wezwani do wycofania środków po exploicie involving its Zodiac delay module. Współzałożyciel Gnosis, Martin Köppelmann, powiedział wówczas, że wada może pozwolić atakującemu na inicjowanie transakcji z Safe przy użyciu dotkniętego modułu.

Moduły Safe mogą otrzymać uprawnienia do wykonywania transakcji z portfela bez każdorazowego przechodzenia przez standardowy przepływ transakcji właściciela. FlashLoopAdapter polegał na tej możliwości, aby automatyzować dźwigniowe pozycje Aave, ale to samo uprawnienie oznaczało, że skuteczne obejście logiki uwierzytelniania adaptera mogło dotrzeć do aktywów kontrolowanych przez Safe.

Atakujący FlashLoopAdapter zachował około 114 ETH

SlowMist zidentyfikował adres atakującego jako 0x42c2633438609881c8fBAb82414eb9A0c45F9353, podczas gdy podatny kontrakt FlashLoopAdapter został wymieniony jako 0x16bb8b912da187870c23ec6756bb3fad061283d8.

Sekwencja ataku połączyła sfałszowane uwierzytelnienie Safe z kontrolą nad routerem adaptera i parametrami calldata. Gdy złośliwy kontrakt przeszedł wstępną weryfikację, atakujący skierował adapter z powrotem na ofiarę Safe i wywołał jej funkcję wykonania modułu.

Pożyczka błyskawicznа Morpho dostarczyła WETH potrzebny do spłaty długu Aave większego portfela, zanim jego zabezpieczenie weETH mogło zostać usunięte. Około 1 306 weETH zostało wypłacone z tego Safe, podczas gdy kolejne 6,4 weETH zostało zabrane z drugiego portfela.

Po rozliczeniu pożyczonej płynności i konwersji części wycofanych aktywów, Defimon Alerts obliczył, że atakujący zachował około 114,1 ETH.

SlowMist zaklasyfikował incydent jako lukę w inteligentnym kontrakcie i oszacował wynikające z niego straty na 305 000 dolarów.