Attacco al Protocollo DeFi Abracadabra
Il protocollo DeFi Abracadabra ha subito una perdita di 1,8 milioni di dollari dopo che un attaccante ha sfruttato un errore logico nella sua funzione batch. Gli analisti di Hacken hanno rivelato che l’attaccante ha già riciclato i fondi tramite Tornado Cash.
Dettagli dell’Attacco
All’inizio di ottobre, Abracadabra, un protocollo di prestito DeFi che consente agli utenti di prendere in prestito il suo stablecoin MIM utilizzando token depositati come garanzia, ha subito un attacco che ha portato a una perdita di circa 1,8 milioni di dollari. L’attaccante ha utilizzato un errore logico nella funzione batch del protocollo per prendere in prestito senza fornire alcuna garanzia, replicando un attacco subito da un progetto forkato solo pochi giorni prima, come riportato in una nota di ricerca di Hacken condivisa con crypto.news.
Funzionamento di Abracadabra
Abracadabra è stato progettato per consentire agli utenti di utilizzare token che generano interessi come garanzia per prendere in prestito un token ancorato al dollaro statunitense, noto come Magic Internet Money (MIM). Il sistema si basa su due elementi principali: i Cauldrons, che gestiscono le regole di prestito, e il DegenBox, il vault condiviso che detiene effettivamente i token. In sintesi, gli utenti forniscono una garanzia in un Cauldron, mentre il DegenBox tiene traccia delle transazioni.
Errore Logico e Sfruttamento
Il problema principale riscontrato è stato che una bandiera di sicurezza, che dovrebbe forzare un controllo finale per verificare se un prestatore ha effettivamente una garanzia, è stata disattivata all’interno di una singola transazione. Come evidenziato nel rapporto di Hacken, l’attaccante “ha sfruttato un difetto logico nella funzione cook di Abracadabra, che consentiva di prendere in prestito token MIM e poi ripristinare immediatamente la bandiera di validazione necessaria per controllare se avevano sufficiente garanzia.” Questo ha permesso di ottenere prestiti non garantiti in un colpo solo attraverso più Cauldrons.
Flusso dell’Attacco
Ecco come ha funzionato il flusso, in termini semplici: Abracadabra utilizza una funzione batch chiamata cook, che consente agli utenti di eseguire diverse azioni in una sola transazione, come depositare garanzia e prendere in prestito con un solo clic. Una di queste azioni, il passaggio “prendere in prestito”, imposta una bandiera chiamata needsSolvencyCheck su true, indicando che “alla fine di questa transazione, controlla che il prestatore sia solvibile.” Tuttavia, un’altra azione eseguita all’interno della stessa batch chiama la funzione _additionalCookAction(…). Come sottolinea Hacken, quella funzione è stata dichiarata “virtuale” e non è mai stata implementata, restituendo per impostazione predefinita un oggetto vuoto in cui tutto era impostato su false, inclusa la bandiera needsSolvencyCheck. Di conseguenza, l’attaccante ha chiamato l’azione di prestito, poi ha invocato l’azione predefinita che ha ripristinato la bandiera, e alla fine il protocollo non ha mai controllato la solvibilità.
Risultati dell’Attacco
Gli analisti affermano che l’attaccante ha colpito sei Cauldrons in un colpo solo, prendendo circa 1,79 milioni di MIM e scambiandoli per ETH. Gli attaccanti hanno sfruttato la vulnerabilità e sono passati sistematicamente attraverso sei diversi Cauldrons, svuotando ciascuno “utilizzando la stessa tecnica con una chiamata di funzione cook dedicata,” hanno spiegato gli analisti. Dopo lo scambio, l’attaccante ha instradato i fondi tramite Tornado Cash, un protocollo di mixing crypto, principalmente in tranche da 10 ETH ciascuna, inviando gradualmente i fondi nel giorno successivo.
Conclusioni e Riflessioni
Questa non è la prima volta che il codice CauldronV4 di Abracadabra è stato coinvolto in problemi. Altri incidenti all’inizio di quest’anno hanno sfruttato diversi casi limite nella stessa famiglia di contratti. Ciò che è interessante è la rapidità con cui il fork ha reagito. Secondo il rapporto, un fork chiamato Synnax ha messo in pausa o ha rimosso dalla whitelist il suo master CauldronV4 sulla propria DegenBox giorni prima dello svuotamento di Abracadabra, suggerendo che il team del fork ha attivato il freno d’emergenza dopo aver individuato lo stesso modello debole, evidenziando che il rischio era visibile ai team che monitoravano il codice, sebbene non fosse stato risolto.