$ 150 millones bloqueados en la red Ethereum: cómo protegerse

La complejidad es el enemigo de la seguridad

Parity es una implementación de Ethereum escrita en Rust, encabezada por el muy talentoso cofundador de Ethereum, Gavin Wood. La implementación proporciona una interfaz gráfica de usuario fácil de usar para crear billeteras multi-sig. Se descubrió que el contrato de múltiples firmas que sustenta esta funcionalidad tiene una vulnerabilidad el 19 de julio de 2017 que resultó en una pérdida de $ 30 millones. El 7 de noviembre de 2017 se encontró una segunda vulnerabilidad en el contrato de billetera que resultó en un bloqueo de $ 150 millones en Ether. Si bien Ethereum no ofrece una solución simple para billeteras de alta seguridad, hay algunos pasos que puede seguir para evitar ser víctima de tal ataque.

El informe de error presentado por el

En un entorno de software de producción tradicional, podemos implementar código en una interfaz pública como un sitio web. Si el código no parece tener la funcionalidad que esperamos, ¿qué sucede? Tal vez nadie se da cuenta, tal vez algunas personas se quejan, al final del día podemos actualizar el código y se resuelve la molestia menor. En el mundo de Ethereum, una vez que implementamos un código, está ahí para siempre, para que todos lo vean y jueguen. En un mundo ideal, solo usted tiene acceso a este código, en el mundo de blockchain todos tienen acceso a él. Esto significa que si se implementa un fragmento de código en la red Ethereum, en la mayoría de los casos no es posible actualizarlo.

Una conversación con el

Si ponemos $ 1 millón en Ether en un contrato inteligente y se descubre que el contrato inteligente contiene una vulnerabilidad, pueden ocurrir algunas cosas. Puede pasar desapercibido, puede ser detectado por un pirata informático que decida explotarlo, o el propietario del contrato lo descubrirá y podrá recuperar los fondos. En este caso, fue explotado por un individuo que afirmaba estar "investigando" el truco anterior de Parity.

El

Entonces, ¿cómo podemos protegernos?

Principio de KISS - Mantenlo simple estúpido

La mayoría de los contratos inteligentes introducen vulnerabilidades al intentar dar cuenta de casos de esquina y optimizaciones. La primera vulnerabilidad de paridad se debió a un intento de optimizar la cantidad de gas utilizado durante la ejecución. La vulnerabilidad actual de Parity se debió a la inclusión de una nueva funcionalidad de biblioteca no probada. Un contrato inteligente manejable contendrá la cantidad mínima de funcionalidad necesaria para completar la tarea. La introducción de código para optimizar una solución prematura aumenta la complejidad del contrato, lo que reduce la seguridad.

Pruebas unitarias

En el desarrollo de software común, así como en el desarrollo de contratos inteligentes, puede ser conveniente pasar por alto las pruebas unitarias adecuadas. Cuando el código no es revocable una vez que alcanza la producción, se requiere un mayor nivel de diligencia. Como regla general, su contrato inteligente debe contener pruebas unitarias adecuadas para verificar la funcionalidad de su contrato inteligente, así como los casos de esquina.

Auditorías inteligentes de contratos

Cualquier contrato inteligente que se envíe a producción debe someterse a una auditoría de seguridad. Un buen auditor de seguridad de contratos inteligentes tendrá experiencia en la construcción de contratos inteligentes en el mundo real, una gran cantidad de proyectos en GitHub, y compartirá una lista de verificación de las vulnerabilidades comunes que buscan. Asegúrese de que el auditor pueda entablar una conversación sobre los diversos vectores de ataque asociados con su contrato inteligente. Esto puede no parecer un enfoque formal, sin embargo, la industria todavía es muy joven y así es como funciona en este momento.

Seguir estas pautas puede ayudar a reducir el riesgo y la ansiedad asociados con el envío de contratos inteligentes a Ethereum Mainnet.

Prueba, auditoría, implementación.