Incidenten med FlashLoopAdapter
En anpassad FlashLoopAdapter som användes för att hantera hävstångspositioner i Aave v3 har blivit utnyttjad på Ethereum, vilket har resulterat i förluster på cirka $305,000 för två Safe-plånböcker. En angripare lyckades kringgå modulens åtkomstkontroller genom att utnyttja en autentiseringsbrist i FlashLoopAdapter-kontraktet.
Angreppets Detaljer
Enligt blockchain-säkerhetsföretaget SlowMist kunde angriparen använda en falsk Safe för att passera kontroller som var avsedda att begränsa åtkomst till plånböcker som hade aktiverat modulen. Angriparen behöll slutligen cirka 114,09 ETH efter att ha manipulerat positioner som hölls av de drabbade plånböckerna.
”Den grundläggande orsaken till incidenten var att FlashLoopAdapters öppna/stänga åtkomstkontroll endast kontrollerade om ISafe(msg.sender).isModuleEnabled(address(this)) returnerade sant, vilket kunde förfalskas av en falsk Safe som alltid returnerade sant.”
Incidenten involverade ett anpassat kontrakt byggt ovanpå Aave snarare än det centrala Aave v3-protokollet. Defimon Alerts, som upptäckte attacken klockan 15:08:57 UTC den 1 oktober, bekräftade att Aave v3 i sig inte påverkades.
Åtkomstkontroll och Utnyttjande
FlashLoopAdapter designades för att öppna och stänga hävstångspositioner genom Aave v3. Safes som aktiverade modulen kunde använda den för att hantera loopstrategier som involverade lånade tillgångar och säkerheter. Enligt SlowMist upptäcktes svagheten i åtkomstkontrollerna för adapterns öppna och stänga funktioner. Istället för att oberoende verifiera att anroparen var en legitim Safe, kontrollerade funktionerna om ISafe(msg.sender).isModuleEnabled(address(this)) returnerade sant.
En angripare kunde distribuera ett falskt Safe-kontrakt som programmerades att returnera sant när FlashLoopAdapter gjorde kontrollen. När den falska Safen passerade testet fick angriparen tillgång till funktionalitet som borde ha begränsats till auktoriserade plånböcker.
Konsekvenser av Attacken
Defimon Alerts rapporterade att kontroller som utfördes under callbacken inte stoppade transaktionen eftersom angriparens kontrakt också agerade som flash likviditetsleverantör. En annan funktion, _swap, tillät ett råanrop till en swapRouter med anroparens angivna swapCalldata. Båda indata kunde kontrolleras av angriparen.
Istället för att tillhandahålla en vanlig swap-router ställde angriparen in routern till en av de drabbade Safe-plånböckerna. Calldata ställdes in för att anropa execTransactionFromModule, en Safe-funktion som tillåter en aktiverad modul att utföra en transaktion. Eftersom FlashLoopAdapter redan var aktiverad av den drabbade Safe, accepterades det resulterande anropet.
Tidigare Incidenter och Sammanfattning
Ett liknande problem med behörigheter kopplade till Safe-moduler uppstod i september. En Ethereum Safe-plånboksutnyttjande som involverade cirka 2,900 rsETH spårades av BlockSec till svaga auktorisationskontroller i ett exekveringskontrakt kopplat till en aktiverad Safe-modul.
FlashLoopAdapter-attacken involverade mer än bara att överföra tillgångar som redan fanns i de drabbade plånböckerna. Defimon Alerts rapporterade att angriparen tog ett Morpho WETH-flashlån och använde den lånade likviditeten för att återbetala cirka 1,335 WETH av Aave-skuld som tillhörde den första Safe.
Den stora säkerhetsuttagningen representerar därför inte angriparens nettovinst. Mycket av kapitalet som rörde sig genom transaktionen var kopplat till att återbetala skulden och avveckla den hävstångspositionen innan de återstående tillgångarna kunde tas.
SlowMist klassificerade incidenten som en smart kontrakts sårbarhet och uppskattade den resulterande förlusten till $305,000.