Gli attacchi di prestito flash BZx segnalano la fine della DeFi?

All’inizio di questa settimana, il protocollo di prestito decentralizzato bZx è stato sfruttato in attacchi di “prestito flash” back-to-back. Sebbene i due exploit fossero distinti, i risultati finali sono rimasti gli stessi. In totale, $ 954.000 sono stati raccolti dalla piattaforma. Ma cosa è successo esattamente? È stato un exploit, un semplice caso di arbitraggio o un attacco dannoso? E dove va la finanza decentralizzata da qui?

Non è stata una buona settimana di pubbliche relazioni per il settore DeFi. Per alcuni, il movimento che promette un’alternativa al vecchio sistema finanziario sta iniziando a sembrare un esperimento fallito. Per altri, gli attacchi equivalevano a poco più che essere presi dalla parte sbagliata di un mestiere. Ma a prescindere dalla semantica, sia che questi attacchi siano emersi da una scappatoia legittima o siano il risultato di un attacco premeditato, la fiducia nella DeFi è davvero messa alla prova.

Il primo attacco

Il 14 febbraio si è verificato il primo exploit. In un post mortem compilato dopo l’incidente, il co-fondatore di bZx Kyle Kistner descrive il momento esatto in cui si è verificato l’attacco. Il team bZx era fuori per la conferenza ETHDenver, una serata di Ethereum che celebra ironicamente il meglio della DeFi. I campanelli d’allarme hanno iniziato a suonare quando il team ha ricevuto informazioni su una transazione “sospetta”. “Siamo immediatamente tornati a casa dall’happy hour tBTC”, scrive Kistner.

Kistner ha informato i membri del gruppo Telegram dell’azienda, spiegando che un “exploit” era stato eseguito su un contratto bZx – che è stato prontamente sospeso – e che una “porzione di ETH” era andata persa. La quantità effettiva raccolta nel primo incidente ammontava a 1.193 Ether (ETH). Facendo eco alle parole del boss di Binance Changpeng Zhao, bZx affermato che i fondi degli utenti erano “SAFU”.

Fortunatamente per i suoi utenti, bZx opera su un sistema di sicurezza, raccogliendo il 10% di tutti gli interessi guadagnati dai prestatori e aggregandolo in un fondo assicurativo. Di conseguenza, le perdite per gli utenti di bZx sono nominali. Per la piattaforma bZx, tuttavia, l’attacco ha comportato un elevato costo reputazionale.

Tirando la rapina

Ma come ha fatto l’attaccante a realizzare dal nulla un profitto di 1.193 ETH? Per usare una spiegazione un po ‘riduttiva, l’attaccante ha ideato una rete di transazioni per eseguire un “pump and dump”.

Ecco come è andata giù:

Innanzitutto, l’attaccante ha ottenuto un prestito di 10.000 ETH sulla piattaforma di prestito DeFi dYdX. Hanno quindi diviso il prestito tra bZx e un’altra piattaforma di prestito nota come Compound. L’ETH inviato a Compound è stato utilizzato per garantire un altro prestito per 112 bitcoin avvolti (WBTC). Nel frattempo, il 1.300 ETH assegnato a bZx è stato utilizzato per abbreviare ETH a favore di WBTC.

Sfruttando la bassa liquidità di uno scambio decentralizzato noto come Uniswap, che condivide i dati sui prezzi con bZx tramite la rete DeFi Kyber, l’attaccante è riuscito a pompare il prezzo di WBTC su Uniswap attraverso lo short WBTC posto su bZx.

L’antagonista ha quindi scaricato il WBTC preso in prestito da Compound su Uniswap, approfittando del tasso di mercato gonfiato. Con i profitti in mano, l’attaccante ha rimborsato per intero il prestito originale da dYdX e ha intascato un fantastico profitto di 1.193 ETH lasciando bZx con un prestito sottocollateralizzato.

Ma ecco il kicker: tutto ciò che è stato descritto sopra è stato eseguito in una singola transazione, realizzata tramite un prodotto DeFi noto come “prestito flash”.

Prestiti flash e bug contrattuali

I prestiti flash consentono ai trader di contrarre un prestito senza alcun sostegno, ovvero eliminano la necessità di garanzie. Possono farlo perché il prestito viene rimborsato immediatamente. Gli arbitri utilizzano prestiti flash in combinazione con contratti intelligenti, che codificano per eseguire operazioni di arbitraggio calcolato: l’acquisto e la vendita simultanei di attività in diversi mercati.

Eseguiti in modo atomico, i prestiti flash sono commercializzati come “privi di rischio” poiché la rete Ethereum rettifica qualsiasi mancato rimborso del prestito ripristinando la transazione originale. Come risultato della loro natura atomica, nessuna parte è stata in grado di intercettare l’attacco di prestito flash mentre stava accadendo. Zhuoxun Yin, capo delle operazioni di dYdX – l’exchange in cui è stato preso in prestito il prestito flash – ha detto a Cointelegraph:

“Non eravamo a conoscenza di nulla ufficialmente fino a quando non è emerso tutto. Queste transazioni sono tutte atomiche, il che significa che l’intera operazione viene eseguita o fallisce. ”

Tuttavia, non si trattava solo di prestiti flash a disposizione dell’attaccante. Hanno anche sfruttato le vulnerabilità all’interno del contratto intelligente bZx. Kistner ha spiegato a Cointelegraph come è stato consentito l’attacco iniziale:

“Il primo attacco è stato abbastanza semplice in quanto hanno fatto un grosso scambio che ha mangiato i fondi degli istituti di credito. Una bandiera è stata posta più in alto nello stack che ha permesso al commercio di aggirare un controllo sul fatto che stessero mettendo o meno in pericolo i fondi del prestatore “.

Il controllo bypassato menzionato da Kistner è lo stesso a cui fa riferimento l’ex ingegnere di Google Korantin Auguste nei suoi dettagli analisi dell’attacco: “L’attaccante ha sfruttato un bug in bZx che gli ha fatto scambiare una quantità enorme su Uniswap a un prezzo gonfiato di 3 volte.”

A quanto pare, una funzione cruciale per verificare se si fosse verificato uno slittamento del mercato non si è attivata. Se lo avesse fatto, avrebbe annullato la posizione bZx dell’attaccante, rendendo inefficace l’operazione. Invece, l’attaccante poteva continuare senza impedimenti.

Secondo round

Quattro giorni dopo, il 18 febbraio, bZx è caduto ancora vittima un altro attacco, costringendo l’ennesima sospensione del protocollo. Analogamente al primo, sono stati utilizzati prestiti flash per facilitare un pump and dump su Uniswap, questa volta con il risultato che l’attaccante ha ottenuto 2.378 ETH.

Questa volta, l’attaccante ha sottoscritto un prestito flash di 7.500 ETH su bZx, scambiando 3.517 ETH per 940.000 Synthetix USD (sUSD), una moneta stabile ancorata uno a uno con il dollaro degli Stati Uniti. Successivamente, l’attaccante ha utilizzato 900 ETH per acquistare un altro round di sUSD su Kyber e Uniswap, aumentando il prezzo di sUSD a oltre 2,5 volte il tasso di mercato.

Quindi, utilizzando l’sUSD ora gonfiato preso in prestito da Synthetix come garanzia, l’attaccante ha ottenuto un prestito di 6.796 ETH su bZx. Usando l’ETH appena preso in prestito e l’ETH rimasto dal prestito originale, l’attaccante ha rimborsato il prestito flash di 7.500 ETH e ancora una volta ha scremato un profitto, questa volta per la melodia di 2.378 ETH.

Questo ha lasciato bZx con un altro prestito sotto garanzia. Fortunatamente, questo era coperto dal fondo assicurativo.

Incolpare l’oracolo

Piuttosto che una ripetizione del bug originale, che è stato corretto dopo il primo attacco, il secondo round era apparentemente il risultato della manipolazione degli oracoli.

Gli oracoli sono intermediari basati su blockchain che alimentano dati esterni in contratti intelligenti. In questo caso, l’oracolo dei prezzi di bZx ha trasmesso il prezzo sUSD gonfiato senza una verifica, portando bZx a credere che il prestito di 6.769 ETH fosse completamente garantito. Un’analisi di PeckShield, una società di sicurezza blockchain, riassunto l’exploit dell’oracolo come segue:

“La manipolazione dell’oracolo fa aumentare sostanzialmente il prezzo del token interessato, ovvero sUSD, e lo rende estremamente prezioso nel sistema di prestito bZx. L’aggressore può quindi semplicemente depositare sUSD precedentemente acquistato o accumulato come garanzia per prendere in prestito WETH a scopo di lucro (invece di vendere o scaricare). ”

Yin osserva che usando Kyber (e per procura Uniswap) come oracolo dei prezzi, bZx potrebbe aver chiesto problemi: “I protocolli dovrebbero utilizzare oracoli di alta qualità, non DEX on-chain direttamente come oracoli dei prezzi. Gli oracoli alimentati da giornalisti fuori catena sarebbero più sicuri “. Ha anche puntato il dito contro i DEX che supportano attività a bassa liquidità:

“Molti DEX supportano asset che sono molto illiquidi. Illiquidità significa che i mercati possono essere spostati molto più facilmente. La liquidità deve migliorare, cosa che sono sicura accadrà nel tempo: ci sono fattori tecnici e di mercato che devono essere superati “.

La volatilità unita a una bassa liquidità può rivelarsi un mix insidioso. In questo caso, lo slittamento del mercato era inevitabile e l’aggressore lo sapeva. Fortunatamente, dopo l’incidente, bZx ha preso la decisione di collaborare con la rete Oracle decentralizzata Chainlink e ha utilizzato i suoi dati sui prezzi.

Hack, attacco o arbitraggio legittimo?

Per alcuni, questi casi equivalgono a poco più di un esperto arbitraggio commercio. Tuttavia, la realtà non è così semplice. L’aggressore ha abusato di diverse vulnerabilità all’interno dei protocolli di bZx, approfittando dei mercati a bassa liquidità e impiegando tattiche di manipolazione sfacciate. Kistner, co-fondatore di bZx, ha detto a Cointelegraph che si tratta di un caso tagliato e asciugato:

“È un attacco perché ha utilizzato il nostro codice in un modo che non era progettato per produrre un risultato inaspettato che creava responsabilità per terze parti.”

Condividendo un’opinione simile, Auguste sostiene che non importa come lo guardi, si trattava di attacchi dannosi:

“In entrambi i casi, c’erano bug sfruttati nel codice bZx, quindi questi erano sicuramente attacchi e non possono essere qualificati come un arbitraggio intelligente o qualcosa di legittimo.”

Cointelegraph ha anche contattato Thomas Glucksmann, vice presidente dello sviluppo aziendale globale presso la società di analisi blockchain Merkle Science. Proprio come gli altri, Glucksmann ha classificato l’incidente come un hack, suggerendo che segue gli stessi principi del furto con qualsiasi altro mezzo.

Tuttavia, si è affrettato a riportare i riflettori su bZx, insinuando che qualsiasi vettore di attacco avrebbe dovuto essere corretto prima, soprattutto date le lezioni apprese dall’hacking dell’organizzazione autonoma decentralizzata nel 2016.

“Gli sviluppatori possono in genere evitare tali scenari garantendo un accurato processo di verifica dei contratti intelligenti. È incredibile che alcuni team non abbiano ancora imparato dalle conseguenze della debacle di DAO e dimostrino l’attuale fragilità dei servizi DeFi “.

Tuttavia, Glucksmann non ha cancellato completamente bZx. In termini di controllo dei danni, dice che sia l’autopsia che il fondo assicurativo fanno molto per attenuare il colpo.

E adesso la DeFi nel suo complesso?

A seguito dell’ultimo attacco bZx, il settore DeFi ha registrato una perdita significativa di asset bloccati, in calo di circa $ 140 milioni da un picco di $ 1,2 miliardi il 18 febbraio. Poche settimane prima degli attacchi, DeFi vantava una pietra miliare di $ 1 miliardo in totale bloccato -up asset. Questo deterioramento era particolarmente diffuso nell’Ether bloccato, dove le perdite ammontavano a circa 200.000 ETH, secondo i dati del sito di analisi Defipulse.com.

Valore totale bloccato in DeFi

Tuttavia, Kistner non vede questi exploit come la campana a morto di DeFi. Invece, suggerisce che è semplicemente parte integrante dello sviluppo dell’ecosistema:

“La NASA non ha assunto persone che hanno scritto un codice perfetto per lanciare navette spaziali. Quello che avevano erano processi rigorosi in atto durante l’intero ciclo di sviluppo del codice. Dobbiamo trattare il lancio di una DeFi DApp come trattiamo il lancio di una navetta nello spazio “.

Mentre la DeFi è ancora agli inizi, il mercato un tempo di nicchia continua a maturare, arrampicandosi in prima linea sull’attenzione del mainstream. Tuttavia, il settore funziona senza un sandbox adeguato, un’omissione che è destinata a provocare ulteriori singhiozzi.

Correlati: DeFi inizia a passare da un mercato di nicchia alla finanza mainstream

Per Glucksmann, sebbene sia necessario porre maggiore enfasi sui protocolli di “test di battaglia” prima del lancio, è necessario tenere anche discussioni sulla regolamentazione appropriata. Quindi, è troppo presto per cancellare il settore:

“Ad oggi, gli unici modelli di business redditizi nel settore delle criptovalute erano il mining, gli scambi e la fornitura di liquidità. I servizi DeFi come il prestito potrebbero essere i prossimi. La mancanza di regolamentazione che copre la DeFi in molte giurisdizioni presenta opportunità e rischi, quindi gli utenti dei servizi DeFi devono essere disposti ad accettarlo per il momento “.

Probabilmente, le procedure di due diligence come i controlli Know Your Customer e Anti-Money Laundering potrebbero in qualche modo disincentivare i cattivi attori. Tuttavia, data la natura intrinsecamente decentralizzata della DeFi, i suoi sostenitori probabilmente si ribellerebbero all’idea stessa.