Pues ya ha pasado un poco de tiempo desde que se produjo el ataque de The DAO y el fork de Ethereum que ha dividido a la comunidad cripto, ahora con la cabeza un poco más fría vamos a ver que es lo que realmente ha pasado. El hackeo de The DAO ha sido un acontecimiento trascendental en la historia de la tecnología blockchain y las criptomonedas, por lo que entender en detalle los eventos que rodearon este incidente, sus causas, consecuencias y el impacto duradero que tuvo en el ecosistema de criptomonedas y contratos inteligentes, resulta muy útil para entender el estado en el que nos encontramos.

Introducción

El 17 de junio de 2016, el mundo de las criptomonedas fue sacudido por un evento sin precedentes: el hackeo de The DAO. Este proyecto, lanzado apenas un mes antes, se había convertido rápidamente en uno de los contratos inteligentes más grandes y populares en la blockchain de Ethereum. Sin embargo, un fallo en su código permitió a un atacante drenar millones de dólares en ether, desencadenando una serie de eventos que sacudirían los cimientos de Ethereum y la comunidad de criptomonedas en su conjunto.

The DAO, abreviatura de Decentralized Autonomous Organization (Organización Autónoma Descentralizada), fue concebido como un fondo de inversión colectiva basado en Ethereum y operado completamente mediante contratos inteligentes. Fue propuesto por un grupo de desarrolladores liderado por Slock.it, una startup de Internet de las cosas (IoT). La idea detrás de The DAO era crear una estructura descentralizada en la que los participantes pudieran votar sobre qué proyectos financiar utilizando ether, la criptomoneda nativa de Ethereum.

The DAO funcionaba mediante contratos inteligentes, programas informáticos autoejecutables alojados en la blockchain de Ethereum. Estos contratos inteligentes definían las reglas y operaciones de la organización, incluyendo la participación de los inversores, la votación sobre propuestas de financiación y la distribución de dividendos. Cada inversor en The DAO recibía tokens DAO a cambio de su inversión en ether, y estos tokens le otorgaban derechos de voto sobre las decisiones de inversión.

El Hackeo

El 17 de junio de 2016, un atacante desconocido identificó una vulnerabilidad en el código de The DAO y explotó esta falla para transferir una gran cantidad de ether fuera del contrato inteligente de The DAO. El ataque aprovechó una característica del contrato inteligente conocida como «llamada recursiva» que permitía al atacante repetir ciertas transacciones para drenar fondos de forma continua.

El ataque fue descubierto rápidamente por la comunidad de Ethereum, que quedó desconcertada y horrorizada por la magnitud del robo. En total, se estima que el atacante robó aproximadamente el 14% de todo el ether en circulación en ese momento, lo que ascendía a unos 50 millones de dólares en valor. Y como decía se basó en una vulnerabilidad en el código del contrato inteligente que permitía una «llamada recursiva». Para comprender mejor esto, primero necesitamos entender cómo funcionan los contratos inteligentes en Ethereum.

Los contratos inteligentes en Ethereum son programas informáticos que se ejecutan en la blockchain y que pueden interactuar con otros contratos o usuarios. Estos contratos se escriben en un lenguaje de programación llamado Solidity y se implementan como una serie de funciones que definen el comportamiento del contrato.

En el caso de The DAO, se implementó un mecanismo que permitía a los inversores realizar retiros de fondos de acuerdo con ciertas reglas y condiciones. Sin embargo, debido a un error en la implementación del contrato, el código permitía que un atacante ejecutara una función de retiro de fondos y luego volviera a llamar a la misma función antes de que se completara la primera ejecución.

Este comportamiento de llamada recursiva permitía al atacante repetir el proceso de retiro de fondos varias veces antes de que el contrato pudiera actualizar su estado interno para reflejar la deducción de fondos. Como resultado, el atacante pudo drenar fondos del contrato de The DAO de manera continua hasta que se agotaron los fondos disponibles.

La vulnerabilidad específica se originó en la implementación del método de retiro de fondos en el contrato inteligente de The DAO. El código para este método no incluía un mecanismo de bloqueo que evitara que se llamara a sí mismo mientras estaba en ejecución. Esto permitió al atacante llamar repetidamente al método de retiro de fondos antes de que el contrato pudiera actualizar su estado interno para reflejar la deducción de fondos, lo que resultó en la pérdida masiva de ether.

El ataque explotó esta debilidad mediante el uso de un contrato inteligente especialmente diseñado que iniciaba un proceso de llamada recursiva para el método de retiro de fondos. Al hacerlo, el atacante pudo drenar fondos del contrato de The DAO a una dirección controlada por él mismo

La vulnerabilidad radicaba en la falta de un mecanismo de control adecuado para evitar llamadas recursivas dentro del contrato inteligente. El código del contrato no incluía medidas para prevenir que una función se llamara a sí misma mientras aún estaba en ejecución, lo que permitió al atacante explotar esta debilidad y drenar fondos de manera indiscriminada.

Esta explicación técnica del error subyacente en el contrato inteligente de The DAO destaca la importancia de una programación sólida y segura en el desarrollo de contratos inteligentes en blockchain. La falta de una auditoría exhaustiva y pruebas rigurosas del código puede llevar a vulnerabilidades graves que pueden ser explotadas por actores malintencionados.

Un Pequeño Ejemplo Práctico

El siguiente código está escrito en Solidity 0.4.x, una versión que fue comúnmente utilizada en ese momento y que ejemplifica un poco la idea detrás del error del contrato  de The DAO.

En este contrato simplificado de The DAO, la función withdraw permite a los usuarios retirar una cantidad específica de fondos de su cuenta en The DAO. Sin embargo, hay una vulnerabilidad crítica en este código que permite llamadas recursivas.

El problema radica en la línea if (!msg.sender.call.value(amount)()), donde se realiza la transferencia de ether al usuario. Si la llamada a msg.sender.call.value(amount)() provoca una excepción (por ejemplo, si el usuario tiene un contrato que consume demasiado gas), el contrato The DAO revertirá la transacción, pero antes de hacerlo, no actualizará el saldo del usuario. Esto significa que el saldo del usuario seguirá siendo el mismo, lo que permite al usuario llamar nuevamente a la función withdraw y repetir el proceso de retiro antes de que se actualice el balance.

Esto crea un bucle de llamadas recursivas en el que un usuario malicioso puede drenar los fondos del contrato The DAO repetidamente, agotando así los fondos disponibles.

La Reacción de la Comunidad

El hackeo de The DAO desencadenó un debate acalorado dentro de la comunidad de Ethereum sobre cómo responder al incidente. Algunos miembros abogaron por una «bifurcación dura» de Ethereum, una actualización de la blockchain que revertiría las transacciones relacionadas con el hackeo y devolvería los fondos a sus propietarios originales. Otros argumentaron que una intervención de este tipo socavaría los principios fundamentales de la inmutabilidad y la descentralización de Ethereum.

La Bifurcación Dura y Ethereum Classic

Finalmente, la comunidad de Ethereum votó a favor de una bifurcación dura para revertir las transacciones relacionadas con el hackeo de The DAO. Esta bifurcación resultó en la creación de dos cadenas de bloques separadas: Ethereum, que adoptó la bifurcación para revertir el hackeo, y Ethereum Classic, que mantuvo la blockchain original sin cambios por razones de principios.

Esta decisión dividió profundamente a la comunidad de Ethereum y dio lugar a disputas prolongadas sobre cuál de las dos cadenas representaba la «versión auténtica» de Ethereum. Aunque Ethereum Classic sigue existiendo como una cadena de bloques independiente, Ethereum ha seguido siendo la cadena dominante y ha continuado su desarrollo y crecimiento.

Lecciones Aprendidas

El hackeo de The DAO sirvió como un recordatorio contundente de los riesgos asociados con la programación de contratos inteligentes y la dependencia excesiva de la tecnología emergente. Reveló la importancia de una auditoría exhaustiva del código, así como la necesidad de considerar cuidadosamente las implicaciones de seguridad de las implementaciones descentralizadas.

Además, el incidente destacó la importancia de la gobernanza comunitaria en el desarrollo y la evolución de las plataformas blockchain. La bifurcación dura de Ethereum demostró que, en última instancia, son las comunidades de usuarios quienes determinan el rumbo y la viabilidad de una red blockchain.

Conclusiones

El hackeo de The DAO fue un punto de inflexión en la historia de Ethereum y las criptomonedas en general. No solo puso de manifiesto los desafíos técnicos y de seguridad asociados con los contratos inteligentes, sino que también planteó preguntas más amplias sobre la gobernanza y la toma de decisiones dentro de las comunidades descentralizadas.

A pesar de las controversias y divisiones que provocó, el hackeo de The DAO también condujo a una mayor conciencia y madurez dentro de la comunidad de Ethereum. Desde entonces, se han implementado medidas más rigurosas de seguridad y auditoría, y se ha fortalecido el enfoque en la gobernanza descentralizada y la participación de la comunidad.

En última instancia, el hackeo de The DAO fue un recordatorio de que la innovación tecnológica conlleva riesgos, pero también ofrece oportunidades para el aprendizaje y el crecimiento. A medida que el ecosistema de criptomonedas continúa evolucionando, es imperativo aprender de los errores del pasado para construir un futuro más robusto y resiliente para estas tecnologías transformadoras.

Por admin

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *