Seguridad de contratos inteligentes basados en Blockchain II – Vulnerabilidades y riesgos

En la parte anterior de esta serie sobre la seguridad de blockchain vimos los riesgos asociados con la implementación autónoma y la ejecución de contratos inteligentes en un blockchain público. También presentamos algunos ejemplos de alto perfil de ataques a contratos inteligentes que han causado la pérdida de grandes sumas de dinero y han cambiado la forma en que vemos las interacciones comerciales en la cadena de bloques.

En este episodio, repasaremos algunos problemas conocidos y vulnerabilidades.

Fuga de clave privada

El uso de claves privadas no seguras es realmente un error del usuario, en lugar de una vulnerabilidad. Sin embargo, lo mencionamos, como sucede sorprendentemente a menudo, y ciertos actores se han especializado en robar fondos de direcciones inseguras.

Lo que generalmente ocurre es que las direcciones de desarrollo (como las utilizadas por las herramientas de prueba, como Ganache/TestPRC) se utilizan en producción. Estas son direcciones generadas a partir de claves privadas conocidas públicamente. Algunos usuarios incluso han importado estas claves sin saberlo en el software de cartera virtual, al usar las palabras de semilla originales usadas en la generación de la clave privada.

Los atacantes están monitorizando estas direcciones y cualquier cantidad transferida a dicha dirección en la red principal de Ethereum tiende a desaparecer inmediatamente (dentro de 2 bloques).
[Read more…]

Seguridad de contratos inteligentes basados en Blockchain I

Recientemente, la tecnología blockchain ha sido promovida como un elemento de cambio para muchas industrias. La tecnología de contabilidad distribuida que surgió de Bitcoin tiene aplicaciones prometedoras más allá de las monedas digitales.

Uno de los casos de uso más prometedores de la tecnología blockchain es la elaboración de contratos inteligentes.

Los contratos inteligentes son contratos autoejecutables, en los que los términos se especifican en el código. Básicamente, esto significa implementar contratos legales en código de ordenador, que los ejecuta automáticamente.

Si bien el concepto existe desde hace tiempo, al menos desde que Nick Szabo escribió el concepto en 1996, no fue hasta la llegada del blockchain de Ethereum con la capacitad de expresar cualquier computación (“Turing complete”), que el uso del contrato inteligente se hizo común.

Los contratos Ethereum existen en direcciones de contrato y pueden invocarse mediante llamadas de transacción.

Ejecutar contratos escritos en código y almacenados en un blockchain público inmutable crea ciertos riesgos y problemas, que discutiremos de forma general en esta publicación. En una próxima segunda parte, veremos ejemplos más específicos de vulnerabilidades de seguridad de contratos inteligentes. [Read more…]