Översikt av Attacken mot Abracadabra
DeFi-protokollet Abracadabra har förlorat 1,8 miljoner dollar efter att en angripare utnyttjat ett enkelt logikfel i dess batchfunktion. Analytiker på Hacken rapporterar att angriparen redan har tvättat pengarna via Tornado Cash.
Detaljer om Attacken
I början av oktober drabbades Abracadabra, ett DeFi-låneprotokoll som låter användare låna sin stablecoin MIM med insatta tokens som säkerhet, av en ny attack. Denna gång förlorade protokollet återigen cirka 1,8 miljoner dollar efter att en angripare använde ett logikfel i protokollets batchfunktion för att låna utan att ställa upp någon säkerhet.
Enligt en forskningsnotis från blockchain-säkerhetsföretaget Hacken, som delades med crypto.news, skedde attacken på ett sätt som liknar en tidigare attack mot ett forked-projekt bara dagar innan.
Hur Abracadabra Fungerar
Abracadabra lanserades för att ge användare möjlighet att använda räntebärande tokens som säkerhet och låna en token kopplad till den amerikanska dollarn, kallad Magic Internet Money (MIM). Systemet är uppbyggt kring två huvudkomponenter:
- Cauldrons: som hanterar lånevillkoren.
- DegenBox: det delade valvet som faktiskt håller tokens.
I korthet: användare ställer upp säkerhet i en Cauldron, medan DegenBox hanterar pengarna bakom kulisserna.
Logikfelet och dess Konsekvenser
Vad som gick fel var att en säkerhetsflagga, som skulle tvinga en slutlig kontroll av om en låntagare faktiskt hade säkerhet, stängdes av inom en enda transaktion. Som Hackens rapport beskriver:
”Utnyttjade angriparen ett logikfel i Abracadabras cook-funktion, där de kunde låna MIM-tokens och sedan omedelbart återställa valideringsflaggan som skulle kontrollera om de hade tillräcklig säkerhet.”
Detta möjliggjorde en engångslån utan säkerhet över flera Cauldrons.
Flödet av Attacken
Så här fungerade flödet, i klarspråk: Abracadabra använder en batchad funktion kallad cook, så att användare kan utföra flera åtgärder i en och samma transaktion. En av dessa åtgärder, ”låna”-steget, sätter en flagga som heter needsSolvencyCheck till true, vilket betyder ”vid slutet av denna transaktion, kontrollera att låntagaren är säker.” Men en annan åtgärd som kan köras inom samma batch kallar på funktionen _additionalCookAction(…). Som Hacken påpekar, den funktionen deklarerades som ”virtuell” och implementerades aldrig, vilket gjorde att den som standard returnerade ett tomt objekt där allt var inställt på false, inklusive needsSolvencyCheck-flaggan.
Som ett resultat kallade angriparen låna-åtgärden, kallade sedan standardåtgärden som återställde flaggan, och i slutändan kontrollerade protokollet aldrig låntagarens betalningsförmåga.
Resultatet av Attacken
Analytikerna rapporterar att angriparen utnyttjade sårbarheten och systematiskt gick igenom sex olika Cauldrons, där de tog ut ungefär 1,79 miljoner MIM och bytte det mot ETH. Angriparen använde samma teknik för att tömma varje Cauldron.
Efter bytet dirigerade angriparen medlen genom Tornado Cash, ett kryptoblandningsprotokoll, där de skickade över 10 ETH vardera gradvis under den följande dagen.
Tidigare Incidenter och Reaktioner
Detta är inte första gången Abracadabras CauldronV4-kod har varit involverad i problem. Tidigare incidenter i år har utnyttjat olika kantfall i samma familj av kontrakt. Intressant nog reagerade den forkade distributionen snabbt. Enligt rapporten pausade en fork kallad Synnax eller avlistade sin CauldronV4-master på sin egen DegenBox dagar innan Abracadabra-tömningen, vilket tyder på att fork-teamet drog i nödbromsen efter att ha upptäckt samma svaga mönster. Detta indikerar att risken var synlig för team som övervakade koden, även om den inte åtgärdades.