Tempo di lettura: 5 minuti.



Cosa troverai in questo articolo:

  • Una descrizione dettagliata dell'attacco di flash loan che ha colpito Euler Finance.

  • I dettagli della strategia utilizzata dall'attaccante, inclusi i codici degli exploit e le linee di codice vulnerabili all'interno del contratto smart di Euler.

  • Una spiegazione del danno causato dall'attacco.

  • Raccomandazioni per prevenire vulnerabilità simili in futuro.

 

Cos’è Euler Finance e come funziona?

Euler Finance è una piattaforma di finanza decentralizzata (DeFi) basata sulla blockchain Ethereum che consente agli utenti di creare e scambiare opzioni su criptovalute. In particolare, Euler Finance si concentra sulla creazione di opzioni di tipo europeo, ovvero opzioni che possono essere esercitate solo alla scadenza del contratto.

Il funzionamento di Euler Finance si basa su un sistema di smart contract che permettono agli utenti di creare opzioni personalizzate con una varietà di parametri, come il prezzo di esercizio, la data di scadenza, la quantità di criptovaluta coinvolta e così via. Queste opzioni possono poi essere scambiate sulla piattaforma Euler Finance da altri utenti interessati.

Gli utenti che creano opzioni su Euler Finance sono incentivati a farlo attraverso un sistema di incentivazione basato sui token EULER, il token nativo della piattaforma. Ad esempio, gli utenti che creano opzioni possono ricevere una parte delle commissioni di negoziazione pagate dagli utenti che scambiano quelle opzioni sulla piattaforma.

Per garantire la sicurezza delle transazioni e la corretta esecuzione degli smart contract, Euler Finance utilizza diverse tecnologie e protocolli, come il protocollo di consenso Proof of Stake di Ethereum, il sistema di identità decentralizzato KYC on-chain e il sistema di governance basato sui token.

In generale, Euler Finance cerca di fornire un'alternativa decentralizzata alle opzioni tradizionali, permettendo agli utenti di creare e scambiare opzioni personalizzate in modo sicuro e affidabile sulla blockchain Ethereum.

L’attacco ha sfruttato la tecnica del flash loan, che cos’è un flash loan?

Un flash loan è un tipo di prestito crittografico disponibile su alcune piattaforme di finanza decentralizzata (DeFi) che consente agli utenti di accedere a fondi senza la necessità di fornire garanzie o di avere una buona posizione finanziaria.

In pratica, un flash loan permette a un utente di prendere in prestito una grande quantità di criptovaluta per un breve periodo di tempo, solitamente pochi secondi o minuti, senza dover fornire alcuna garanzia. Inoltre, i flash loan non richiedono alcun controllo del credito o della storia finanziaria dell'utente.

I flash loan sono utilizzati principalmente per scopi di arbitraggio, ovvero per sfruttare le differenze di prezzo tra diverse criptovalute o mercati. Un utente può prendere in prestito criptovaluta su una piattaforma DeFi, utilizzarla per effettuare uno scambio o un'operazione di arbitraggio e quindi restituirla prima della scadenza del prestito, pagando solo una piccola commissione. Tuttavia, i flash loan possono anche essere utilizzati per scopi malevoli, come la manipolazione del mercato, il riciclaggio di denaro o il furto di fondi. Per questo motivo, molte piattaforme DeFi hanno introdotto restrizioni sui flash loan o li hanno completamente vietati.


Sequenza di azioni in un Flash Loan

La caratteristica che li rende molto interessanti è che il prestito e la sua restituzione avvengono contestualmente nella stessa transazione e quindi non fa correre nessun rischio al prestatore, infatti in caso di fallimento di una delle operazioni speculative o della restituzione stessa, il prestito risulta come se non fosse mai stato erogato.

Lista degli smart contract e indirizzi coinvolti:

  • Exploit Contract: 0xebc291,0x036ce,0xD3b7CE,0x0b812c

  • Attacker’s Address: 0x5f259, 0xb2698c

  • Attacker’s Transaction: 0xc310a0,0x47ac3

  • Vulnerable Code: #L232, #354

  • Euler’s Contract: 0xe025e3

Come è stato orchestrato l’attacco?

La mattina del 13 marzo 2023, Euler Finance, una piattaforma DeFi che aveva recentemente lanciato la sua funzionalità di deposito di liquidità, è caduta vittima di un attacco flash loan che ha sfruttato una falla logica nello smart contract della piattaforma.

L'attaccante, il cui indirizzo è stato successivamente identificato come 0x5f259, ha avviato l'attacco acquisendo un prestito flash di 30 milioni di DAI da AaveV2 e creando due account: uno come mutuatario e l'altro come liquidatore.

L'attaccante ha trasferito 30 milioni di DAI sull'account del mutuatario e ha utilizzato 20 milioni di DAI per creare 195 milioni di e-DAI e 200 milioni di d-DAI.

Dopo aver rimborsato 10 milioni di DAI utilizzando l'account del mutuatario, l'attaccante ha causato la diminuzione del valore dei token d-DAI di 10 milioni di DAI, rendendo la situazione liquida.

Il mutuatario ha quindi creato nuovamente 195 milioni di token e-DAI e 200 milioni di token d-DAI. Tuttavia, un errore logico nel metodo donateToReserve() ha portato alla bruciatura dei token e-DAI ma non dei token d-DAI, causando un debito di token "d-DAI" non coperto che non verrà mai ripagato.

Il liquidatore ha liquidato il debito e lo ha preso in prestito, ottenendo un profitto di 310 milioni di e-DAI che sono stati convertiti in un equivalente di 38,9 milioni di DAI. L'attaccante ha poi restituito il prestito flash e ha ottenuto un profitto netto di 8,8 milioni di DAI.

L'attacco è continuato fino a quando gli attaccanti hanno svuotato i fondi del progetto, causando una perdita totale di 197 milioni di dollari per Euler Finance.

Il contratto di exploit utilizzato dall'attaccante è stato identificato come 0xebc291,0x036ce,0xD3b7CE,0x0b812c, mentre il codice vulnerabile è stato trovato alle righe 232 e 354. Il contratto di Euler, d'altra parte, è stato identificato come 0xe025e3.

Per prevenire tali vulnerabilità in futuro, gli auditor degli smart contract devono esaminare accuratamente il codice degli smart contract per individuare problemi logici.

È importante chiamare correttamente il metodo burn e assicurarsi che entrambi i token siano bruciati se qualcuno sposta fondi ad un altro account. Il debito dovrebbe anche essere calcolato senza errori logici.

Inoltre, la funzione donateToReserves dovrebbe verificare il valore di mercato attuale del collaterale e confrontarlo con il valore attuale del prestito in sospeso per garantire che il donatore sia ancora sovra-collateralizzato. Se il valore del collaterale del donatore è inferiore al valore del prestito in sospeso, la transazione dovrebbe fallire.

Inoltre, sarebbe utile implementare ulteriori misure di sicurezza, come la definizione di un tasso di collaterale minimo per prevenire l'eccessiva leva finanziaria e la limitazione dell'importo di prestito che può essere ottenuto in un dato momento.

In sintesi, la caduta di Euler Finance è stata causata da un attacco di flash loan che ha sfruttato una falla logica nello smart contract della piattaforma. Per evitare simili situazioni in futuro, è necessario che gli auditor degli smart contract esaminino attentamente il codice alla ricerca di errori logici, che il metodo di donazione e il calcolo del debito siano correttamente implementati, che le funzioni di donazione controllino il valore corrente del collaterale e che vengano implementati ulteriori meccanismi di sicurezza. In questo modo, le piattaforme DeFi possono minimizzare il rischio di subire attacchi e di conseguenza ridurre al minimo le perdite finanziarie.


Sviluppi e restituzione dei fondi

In seguito all'attacco informatico subito da Euler Finance, l'azienda ha dapprima offerto agli hacker di tenersi 20 milioni di dollari, in cambio della restituzione del resto dei fondi entro 24 ore. Successivamente, Euler ha emesso una taglia di 1 milione di dollari come incentivo per l'arresto dell'aggressore e il recupero dei fondi rubati.

È stato successivamente rivelato che parte dei fondi rubati sono stati inviati a un indirizzo di portafoglio precedentemente coinvolto nell'hack di Poly Network, il che ha suggerito la possibile responsabilità del gruppo nordcoreano Lazarus. Tuttavia, la società di transaction analytics Chainalysis ha avvertito che il movimento dei fondi potrebbe essere un tentativo di depistaggio da parte di un altro gruppo di hacker.

Questa situazione sottolinea l'importanza di implementare misure di sicurezza solide in tutte le piattaforme DeFi e l'importanza di collaborare con le autorità competenti per prevenire futuri attacchi.