Domenica 30 luglio 2023, il mondo della finanza decentralizzata è stato scosso da un grave attacco che ha sfruttato una vulnerabilità nel linguaggio di programmazione Vyper utilizzato da diversi pool di liquidità del protocollo Curve. Come hanno fatto gli aggressori a rubare più di 41 milioni di dollari?
La colpa è di una falla nel linguaggio Vyper
Gli aggressori hanno sfruttato una vulnerabilità in alcuni pool di liquidità di Curve, il popolare protocollo di finanza decentralizzata (DeFi). La vulnerabilità è stata ricondotta a Vyper, un linguaggio di programmazione alternativo per gli smart contract di Ethereum.
In effetti, diversi pool di Curve che utilizzavano Vyper sono stati sfruttati, causando perdite stimate in 41 milioni di dollari secondo la società di sicurezza BlockSec. Infatti, le versioni 0.2.15, 0.2.16 e 0.3.0 di Vyper sono risultate vulnerabili a un attacco di reentrance.
In concreto, questo si verifica quando una funzione dello smart contract effettua una chiamata esterna a un altro smart contract inaffidabile. Quest’ultimo effettua poi una chiamata ricorsiva alla funzione originale per prosciugare i fondi. Poiché lo smart contract non aggiorna il suo stato prima di inviare i fondi, l’aggressore può chiamare continuamente la funzione di prelievo per drenare i fondi.
Secondo un’analisi della società di sicurezza Ancilia, 136 smart contract hanno utilizzato Vyper 0.2.15, 98 smart contract hanno utilizzato Vyper 0.2.16 e 226 smart contract hanno utilizzato Vyper 0.3.0:
Abbiamo fatto una ricerca veloce su github.
Sono stati trovati 136 contratti compilati con vyper 0.2.15 e che utilizzavano la protezione rientrante;
98 contratti trovati con la versione 0.2.16
226 contratti trovati con la versione 0.3.0– Ancilia, Inc (@AnciliaInc) 30 luglio 2023
Di conseguenza, diversi bacini sono stati completamente svuotati di liquidità:
- Curve’s CRV-ETH pool: perdita di 14 milioni di dollari
Pool alETH-ETH di - Alchemix: perdite per 13,66 milioni di dollari;
Pool pETH-ETH di - JPEG: perdita di 11,4 milioni di dollari;
pool sETH-ETH di Metronome: perdite per 1,6 milioni di dollari.
Su Twitter, Vyper ha spiegato che il malfunzionamento era dovuto al compilatore del linguaggio di programmazione, che in alcuni casi aveva fallito. Di conseguenza, le protezioni contro gli attacchi di reentrance non hanno funzionato.
Il gettone CRV cala drasticamente
Dopo l’attacco ai pool di Curve, il prezzo di CRV ha iniziato a scendere rapidamente. CRV è sceso da 0,70 a 0,59 dollari nell’arco di soli 60 minuti, con un calo di circa il 16%:

Evoluzione del prezzo di CRV dopo l’attacco