Skip to content

Glossary

Reentrancy

Un bug de contrato inteligente donde una llamada externa maliciosa vuelve a entrar al contrato llamante a mitad de ejecución, antes de que se hayan persistido sus actualizaciones de estado.

El hackeo de The DAO en 2016 — que drenó 60M USD en ETH y que finalmente provocó la división entre Ethereum y Ethereum Classic — fue un exploit de reentrancy. Un contrato víctima envió ETH a un atacante mediante una llamada de bajo nivel, el atacante volvió a llamar de inmediato al contrato víctima y, como la víctima aún no había descontado su saldo interno, el atacante pudo retirar el mismo saldo repetidamente.

La solución es el patrón "checks-effects-interactions": validar entradas, actualizar el estado y, al final, hacer las llamadas externas. Los guards de reentrancy (un mutex) son la red de seguridad para casos donde aplicar el patrón es difícil.