Introduzione
Un’organizzazione che intende intraprendere un progetto nell’ambito crypto si trova spesso di fronte a un mondo nuovo con tecnologie mai utilizzate direttamente in precedenza e potrebbe sottovalutare aspetti specifici che sono propri dei progetti in questo ambito. A livello progettuale va considerata la necessità di un doppio audit: non solo, come nei progetti tradizionali, di un audit dell’organizzazione, ma anche del software che viene poi messo sulla blockchain. Il motivo principale è che un software non sicuro, con bug ed errori nel codice, potrebbe portare alla vulnerabilità e quindi a eventuali attacchi di hacker che potrebbero fare danni molto importanti, dato il fatto che queste soluzioni di norma gestiscono dei beni con valori economici significativi. La dimostrazione di questo rischio la si è già osservata in vari episodi di hacking avvenuti negli ultimi anni.
Alcuni esempi di hack
– Un esempio eclatante è avvenuto recentemente, in agosto 2021: il sito Blockchain Poly Network ha comunicato che degli hacker avevano sfruttato una vulnerabilità nel suo sistema e sottratto migliaia di token digitali per un valore di 600 milioni di dollari. Poly Network ha poi condotto un’indagine tecnica scoprendo che l’hacker aveva sfruttato una vulnerabilità nelle chiamate tra smart contract.
– Nel 2017, una vulnerabilità in uno smart contract del Parity Multisig Wallet versione 1.5+, ha permesso ad un hacker di rubare oltre 30 milioni di dollari.
– Un altro caso importante fu l’hack del 2016 di Ethereum DAO. Lo smart contract “Distributed Autonomous Organization” (DAO) aveva un bug, e gli hacker lo sfruttarono per sottrarre Ether (ETH) per un valore di 70 milioni di dollari.
Cosa è uno smart contract
Gli smart contract sono programmi specializzati memorizzati su una blockchain e tipicamente utilizzati per automatizzare l’esecuzione di un accordo in modo che tutte le controparti possano essere certe del risultato senza la necessità di fidarsi l’uno dell’altro o di eventuali intermediari. Uno smart contract garantisce che la sua esecuzione corrisponderà esattamente alla logica che è stata scritta in esso. Dopo l’esecuzione di tale logica predeterminata, lo stato finale sulla rete rimarrà immutabile.
La blockchain di Ethereum è la piattaforma più utilizzata per l’implementazione di smart contract. Essendo programmabile, la piattaforma permette ai suoi utenti di implementare processi di varia complessità. Il codice di questi contratti è memorizzato nella blockchain ed eseguito dalla Ethereum Virtual Machine (EVM) – il core di questa piattaforma blockchain.
Vulnerabilità
Purtroppo, però, la corretta esecuzione del codice di uno smart contract non può garantire la sua completa sicurezza. Infatti, analisi fatte sugli smart contract esistenti hanno mostrato che una parte significativa di essi è effettivamente vulnerabile.
Ci sono una serie di vulnerabilità note relative agli smart contracts e sono particolarmente critiche perchè:
- la maggior parte degli smart contract ha a che fare con asset finanziari e quindi possono gestire valori considerevoli
- non è possibile modificare gli smart contract dopo averli pubblicati
- cambiamenti nello stato della blockchain generati da transazioni di contratti difettosi o fraudolenti non possono essere annullati a causa della natura immutabile della blockchain.
Scrivere uno smart contract completamente sicuro è complesso. Inoltre, i contratti sviluppati richiedono una verifica approfondita prima di essere pubblicati sulla rete. Gli esempi di attacco presentati in questo articolo confermano che la ragione comune della vulnerabilità degli smart contract sono le piattaforme blockchain programmabili che non sono ancora familiari a tutti gli sviluppatori. I progetti di sviluppo in ambito blockchain sono di fatto progetti di sviluppo software, quindi si devono applicare le metodologie per garantire la qualità del software fra cui robusti processi di verifica e validazione.
Audit
In particolare, nel caso di queste tipologie di progetti è anche necessario condurre degli audit esterni per validare la soluzione ed identificare le eventuali vulnerabilità presenti prima che vengano scoperte e sfruttate da professionisti dell’hacking. Questi tipi di audit si basano sul fatto che le tipiche vulnerabilità rientrano in certe categorie note e che quindi possono essere verificate da esperti della piattaforma in modo strutturato e sistematico, eventualmente avvalendosi di strumenti software appositi.
Si procede con uno studio accurato e dettagliato del codice degli smart contract, del design e dell’interazione con i componenti di terze parti per identificare le vulnerabilità dell’implementazione e le falle nella logica di business. In modo analogo, si procede ad ispezionare manualmente il codice sorgente dell’applicazione per identificare i punti deboli a livello di sicurezza, mostrare il loro impatto e fornire consigli per migliorare la sicurezza del prodotto.
Conclusioni
Un imprenditore o un manager che pianifica il lancio di un progetto blockchain, dovrebbe includere un audit del codice blockchain nel suo piano di progetto in modo da limitare il più possibile il rischio che il codice errato o vulnerabile venga pubblicato sulla blockchain. Questo va ad aggiungersi ad un audit aziendale finalizzato.