¿Qué es un ataque de reentrada? Riesgo de contrato inteligente (2026)
— By Tony Rabbit in Tutorials

Un ataque de reentrada aprovecha una vulnerabilidad de contrato inteligente para drenar fondos llamando repetidamente a una función antes de que se actualice el estado. Aprenda cómo.
En el vertiginoso mundo de las finanzas descentralizadas (DeFi), los contratos inteligentes son la columna vertebral de la innovación, ya que automatizan acuerdos y transacciones con una eficiencia sin precedentes. Sin embargo, su naturaleza inmutable también significa que cualquier vulnerabilidad puede tener consecuencias catastróficas. Entre las amenazas más infames y persistentes se encuentra la ataque de reentrada, un exploit sofisticado que ha plagado el espacio criptográfico durante años, provocando miles de millones en pérdidas y dando forma fundamentalmente a las prácticas de seguridad que vemos hoy.
Comprender la reentrada no es sólo para desarrolladores; Es crucial para cualquiera que interactúe con los protocolos DeFi, desde proveedores de liquidez hasta comerciantes que rastrean nuevos pares en DEXTools. Esta guía desglosará qué es un ataque de reentrada, cómo funciona, su impacto histórico y las defensas esenciales que protegerán nuestros activos digitales en 2026 y más allá.

¿Qué es exactamente un ataque de reentrada?
En esencia, un ataque de reentrada explota una vulnerabilidad de sincronización crítica en un contrato inteligente. Específicamente, se enfoca en la breve ventana entre el momento en que un contrato envía fondos a una dirección externa y el momento en que actualiza su estado interno para reflejar esa transacción. Un atacante aprovecha esta brecha para llamar repetidamente a una función vulnerable, drenando fondos antes de que el contrato pueda registrar el retiro inicial.
Imagine una máquina expendedora que dispensa una bebida pero solo actualiza su recuento de inventario después de un breve retraso. Si pudiera presionar rápidamente el botón de dispensación varias veces durante ese retraso, podría obtener varias bebidas por el precio de una. Un ataque de reentrada opera según un principio similar, pero con activos digitales como ETH o tokens.
Cómo se desarrolla un ataque de reentrada
El escenario típico implica que un atacante implemente su propio contrato inteligente malicioso. Luego, este contrato de atacante interactúa con un contrato inteligente vulnerable, generalmente llamando a una función de retirada. Cuando el contrato vulnerable intenta enviar ETH a la dirección del contrato del atacante, se activa un mecanismo crucial: la función alternativa del contrato del atacante.
La función alternativa es una función especial en Solidity que se ejecuta cuando un contrato recibe ETH simple sin llamadas a funciones específicas, o cuando se llama a una función que no existe. En un ataque de reentrada, la función de reserva del atacante está programada para volver a llamar inmediatamente a la función de retirada vulnerable del contrato objetivo. Esta llamada recursiva ocurre antes de que el contrato vulnerable tenga la oportunidad de actualizar el saldo del usuario o el suministro total de fondos.
Este ciclo continúa, drenando fondos del contrato vulnerable con cada llamada recursiva, hasta que el contrato está vacío o se alcanza un límite de gas. Básicamente, el atacante puede retirarse varias veces de la misma solicitud inicial, explotando la información de estado desactualizada.
El infame hackeo de DAO y su legado
El ataque de reentrada más famoso e impactante ocurrió en 2016, dirigido a la DAO (Organización Autónoma Descentralizada). Este proyecto innovador fue un experimento temprano y ambicioso en gobernanza e inversión descentralizadas. Sin embargo, su contrato inteligente contenía una vulnerabilidad de reentrada.
Un atacante aprovechó esta falla para drenar sistemáticamente aproximadamente 3,6 millones de ETH del contrato de DAO. La magnitud del robo provocó conmociones en la naciente comunidad Ethereum. Las consecuencias fueron tan graves que finalmente llevaron a una polémica bifurcación de la cadena de bloques Ethereum, creando dos cadenas distintas: Ethereum (ETH), que revirtió el hack, y Ethereum Classic (ETC), que conservó la cadena original, incluido el hack.
El hackeo de DAO sirve como un claro recordatorio del potencial devastador de los ataques de reentrada y subrayó la necesidad crítica de prácticas sólidas de seguridad de contratos inteligentes. Incluso hoy, años después de este evento fundacional, la reentrada sigue siendo una de las principales causas de los exploits de DeFi, y contribuye a más de mil millones de dólares en pérdidas históricas en varios protocolos.

Tipos de ataques de reentrada
Si bien el principio básico sigue siendo el mismo, los ataques de reentrada pueden manifestarse de formas ligeramente diferentes:
- Reentrada de función única: Este es el tipo clásico, donde el atacante llama repetidamente a la misma función vulnerable (por ejemplo, una función de retiro) dentro del mismo contrato.
- Reentrada de funciones cruzadas: En esta variante más compleja, un atacante podría llamar a una función que modifica una variable de estado y luego llamar inmediatamente a una función vulnerable diferente que se basa en el valor obsoleto de esa variable de estado antes de que se actualice correctamente.
- Reentrada entre contratos: Este tipo implica múltiples contratos. Un atacante podría explotar una vulnerabilidad en el Contrato A para manipular el estado del Contrato B, lo que luego permitiría volver a entrar en el Contrato A u otro contrato relacionado. Esto ocurre a menudo en protocolos DeFi complejos con componentes interconectados.
Defensa contra ataques de reentrada
Dada la amenaza persistente, los desarrolladores y auditores de contratos inteligentes han desarrollado varios mecanismos de defensa sólidos contra la reentrada. La implementación de estas estrategias no es negociable para los protocolos DeFi seguros.
- El patrón Verificaciones-Efectos-Interacciones: Esta es posiblemente la defensa más fundamental. Dicta que las funciones de los contratos inteligentes deben seguir un orden específico: primero, realizar todas las comprobaciones necesarias (por ejemplo, autorización del remitente, comprobaciones de saldo); segundo, aplicar todos los cambios de estado (efectos), como la actualización de saldos; y solo entonces, realizar llamadas externas (interacciones) a otros contratos o direcciones. Al actualizar el estado antes de enviar fondos, se elimina la ventana de reingreso.
- Modificadores Mutex de protección de reentrada: Bibliotecas como OpenZeppelin proporcionan soluciones sólidas como
Modificador
nonReentrant. Este modificador actúa como un bloqueo mutex (exclusión mutua). Cuando una función marcada con Se llama anonReentrant, se establece un indicador que evita más llamadas a esa función (u otras funciones protegidas por la misma protección) hasta que se complete la ejecución inicial. Si una llamada reentrante intenta ejecutarse, simplemente se revertirá. - Pagos Pull-Over-Push: En lugar de que un contrato envíe fondos automáticamente a la dirección de un usuario, un patrón más seguro es permitir a los usuarios "retirar" sus fondos. Esto significa que el contrato registra cuánto se le debe a cada usuario y el usuario inicia una transacción separada para retirar su saldo acumulado. Este enfoque reduce significativamente la superficie de ataque asociada con llamadas externas iniciadas por el contrato.
- Auditorías profesionales de contratos inteligentes: Si bien no son una defensa a nivel de código, las auditorías profesionales son una capa de seguridad indispensable. Las empresas de seguridad independientes revisan meticulosamente el código de los contratos inteligentes en busca de vulnerabilidades, incluidos patrones complejos de reentrada, fallas lógicas y otras posibles vulnerabilidades. Las auditorías periódicas, especialmente antes de la implementación y después de actualizaciones importantes, son fundamentales para mantener la integridad de los protocolos DeFi.
El futuro de la seguridad de los contratos inteligentes
A medida que el ecosistema DeFi continúa evolucionando, también lo hacen los métodos de ataque y defensa. Si bien la reentrada sigue siendo una amenaza importante, el conocimiento colectivo y las herramientas disponibles para los desarrolladores han madurado considerablemente desde el hackeo de DAO. El énfasis en las prácticas de codificación segura, la adopción generalizada de bibliotecas auditadas y la creciente importancia de la verificación formal están contribuyendo a un panorama de blockchain más resiliente.
Para los usuarios, comprender estos riesgos y las medidas adoptadas para mitigarlos es fundamental. Haga siempre su debida diligencia antes de interactuar con un nuevo protocolo, verifique los informes de auditoría y comprenda los mecanismos básicos de cómo se manejan sus fondos. Plataformas como DEXTools brindan información valiosa sobre la actividad del proyecto y el estado de los tokens, pero el conocimiento fundamental de seguridad sigue siendo su mejor defensa.
La batalla contra las vulnerabilidades de los contratos inteligentes está en curso, pero con educación continua y la implementación de medidas de seguridad sólidas, podemos construir colectivamente un futuro descentralizado más seguro y confiable. La reentrada puede ser una hazaña histórica, pero sus lecciones son imperecederas.
Preguntas frecuentes
¿Qué es un ataque de reentrada en términos simples?
Un ataque de reentrada ocurre cuando un atacante llama repetidamente a la función de retiro de un contrato inteligente antes de que el contrato tenga la oportunidad de actualizar su saldo, drenando efectivamente fondos varias veces de una sola solicitud.
¿Qué hack famoso implicó un ataque de reentrada?
El hackeo de DAO de 2016 utilizó un famoso ataque de reentrada para drenar aproximadamente 3,6 millones de ETH, lo que llevó a la división de las cadenas de bloques Ethereum y Ethereum Classic.
¿Cómo se pueden proteger los contratos inteligentes de ataques de reentrada?
Las defensas clave incluyen el patrón de verificación-efectos-interacciones (actualización del estado antes de las llamadas externas), modificadores mutex de protección de reentrada (como el no reentrante de OpenZeppelin), sistemas de pago pull-over-push y auditorías profesionales de contratos inteligentes.
¿Siguen siendo los ataques de reentrada una amenaza en DeFi?
Sí, a pesar de las medidas de seguridad avanzadas, la reentrada sigue siendo una de las principales causas de los exploits DeFi, y históricamente ha contribuido a más de mil millones de dólares en pérdidas debido a interacciones y supervisión complejas.
¿Cuáles son los diferentes tipos de ataques de reentrada?
Los tipos incluyen reentrada de función única (llamar a la misma función), reentrada de funciones cruzadas (explotar el estado en diferentes funciones) y reentrada de contratos cruzados (que involucran múltiples contratos interconectados).