{"id":75,"date":"2016-09-09T16:13:54","date_gmt":"2016-09-09T16:13:54","guid":{"rendered":"https:\/\/40933013.servicio-online.net\/?p=75"},"modified":"2024-05-21T16:30:10","modified_gmt":"2024-05-21T16:30:10","slug":"the-dao-entendiendo-el-ataque","status":"publish","type":"post","link":"https:\/\/santiagomarquezsolis.com\/index.php\/2016\/09\/09\/the-dao-entendiendo-el-ataque\/","title":{"rendered":"The DAO. Entendiendo el Ataque ;-)"},"content":{"rendered":"<p>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\u00e1s fr\u00eda 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\u00eda 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 \u00fatil para entender el estado en el que nos encontramos.<\/p>\n<h3>Introducci\u00f3n<\/h3>\n<p>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\u00eda convertido r\u00e1pidamente en uno de los contratos inteligentes m\u00e1s grandes y populares en la blockchain de Ethereum. Sin embargo, un fallo en su c\u00f3digo permiti\u00f3 a un atacante drenar millones de d\u00f3lares en ether, desencadenando una serie de eventos que sacudir\u00edan los cimientos de Ethereum y la comunidad de criptomonedas en su conjunto.<\/p>\n<p>The DAO, abreviatura de Decentralized Autonomous Organization (Organizaci\u00f3n Aut\u00f3noma Descentralizada), fue concebido como un fondo de inversi\u00f3n 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\u00e1s de The DAO era crear una estructura descentralizada en la que los participantes pudieran votar sobre qu\u00e9 proyectos financiar utilizando ether, la criptomoneda nativa de Ethereum.<\/p>\n<p>The DAO funcionaba mediante contratos inteligentes, programas inform\u00e1ticos autoejecutables alojados en la blockchain de Ethereum. Estos contratos inteligentes defin\u00edan las reglas y operaciones de la organizaci\u00f3n, incluyendo la participaci\u00f3n de los inversores, la votaci\u00f3n sobre propuestas de financiaci\u00f3n y la distribuci\u00f3n de dividendos. Cada inversor en The DAO recib\u00eda tokens DAO a cambio de su inversi\u00f3n en ether, y estos tokens le otorgaban derechos de voto sobre las decisiones de inversi\u00f3n.<\/p>\n<h3>El Hackeo<\/h3>\n<p>El 17 de junio de 2016, un atacante desconocido identific\u00f3 una vulnerabilidad en el c\u00f3digo de The DAO y explot\u00f3 esta falla para transferir una gran cantidad de ether fuera del contrato inteligente de The DAO. El ataque aprovech\u00f3 una caracter\u00edstica del contrato inteligente conocida como \u00abllamada recursiva\u00bb que permit\u00eda al atacante repetir ciertas transacciones para drenar fondos de forma continua.<\/p>\n<p>El ataque fue descubierto r\u00e1pidamente por la comunidad de Ethereum, que qued\u00f3 desconcertada y horrorizada por la magnitud del robo. En total, se estima que el atacante rob\u00f3 aproximadamente el 14% de todo el ether en circulaci\u00f3n en ese momento, lo que ascend\u00eda a unos 50 millones de d\u00f3lares en valor. Y como dec\u00eda se bas\u00f3 en una vulnerabilidad en el c\u00f3digo del contrato inteligente que permit\u00eda una \u00abllamada recursiva\u00bb. Para comprender mejor esto, primero necesitamos entender c\u00f3mo funcionan los contratos inteligentes en Ethereum.<\/p>\n<p>Los contratos inteligentes en Ethereum son programas inform\u00e1ticos que se ejecutan en la blockchain y que pueden interactuar con otros contratos o usuarios. Estos contratos se escriben en un lenguaje de programaci\u00f3n llamado Solidity y se implementan como una serie de funciones que definen el comportamiento del contrato.<\/p>\n<p>En el caso de The DAO, se implement\u00f3 un mecanismo que permit\u00eda a los inversores realizar retiros de fondos de acuerdo con ciertas reglas y condiciones. Sin embargo, debido a un error en la implementaci\u00f3n del contrato, el c\u00f3digo permit\u00eda que un atacante ejecutara una funci\u00f3n de retiro de fondos y luego volviera a llamar a la misma funci\u00f3n antes de que se completara la primera ejecuci\u00f3n.<\/p>\n<p>Este comportamiento de llamada recursiva permit\u00eda 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\u00f3n de fondos. Como resultado, el atacante pudo drenar fondos del contrato de The DAO de manera continua hasta que se agotaron los fondos disponibles.<\/p>\n<p>La vulnerabilidad espec\u00edfica se origin\u00f3 en la implementaci\u00f3n del m\u00e9todo de retiro de fondos en el contrato inteligente de The DAO. El c\u00f3digo para este m\u00e9todo no inclu\u00eda un mecanismo de bloqueo que evitara que se llamara a s\u00ed mismo mientras estaba en ejecuci\u00f3n. Esto permiti\u00f3 al atacante llamar repetidamente al m\u00e9todo de retiro de fondos antes de que el contrato pudiera actualizar su estado interno para reflejar la deducci\u00f3n de fondos, lo que result\u00f3 en la p\u00e9rdida masiva de ether.<\/p>\n<p>El ataque explot\u00f3 esta debilidad mediante el uso de un contrato inteligente especialmente dise\u00f1ado que iniciaba un proceso de llamada recursiva para el m\u00e9todo de retiro de fondos. Al hacerlo, el atacante pudo drenar fondos del contrato de The DAO a una direcci\u00f3n controlada por \u00e9l mismo<\/p>\n<p>La vulnerabilidad radicaba en la falta de un mecanismo de control adecuado para evitar llamadas recursivas dentro del contrato inteligente. El c\u00f3digo del contrato no inclu\u00eda medidas para prevenir que una funci\u00f3n se llamara a s\u00ed misma mientras a\u00fan estaba en ejecuci\u00f3n, lo que permiti\u00f3 al atacante explotar esta debilidad y drenar fondos de manera indiscriminada.<\/p>\n<p>Esta explicaci\u00f3n t\u00e9cnica del error subyacente en el contrato inteligente de The DAO destaca la importancia de una programaci\u00f3n s\u00f3lida y segura en el desarrollo de contratos inteligentes en blockchain. La falta de una auditor\u00eda exhaustiva y pruebas rigurosas del c\u00f3digo puede llevar a vulnerabilidades graves que pueden ser explotadas por actores malintencionados.<\/p>\n<h3>Un Peque\u00f1o Ejemplo Pr\u00e1ctico<\/h3>\n<p>El siguiente c\u00f3digo est\u00e1 escrito en Solidity 0.4.x, una versi\u00f3n que fue com\u00fanmente utilizada en ese momento y que ejemplifica un poco la idea detr\u00e1s del error del contrato\u00a0 de The DAO.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-76 aligncenter\" src=\"https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2024\/05\/theDAO-300x185.png\" alt=\"\" width=\"533\" height=\"329\" srcset=\"https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2024\/05\/theDAO-300x185.png 300w, https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2024\/05\/theDAO-1024x633.png 1024w, https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2024\/05\/theDAO-768x474.png 768w, https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2024\/05\/theDAO.png 1062w\" sizes=\"auto, (max-width: 533px) 100vw, 533px\" \/><\/p>\n<p>En este contrato simplificado de The DAO, la funci\u00f3n <code>withdraw<\/code> permite a los usuarios retirar una cantidad espec\u00edfica de fondos de su cuenta en The DAO. Sin embargo, hay una vulnerabilidad cr\u00edtica en este c\u00f3digo que permite llamadas recursivas.<\/p>\n<p>El problema radica en la l\u00ednea <code>if (!msg.sender.call.value(amount)())<\/code>, donde se realiza la transferencia de ether al usuario. Si la llamada a <code>msg.sender.call.value(amount)()<\/code> provoca una excepci\u00f3n (por ejemplo, si el usuario tiene un contrato que consume demasiado gas), el contrato The DAO revertir\u00e1 la transacci\u00f3n, pero antes de hacerlo, no actualizar\u00e1 el saldo del usuario. Esto significa que el saldo del usuario seguir\u00e1 siendo el mismo, lo que permite al usuario llamar nuevamente a la funci\u00f3n <code>withdraw<\/code> y repetir el proceso de retiro antes de que se actualice el balance.<\/p>\n<p>Esto crea un bucle de llamadas recursivas en el que un usuario malicioso puede drenar los fondos del contrato The DAO repetidamente, agotando as\u00ed los fondos disponibles.<\/p>\n<h3>La Reacci\u00f3n de la Comunidad<\/h3>\n<p>El hackeo de The DAO desencaden\u00f3 un debate acalorado dentro de la comunidad de Ethereum sobre c\u00f3mo responder al incidente. Algunos miembros abogaron por una \u00abbifurcaci\u00f3n dura\u00bb de Ethereum, una actualizaci\u00f3n de la blockchain que revertir\u00eda las transacciones relacionadas con el hackeo y devolver\u00eda los fondos a sus propietarios originales. Otros argumentaron que una intervenci\u00f3n de este tipo socavar\u00eda los principios fundamentales de la inmutabilidad y la descentralizaci\u00f3n de Ethereum.<\/p>\n<h3>La Bifurcaci\u00f3n Dura y Ethereum Classic<\/h3>\n<p>Finalmente, la comunidad de Ethereum vot\u00f3 a favor de una bifurcaci\u00f3n dura para revertir las transacciones relacionadas con el hackeo de The DAO. Esta bifurcaci\u00f3n result\u00f3 en la creaci\u00f3n de dos cadenas de bloques separadas: Ethereum, que adopt\u00f3 la bifurcaci\u00f3n para revertir el hackeo, y Ethereum Classic, que mantuvo la blockchain original sin cambios por razones de principios.<\/p>\n<p>Esta decisi\u00f3n dividi\u00f3 profundamente a la comunidad de Ethereum y dio lugar a disputas prolongadas sobre cu\u00e1l de las dos cadenas representaba la \u00abversi\u00f3n aut\u00e9ntica\u00bb 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.<\/p>\n<h3>Lecciones Aprendidas<\/h3>\n<p>El hackeo de The DAO sirvi\u00f3 como un recordatorio contundente de los riesgos asociados con la programaci\u00f3n de contratos inteligentes y la dependencia excesiva de la tecnolog\u00eda emergente. Revel\u00f3 la importancia de una auditor\u00eda exhaustiva del c\u00f3digo, as\u00ed como la necesidad de considerar cuidadosamente las implicaciones de seguridad de las implementaciones descentralizadas.<\/p>\n<p>Adem\u00e1s, el incidente destac\u00f3 la importancia de la gobernanza comunitaria en el desarrollo y la evoluci\u00f3n de las plataformas blockchain. La bifurcaci\u00f3n dura de Ethereum demostr\u00f3 que, en \u00faltima instancia, son las comunidades de usuarios quienes determinan el rumbo y la viabilidad de una red blockchain.<\/p>\n<h3>Conclusiones<\/h3>\n<p>El hackeo de The DAO fue un punto de inflexi\u00f3n en la historia de Ethereum y las criptomonedas en general. No solo puso de manifiesto los desaf\u00edos t\u00e9cnicos y de seguridad asociados con los contratos inteligentes, sino que tambi\u00e9n plante\u00f3 preguntas m\u00e1s amplias sobre la gobernanza y la toma de decisiones dentro de las comunidades descentralizadas.<\/p>\n<p>A pesar de las controversias y divisiones que provoc\u00f3, el hackeo de The DAO tambi\u00e9n condujo a una mayor conciencia y madurez dentro de la comunidad de Ethereum. Desde entonces, se han implementado medidas m\u00e1s rigurosas de seguridad y auditor\u00eda, y se ha fortalecido el enfoque en la gobernanza descentralizada y la participaci\u00f3n de la comunidad.<\/p>\n<p>En \u00faltima instancia, el hackeo de The DAO fue un recordatorio de que la innovaci\u00f3n tecnol\u00f3gica conlleva riesgos, pero tambi\u00e9n ofrece oportunidades para el aprendizaje y el crecimiento. A medida que el ecosistema de criptomonedas contin\u00faa evolucionando, es imperativo aprender de los errores del pasado para construir un futuro m\u00e1s robusto y resiliente para estas tecnolog\u00edas transformadoras.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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\u00e1s fr\u00eda vamos a ver que es lo que realmente ha pasado. El hackeo de The DAO ha sido un [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":79,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,12,28,32],"tags":[17,35,34,37,36],"class_list":["post-75","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-cripto","category-dao","category-hacking","tag-cripto","tag-dao","tag-ether","tag-ethereum","tag-the-dao"],"jetpack_featured_media_url":"https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2016\/09\/thedao-e1716309002409.webp","_links":{"self":[{"href":"https:\/\/santiagomarquezsolis.com\/index.php\/wp-json\/wp\/v2\/posts\/75","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/santiagomarquezsolis.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/santiagomarquezsolis.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/santiagomarquezsolis.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/santiagomarquezsolis.com\/index.php\/wp-json\/wp\/v2\/comments?post=75"}],"version-history":[{"count":2,"href":"https:\/\/santiagomarquezsolis.com\/index.php\/wp-json\/wp\/v2\/posts\/75\/revisions"}],"predecessor-version":[{"id":78,"href":"https:\/\/santiagomarquezsolis.com\/index.php\/wp-json\/wp\/v2\/posts\/75\/revisions\/78"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/santiagomarquezsolis.com\/index.php\/wp-json\/wp\/v2\/media\/79"}],"wp:attachment":[{"href":"https:\/\/santiagomarquezsolis.com\/index.php\/wp-json\/wp\/v2\/media?parent=75"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/santiagomarquezsolis.com\/index.php\/wp-json\/wp\/v2\/categories?post=75"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/santiagomarquezsolis.com\/index.php\/wp-json\/wp\/v2\/tags?post=75"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}