Una scansione di quasi un milione di smart contracts sulla blockchain di Ethereum ha identificato 34.200 contratti vulnerabili. Questi contratti possono essere attaccati per rubare ETH, e persino congelare o cancellare beni sui quali gli aggressori non dovrebbero avere alcuna influenza.
In questo articolo verranno forniti ulteriori dettagli a riguardo dell’importanza di ciò e delle probabili conseguenze di quanto scoperto per mezzo di questa ricerca.
Cosa sono i smart contracts?
Prima di fornire i vari dettagli meglio assicurarsi che tutti i lettori sappiano esattamente di cosa stiamo parlando.
I smart contracts sono un insieme di operazioni scritte in codice (programmate) che vengono eseguite automaticamente quando qualcuno invia un input al contratto. Ecco un esempio di base di come può apparire un contratto intelligente:
Si consideri uno smart contract Ethereum che viene utilizzato per mettere all’asta un oggetto digitale. Il contratto ha una variabile che conta il numero di offerte fatte sull’oggetto in questione. Il proprietario potrebbe voler prolungare il tempo a disposizione per le offerte per l’oggetto. Così come potrebbe impostare una condizione contrattuale per via della quale prima di consentire la vendita dell’oggetto al miglior offerente dev’essere superato un determinato numero di offerte. Una volta soddisfatta questa condizione, lo smart contract avvia automaticamente una transazione ETH con il vincitore dell’asta e rilascia un ordine di vendita per l’oggetto.
Gli smart contract sono uno dei motivi (secondo molti il motivo principale) per cui la blockchain Ethereum e la sua criptovaluta, ETH, sono così popolari. Gli smart contract sono ciò che alimenta la maggior parte delle odierne ICO. Ma non solo, infatti questi gestiscono anche diversi altri servizi e strumenti basati su Ethereum.
Il problema
Gli smart contract sono proprio come qualsiasi altro pezzo di codice. In base a quanto sono programmati bene possono contenere vulnerabilità e bug che possono essere sfruttati. Un hacker ha sfruttato uno di questi bug nell’estate del 2016 per rubare oltre 50 milioni di dollari di Ether all’organizzazione TheDAO. L’intervento da parte dell’Ethereum Foundation per consentire il recupero dei fondi è stato il motivo della hard fork di Ethereum Classic (ETC).
Questo bug ha spinto i ricercatori della National University of Singapore (NUS) ad iniziare a cercare bug in altri smart contracts. Nel 2016, i ricercatori hanno creato uno strumento chiamato Oyente. Lo strumento in questione serve ad eseguire scansioni di smart contract sulla blockchain di Ethereum alla ricerca di vulnerabilità. Inizialmente Oyente è stato utilizzato per analizzare solo 19.366 smart contracts, di questi 8.833 si sono rivelati vulnerabili.
Quella ricerca non ha ricevuto molta attenzione da parte dei media in quel momento. L’avvertimento da parte del team di ricerca riguardo al modo in cui la maggior parte dei contratti intelligenti sono stati scritti è stato perlopiù ignorato.
Ma la situazione è cambiata
Il team di ricerca ha richiesto attenzione verso la scansione dei smart contracts sulla blockchain di Ethereum vulnerabili lo scorso autunno. Momento in cui, ancora una volta, qualcuno ha sfruttato una vulnerabilità contenuta in uno smart contract per boccare i fondi degli utenti Ethereum.
Questo incidente è accaduto lo scorso novembre quando un utente di GitHub chiamato Devops199, intenzionalmente o meno, ha bloccato oltre $285 milioni di dollari in ETH all’interno dei portafogli di Parity per mezzo di un bug che ha scoperto.
Oltre a portare a proposte controverse per modifiche del protocollo della blockchain Ethereum, questo incidente ha spinto i ricercatori a creare un nuovo strumento per l analisi dei contratti intelligenti. Lo strumento, chiamato Maian, è in grado di eseguire una scansione più approfonditaa, notare più tipi di vulnerabilità ed è anche specializzato nella scansione su larga scala.
Il team di cinque persone ha utilizzato Maian per analizzare 970.898 smart contracts Ethereum. Seguono i risultati, elencati nella tabella sottostante:
Prodigal – Smart contracts che, quando attaccati, inviano fondi per la conservazione sicura all’indirizzo Ethereum sbagliato (dell’attaccante o meno).
Suicidal – Smart contracts che possono essere terminati da chi non dovrebbe poterlo fare e non solo dal proprietario (il bug di Carità Devops199 rientra in questa categoria).
Greedy – Smart contracts che possono essere bloccati da qualcun altro portando alla congelazione dei fondi per sempre (Parity Devops199 bug rientra anche in questa categoria).
I risultati
I risultati mostrano che il 3,5% dei contratti sottoposti a scansione sono affetti da una importante vulnerabilità che può consentire agli aggressori a rubare fondi o semplicemente a congelare l’ETH degli utenti.
Proprio come nel 2016, il team di ricerca sta ora mettendo in guardia gli utenti sui pericoli del riporre un po’ troppa fiducia nei smart contracts e sollecita gli utenti a utilizzare software di analisi dei smart contracts per rilevare i difetti prima di inviare i loro fondi ad un contratto.
A differenza di quanto avvenuto nel 2016, quando il codice sorgente di Oyente è stato rilasciato, i ricercatori non hanno ancora pubblicato il codice sorgente di Maian. Questo per via del timore che i blackhat hacker potrebbero utilizzare Maian per cercare contratti vulnerabili e rubare o bloccare i fondi ETH. Tuttavia, se siete alla ricerca di uno strumento per la scansione di smart contract Ethereum, c’è anche Mythril, estraneo al lavoro del team NUS su Maian e Oyente. Maggiori informazioni sul lavoro del team NUS sono disponibili in questo documento di ricerca (in lingua inglese).
Conclusione
Il settore delle criptovalute è un campo di battaglia nuovo e incredibilmente attivo dal punto di vista della sicurezza informatica. A dimostrarlo sono esempi come quello di BitGrail. Ad aumentare il senso di “Far West” di questo ambiente sono anche alcuni provvedimenti di certi exchange (ma questa non affatto è una critica). Soluzioni quali exchange decentralizzati, Plasma Cash e simili sono in arrivo.
Altro fenomeno preoccupante che sta dilagando è quello del cryptojacking per mezzo di script nel browser of virus, come quello recentemente respinto dalla Microsoft.
Ma è troppo ottimistico credere che la sicurezza diverrà mai totale, quindi non resta che informarsi per evitare di diventare vulnerabili.