$ 150 milioni bloccati sulla rete Ethereum - Come proteggersi

La complessità è il nemico della sicurezza

Parity è un'implementazione di Ethereum scritta in Rust, guidata dal talentuoso cofondatore di Ethereum, Gavin Wood. L'implementazione fornisce una GUI facile da usare per la creazione di portafogli multi-sig. Il contratto multi-sig che sta alla base di questa funzionalità è risultato essere vulnerabile il 19 luglio 2017 che ha comportato una perdita di $ 30 milioni. Il 7 novembre 2017 è stata rilevata una seconda vulnerabilità nel contratto di portafoglio che ha comportato un blocco di $ 150 milioni in Ether. Sebbene Ethereum non offra una soluzione semplice per portafogli ad alta sicurezza, ci sono alcuni passaggi che puoi fare per evitare di cadere vittima di un simile attacco.

La segnalazione di bug presentata dall'attaccante

In un ambiente software di produzione tradizionale, siamo in grado di distribuire il codice su un'interfaccia pubblica come un sito Web. Se il codice non sembra avere la funzionalità che speriamo, cosa succede? Forse nessuno se ne accorge, forse alcune persone si lamentano, alla fine della giornata possiamo aggiornare il codice e il fastidio minore viene risolto. Nel mondo di Ethereum, una volta che abbiamo distribuito un pezzo di codice, è lì per sempre, perché tutti possano vederlo e giocarci. In un mondo ideale, solo tu hai accesso a questo codice, nel mondo della blockchain ognuno ha accesso ad esso. Ciò significa che se un pezzo di codice viene distribuito alla rete Ethereum, nella maggior parte dei casi non è possibile aggiornarlo.

Una conversazione con l'attaccante

Se inseriamo un milione di dollari in Ether in un contratto intelligente e si rileva che il contratto intelligente contiene una vulnerabilità, potrebbero verificarsi alcune cose. Potrebbe passare inosservato, potrebbe essere notato da un hacker che decide di sfruttarlo o verrà scoperto dal proprietario del contratto e sarà in grado di recuperare i fondi. In questo caso è stato sfruttato da un individuo che afferma di "ricercare" il precedente hack di Parity.

L '

Quindi come possiamo proteggerci?

Principio KISS: mantienilo stupido

La maggior parte dei contratti intelligenti introduce vulnerabilità tentando di tenere conto di casi angolari e ottimizzazioni. La prima vulnerabilità di Parity era dovuta al tentativo di ottimizzare la quantità di gas utilizzata durante l'esecuzione. L'attuale vulnerabilità di Parity era dovuta all'inclusione di nuove funzionalità di libreria non testate. Un contratto intelligente gestibile conterrà la quantità minima di funzionalità necessaria per completare l'attività. L'introduzione di codice per ottimizzare una soluzione prematura aumenta la complessità del contratto, riducendo così la sicurezza.

Test unitari

Nello sviluppo di software comuni e nello sviluppo di contratti intelligenti può essere conveniente trascurare adeguati test unitari. Quando il codice non è revocabile una volta raggiunto la produzione, è necessario un livello più elevato di diligenza. Come regola generale, il contratto intelligente dovrebbe contenere test unitari adeguati per verificare la funzionalità del contratto intelligente nonché i casi angolari.

Audit contrattuali intelligenti

Qualsiasi contratto intelligente inviato alla produzione dovrebbe essere sottoposto a un controllo di sicurezza. Un buon revisore della sicurezza dei contratti intelligenti avrà esperienza nella costruzione di contratti intelligenti nel mondo reale, una vasta gamma di progetti su GitHub e condividerà un elenco di controllo delle vulnerabilità comuni che cercano. Assicurati che il revisore possa iniziare una conversazione sui vari vettori di attacco associati al tuo contratto intelligente. Questo potrebbe non sembrare un approccio formale, tuttavia l'industria è ancora molto giovane ed è così che funziona al momento.

Seguire queste linee guida può aiutare a ridurre il rischio e l'ansia associati all'invio di contratti intelligenti su Ethereum Mainnet.

Test, audit, distribuzione.