Sospeso il trading: Bug nei token ERC20 di Ethereum

Sospeso il trading: Bug nei token ERC20 di Ethereum

By Benson Toti - min. di lettura
Aggiornato 16 March 2023

L’exchange di criptovalute Poloniex ha sospeso tutti i depositi e i prelievi di token ERC-20 (basati su Ethereum). HitBTC ha avviato un’ispezione interna che effettua depositi e trasferimenti offline. Questo a seguito della decisione di OKEX di bloccare i depositi di token ERC20 questa mattina dopo la scoperta di un potenziale nuovo bug nello smart contract chiamato batchOverFlow.

I dettagli

Il tweet tradotto:

“Abbiamo temporaneamente sospeso i depositi e prelievi di token ERC20 per via dell’esposizione al bug batchOverflow riportato. Prendiamo tutte le segnalazioni di vulnerabilità molto seriamente in modo da assicurarci che i fondi dei clienti rimangano sicuri. Ringraziamo per la pazienza!”

Segue la traduzione del tweet:

“Per via di un potenziale problema scoperto nei smart contracts ERC20, abbiamo dato il via a una ispezione interna. Tutti i depositi e trasferimenti di token ERC20 saranno messi online in accordo con i risultati dell’ispezione. Prego prendere riferimento alla pagina System Health per lo stato online.”

Una reazione da parte di molti exchange

Altre borse che hanno scelto di fermare il trading di token ERC-20 a causa della vulnerabilità recentemente scoperta. Tra questi Changelly e QUOINE. Il 23 aprile, l’utente Medium ranimes ha pubblicato un blog post dal titolo, “New batchOverflow Bug in Multiple ERC20 Smart Contracts”. Questo post descrive in dettaglio come una “vulnerabilità precedentemente sconosciuta nel contratto” potrebbe consentire ad “un aggressore di possedere una quantità enorme di token sfruttando questi contratti vulnerabili”. Questo, a sua volta, consentirebbe la manipolazione dei prezzi.

Il post sul blog osserva che, a causa del principio “code-is-law” (il codice è legge) che viene utilizzato sulla Blockchain di Ethereum (ETH), “non esiste un meccanismo tradizionale di risposta alla sicurezza ben noto in atto per porre rimedio a questi contratti vulnerabili”. Questa critica è riproposta in un tweet da Dan Larimer, “padre” di EOS, una criptovaluta che contienem meccanismi atti a risolvere simili problemi.

Il tweet tradotto:

“Un nuovo bug nei contratti Ethereumpotrebbe protare ad una hack dell’intero approvigionamento di token lasciando i detentori di questi con token senza valore. Questo è perché il codice non può essere legge e i contratti devono poter essere aggiornati.”

Non tutti i token sono vulnerabili

L’utente di Medium John Huxtable ha commentato il post sul blog dicendo che “vale la pena notare che batchTransfer non è una funzione standard di ERC20 quindi solo i proprietari del contratto che hanno scelto di implementarlo sono vulnerabili”.

L’autore del post sul blog precedentemente citato scrive che i team che lavorano con contratto con questa vulnerabilità sono stati contattati, ma “altri exchange hanno bisogno di essere coordinati e ci sono ancora altri token negoziabili vulnerabili a batchOverflow”. Il blog menziona che un altro problema potrebbe sorgere con le borse non centralizzate che utilizzano servizi di trading offline. Questo “in quanto non possono nemmeno impedire agli attaccanti di riciclare i loro token”.

Conclusione

Il concetto “code is law” è inadatto alla maggior parte delle situazioni. Questo imprevisto è solo l’ultima dimostrazione che questo sia il caso. La quantità di smart contracts vulnerabili è alquanto assurda e il rendere impossibile rimediare è semplicemente stupido. Certo, ci sono eccezioni nelle quali l’impossibilità di apportare modifiche ad uno smart contracts comporta più vantaggi che svantaggi. In particolare in occasioni nelle quali la parte che gestisce lo smart contract non ha fiducia, ma c’è modo di rimediare anche a questo per mezzo di governance da parte dei detentori dei token. Rendere queste cose completamente statiche continua a danneggiare l’ecosistema, serve un cambiamento.

E l’EIP867 non basta. Questo non è altro che curare un sintomo. Bisogna rendere i smart contracts sospendibili ed aggiornabili. In questo modo in caso viene notata una vulnerabilità, il contratto può venire “congelato” e aggiornato risolvendo il problema. EOS intende implementare proprio questo genere di sistema, è il momento Ethereum faccia lo stesso?