150 milions de dòlars a la xarxa Ethereum: com protegir-se

La complexitat és l’enemic de la seguretat

Parity és una implementació d’Ethereum escrita a Rust liderada pel talentós cofundador d’Ethereum, Gavin Wood. La implementació proporciona una interfície fàcil d'utilitzar per crear carteres multi-sig. El contracte multi-sig que sustenta aquesta funcionalitat va tenir un defecte de seguretat el 19 de juliol de 2017 que va provocar una pèrdua de 30 milions de dòlars. El 7 de novembre de 2017, es va trobar una segona vulnerabilitat al contracte de cartera que va resultar en una congelació de 150 milions de dòlars a Ether. Tot i que Ethereum no ofereix una solució fàcil per a carteres d’alta seguretat, hi ha alguns passos que podeu fer per evitar la presa d’un atac d’aquest tipus.

L'informe d'errors enviat per

En un entorn de programari de producció tradicional, podem desplegar codi en una superfície pública com ara un lloc web. Què passa si el codi no té la funcionalitat que esperàvem? Potser ningú se n’adona, potser algunes persones es queixen, al final del dia podem actualitzar el codi i la molèstia menor s’ha solucionat. Al món d’Ethereum, el codi amb el qual tothom pot veure i jugar és per sempre. En un món ideal, només tu teniu accés a aquest codi; en el món de la cadena de blocs, tothom hi té accés. Això vol dir que en la majoria dels casos no es pot actualitzar un codi disponible a la xarxa Ethereum.

Una conversa amb l '

Quan posem 1 milió de dòlars en èter en un contracte intel·ligent i es constata que el contracte intel·ligent conté una vulnerabilitat, poden passar algunes coses. Pot passar desapercebut, pot ser notat per un pirata informàtic que decideix aprofitar-ho, o pot ser exposat pel titular del contracte i poden recuperar els diners. En aquest cas, va ser explotat per una persona que va afirmar estar "investigant" l'anterior paritat hack.

L'atacant

Com podem protegir-nos?

Principi KISS: fes-ho estúpid

La majoria dels contractes intel·ligents comporten llacunes de seguretat en intentar tenir en compte casos i optimitzacions. La primera vulnerabilitat paritària sorgeix de l’intent d’optimitzar la quantitat de gas consumit mentre s’executa. La vulnerabilitat de paritat actual sorgeix de l'addició de noves funcions de biblioteca no provades. Un contracte intel·ligent gestionable conté la funcionalitat mínima necessària per fer la feina. La introducció de codi per optimitzar una resolució prematura augmenta la complexitat del contracte i, per tant, redueix la seguretat.

Proves d’unitat

En el desenvolupament general de programari, així com en el desenvolupament de contractes intel·ligents, pot ser útil passar per alt les proves d’unitats adequades. Si el codi és irrevocable després d’arribar a la producció, es requereix un major nivell de cura. Com a norma general, el vostre contracte intel·ligent hauria de contenir proves unitàries adequades per comprovar la funcionalitat del vostre contracte intel·ligent i les caixes de cantonada.

Auditories intel·ligents de contractes

Tots els contractes intel·ligents que s’envien a la producció han de ser sotmesos a una revisió de seguretat. Un bon revisor de seguretat de contractes intel·ligents té experiència en la creació de contractes intel·ligents al camp, té una gran quantitat de projectes a GitHub i comparteix una llista de comprovació de les vulnerabilitats de seguretat més comunes que busquen. Assegureu-vos que l’auditor pugui mantenir converses sobre els diferents vectors d’atac associats al vostre contracte intel·ligent. Potser no sembla un enfocament formal, però la indústria és encara molt jove i actualment treballa d’aquesta manera.

Seguir aquestes directrius pot ajudar a reduir el risc i la por associats amb l’enviament de contractes intel·ligents a la xarxa principal d’Ethereum.

Provar, supervisar, desplegar.