Cómo prevenir ataques en los contratos inteligentes

0

Los contratos inteligentes se encuentran entre las grandes promesas de la tecnología blockchain. Sin embargo, en la actualidad, su aplicación continúa restringida al ámbito digital y su estructura aún tiene múltiples vacíos.

De hecho, un estudio publicado en marzo de 2018 identificó vulnerabilidades en 34.200 contratos inteligentes de una muestra de un millón, luego de interactuar con ellos en múltiples maneras. Ilya Sergey, una de los coautores de éste análisis, cree que hay más vulnerabilidades por descubrir y detallar en futuros trabajos acádemicos.

Términos y condiciones autoevaluables y autoejecutables

Estos innovadores contratos no requieren de intermediarios para su ejecución, puesto que responden a condiciones determinadas en su código. Su concepción sugiere que no es necesario confiar en los involucrados, sino que los términos o sanciones del contrato se aplican sin intermediarios de acuerdo a las circunstancias definidas. Asimismo, ninguna parte puede retractarse.

Con las innumerables arbitrariedades legales y faltas de cumplimiento de pago en el mundo actual, los contratos inteligentes —idea concebida en 1995 por Nick Szabo— parecen ser una alternativa efectiva.

Mira también: ¿Cómo funcionan los contratos inteligentes de Ethereum?

No obstante, varios expertos en el ecosistema se han sumado al debate sobre los contratos inteligentes desde puntos de vista legales hasta asuntos de programación, sacando a la luz algunas de sus falencias. Por ejemplo, el editor de Blockchain Tech Talk, Jimmy Song, ha descrito a estas herramientas digitales como contratos “bastante tontos”.

Sin ahondar más en qué consisten los contratos inteligentes en las cadenas de bloques, es preciso comprender que pueden regular cualquier tipo de transferencia de información entre dos o más partes. Los contratos se codifican sobre una cadena de bloques —Ethereum es la más utilizada para este fin por ofrecer facilidad en la programación de contratos— y están sujetos a errores humanos, como cualquier programa informático.

El error humano y la pérdida de cuentas millonarias

He ahí uno de los principales problemas en torno a los contratos inteligentes: no garantizan absoluta seguridad en contra de ataques y se pueden perder grandes sumas de dinero por fallos en el código que permiten intromisiones externas —como ya ocurrió con The DAO en 2016 con alrededor de US$ 50 millones y Parity en 2017 con más de US$ 130 millones—.

Mira también: Las 5 criptoestafas más grandes (hasta el momento)

Además, mientras la cantidad de dinero que esté relacionada con los contratos inteligentes aumente, mayor será el interés de los piratas informáticos por encontrar los errores y desviar esos fondos a sus cuentas.

Para evitar esas falencias, se sugiere que los desarrolladores utilizen estándares de facto de código abierto y aceptados por la comunidad —como los de Open Zeppelin—, referirse a los patrones recomendados y lineamientos de buenas prácticas —como los de Opensys—, y contratar auditoría de un proveedor acreditado antes de poner en funcionamiento a los contratos inteligentes.

Lo más importante, ante todo, es tomar las debidas precauciones para evitar que una vez en funcionamiento se evidencien los fallos de los contratos y trasciendan a graves consecuencias financieras. En un siguiente artículo, profundizaremos sobre los inconvenientes más comunes en la programación de contratos inteligentes que les hacen vulnerables a ataques y cómo evitarlos.

Soluciones para las vulnerabilidades de contratos en Ethereum

Generalmente, el mercado incentiva a innovar y crear soluciones ante cualquier necesidad o problema. Los contratos inteligentes no son la excepción, ya que se han creado herramientas útiles para evaluar la integridad y precisión de los códigos de éstos. 

A continuación mencionaremos cuatro herramientas de seguridad para contratos inteligentes de Ethereum y sus funciones:

SmartCheck

Es una herramienta web que verifica automáticamente vulnerabilidades y errores de codificación, subraya la línea del código con problema, explica cuál es la vulnerabilidad y ofrece una posible solución. SmartCheck identifica desde vulnerabilidades de bajo riesgo, como violación a la guía de estilo y funciones redundantes, hasta las de alto riesgo, como bloqueo de dinero, código reentrante, dependencia en timestamp y condiciones de carrera.

En noviembre de 2017, salió una versión beta de esta herramienta que sólamente funciona con Solidity y no menciona que metodología específica utiliza para hallar los fallos de seguridad en los contratos inteligentes. SmartCheck fue desarrollada por SmartDec, una compañía dedicada al análisis de aplicaciones, desarrollo de software y a la auditoría de seguridad en el código de los contratos inteligentes.

Oyente

Es la herramienta más popular para este fin entre la comunidad de Ethereum. Oyente realiza ejecuciones piloto o simbólicas de los contratos inteligentes para encontrar vulnerabilidades, como código reentrante, dependencia en orden de transacciones, dependencia en timestamp, excepciones descuidadas y más.

Oyente funciona con Solidity y código Bytecode. Fue creada por Luu et al. y lanzada durante una conferencia relacionada a asuntos de seguridad, Ethereum Devcon.

Remix

Es un entorno de desarrollo integrado web que permite construir contratos inteligentes y ejecutarlos. Además, integra un sistema evaluador y depurador para reducir errores de código y potenciales vulnerabilidades, como el uso de tx.origin, uso de blockhash, costosos patrones de gas, condiciones de carrera y más.

Remix soporta solamente Solidity y funciona con base en métodos de verificación formal: verificación deductiva, prueba de algoritmos, etc.

Securify

Securify se describe en su sitio web como la primera herramienta de análisis que ofrece automatización en la verificación de contratos inteligentes, garantía en el hallazgo de vulnerabilidades, y extensibilidad en el descubrimiento de nuevos tipos de vulnerabilidades. Utiliza métodos de verificación formal y controles de análisis estático.

Algunos de los problemas que puede identificar son: reordenamiento de transacciones, condiciones de carrera, patrones de código inseguros, flujos de ether inesperados y código reentrante. Securify analiza contratos inteligentes en código Solidity y Bytecode, así como por medio de la dirección del contrato.

Mira también: Incentivai: simulación de cómo los hackers atacan blockchains

Las características fundamentales de las cadenas de bloques nos ofrecen oportunidades únicas en distintos ámbitos, incluidos los acuerdos financieros de cualquier tipo. No obstante, como cualquier tecnología innovadora, requiere de procesos de prueba y error para ir afinando su funcionamiento y aplicación en la vida real.

Como parte de este proceso, te invitamos a seguir informándote sobre este ecosistema y las distintas alternativas del mercado. También, comparte con nosotros qué otras herramientas de análisis de seguridad para contratos inteligentes conoces y cuáles son sus fortalezas. 

¿Te gustó el artículo? ¡Puedes apoyar a Max Vega en Patreon!

Deje un Comentario

Su correo electrónico no será publicado.