mercoledì 13 ottobre 2021

Come Funzionano I Flash Loan Attacks Sulla DeFi (AMM)

Oggi parliamo dei flash loan attack, una piaga che affligge la DeFi e in generale i pools di liquidità degli AMM. Sostanzialmente gli AMM sono dei dex (exchange decentralizzati) dove sono gli utenti stessi a fornire liquidità nei pools e a permettere gli scambi. Su alcune piattaforme è possibile chiedere prestiti flash appunto (flash loan attack). I prestiti canonici sono collateralizzati: ovvero chiedo un prestito fornendo una garanzia. Ad esempio blocco 1 ETH (come garanzia), ottengo il 60% in stablecoin (prestito) e poi con queste ci faccio ciò che voglio (posso metterle a rendita, spenderle, comprare altro). Chiaramente sussiste una soglia di liquidazione, infatti se il prezzo di ETH scende e rende il mio prestito sotto-garantito, vengo liquidato (pagherò anche delle penali). Ovviamente posso aggiungere anche altro collaterale per evitare che accada ciò. Se invece va tutto come deve, io dovrò prima o poi ripagare il mio prestito (la soglia di liquidazione appunto, serve ad evitare che l'utente chieda un prestito e poi non sia più invogliato a restituirlo).


FLASH LOAN (NON GARANTITI)
I flash loan invece sono prestiti non garantiti e non c’è limite all’importo che l’utente può prendere in prestito, essi ove supportati possono essere presi immediatamente (a condizione che vengano rimborsati nella stessa transazione). Un flash loan permette di svolgere 3 operazioni in una unica transazione:

1) Prelevare delle somme da un pool di liquidità

2) Utilizzare tale prestito

3) Rimborsare il prestito

I prestiti flash falliscono se non viene rimborsato il debito prima della fine della transazione. Ad introdurli fu Aave, piattaforma di lending su Ethereum. Questo tipo di prestiti devono essere rimborsati nella stessa transazione, se ciò non avviene vengono bloccati. Trattandosi di prestiti flash appunto, il modo per utilizzarli è l’arbitraggio, un processo che sfrutta la differenza di prezzo di un asset in due diversi mercati consentendo agli utenti di guadagnare da ciò.  
Ad esempio acquisto un token a 10 dollari su un dex e se su un altro dex viene venduto a 11 dollari, otterrò un guadagno vendendolo nel secondo dex. Perchè sono efficaci? Perchè i prezzi sui dex non sono allineati, l'integrazione di oracoli (Chainlink, Band, Tellor) limiterebbe questo fenomeno. Una volta che è stato rimborsato il prestito al termine della transazione, io otterrò il guadagno dalla differenza di prezzo e pagherò le commissioni inerenti il prestito. Ma come avvengono i "flash loan attack?" Si ricorda l'exploit subito a maggio 2021 dalla piattaforma PancakeBunny:

1) L'utente ha preso in prestito su PancakeSwap un’enorme quantità di BNB (Binance Coin)

2) Ha poi utilizzato questi BNB per manipolare al ribasso i prezzi nei pools USDT/BNB e Bunny/BNB, riuscendo ad ottenere una grande quantità di Bunny manipolando al rialzo il pool di liquidità (6,97 milioni di Bunny per un valore superiore a 1 miliardo di dollari)

3) La grande quantità di Bunny (700.000) è stata poi venduta facendo precipitare il prezzo a $ 6 (da circa $ 146)

4) L'hacker ha chiuso poi il contratto, ripagando il prestito di BNB tramite PancakeSwap e guadagnato la differenza pari a 114.631 BNB 

L’attacco ha visto il prezzo di Bunny aumentare rapidamente sino a $ 240 prima di precipitare a $ 25 in pochi secondi provocando una perdita netta di oltre 70 milioni di dollari di capitalizzazione di mercato del token Bunny ma senza compromettere nessun conto utente.
Anche Cream Finance ha subito un attacco simile perdendo 418.311.571 AMP e 1.308,09 ETH, attraverso un reentrancy bug nello smart contract del token AMP. L'exploit è stato fermato, sospendendo i prestiti su AMP. 
La piattaforma ha specificato che l’hacker ha sottratto i token prendendo in prestito asset in una serie di 17 transazioni separate durante il trasferimento di AMP prima che si aggiornasse il primo spostamento. 

"L’hacker effettua un flash loan da 500 ETH e deposita i fondi come collaterale. Quindi, prende in prestito 19 milioni di AMP e sfrutta il reentrancy bug per riprendere in prestito 355 ETH all’interno del trasferimento di token AMP. In seguito, l’hacker liquida direttamente il prestito"

Un altro si è verificato lo scorso febbraio 2021 quando il protocollo Alpha Homora è stato prosciugato di 37 milioni di dollari utilizzando Iron Bank, la piattaforma di prestito di Cream. Il protocollo di yield farming con leva finanziaria è stato colpito da una serie flash loan.
L'hacker ha ripetutamente preso in prestito sUSD da Iron Bank tramite Alpha Homora, raddoppiando ogni volta l'importo preso in prestito. Ciò è stato fatto in un processo di due transazioni in cui l'hacker ha restituito i fondi a Iron Bank ogni volta, il che ha permesso loro di ricevere in cambio Yearn Synth sUSD (cySUSD).
Quindi, l'attaccante ha preso in prestito 1,8 milioni di USD Coin (USDC) da Aave tramite un prestito flash, quindi li ha scambiati con sUSD utilizzando Curve. sUSD è stato utilizzato per rimborsare il prestito flash e prestare ad Iron Bank, il che ha permesso di ricevere ogni volta una quantità proporzionale di cySUSD.
Fondamentalmente, gli hacker hanno ripetuto questo processo molte volte, il che ha permesso loro di rubare enormi quantità di Creamy cyUSD che a loro volta hanno usato per prendere in prestito altre criptovalute da Iron Bank. Quindi, sono stati presi in prestito 13,000 Wrapped Ethereum (WETH), 3,6 milioni di USDC, 5,6 milioni di USDT e 4,2 milioni di Dai. 
Anche Yearn Finance (YFI) a febbraio ha subito un attacco simile, ad uno dei suoi pool contenenti Dai perdendo un totale di $ 11 milioni.
L'attaccante ha utilizzato un prestito flash su Aave per prosciugare il pool. Lo sviluppatore di Yearn, Banteg, ha inoltre condiviso che l'hacker ha rubato 513.000 DAI, $ 1,7 milioni in USDT e il resto in token CRV. Il fondatore di Aave, Stani Kulechov, ha spiegato che l'attaccante ha utilizzato un complesso di 160 transazioni nidificate su più piattaforme DeFi e ha speso $ 5.000 in tasse di gas per l'attacco. È interessante notare che più di $ 3 milioni di Dai rubati sono finiti in un pool di liquidità su Curve.

Nessun commento:

Posta un commento