O reentrancy attack (ataque de reentrância) é uma vulnerabilidade crítica em contratos inteligentes que permite que um invasor chame repetidamente uma função antes que o estado do contrato seja atualizado, drenando fundos ou alterando lógicas.
Esse tipo de ataque ganhou notoriedade após o famoso caso do The DAO em 2016, que resultou na perda de ~3,6 milhões de ETH. Desde então, desenvolvedores têm buscado estratégias para mitigar esse risco.
Como funciona o ataque
Em termos simples, o atacante cria um contrato malicioso que, ao receber Ether, executa uma chamada de retorno (fallback ou receive) que volta ao contrato vulnerável e repete a operação de retirada antes que o saldo seja atualizado.
Principais vetores de exploração
- Chamadas externas não protegidas antes da atualização de estado.
- Uso inadequado de
callem vez detransferousend. - Falta de mecanismos de bloqueio (mutex) ou uso de
reentrancy guard.
Boas práticas de prevenção
- Atualizar o estado antes de chamar funções externas. Sempre deduza o saldo ou marcação antes de enviar Ether.
- Utilizar o padrão
checks‑effects‑interactions. Primeiro valide as condições, depois atualize o estado e por último faça chamadas externas. - Empregar
ReentrancyGuardda OpenZeppelin. O modificadornonReentrantimpede chamadas recursivas. - Limitar o uso de
callpara transferências simples. Prefiratransferousendquando possível, pois impõem um limite de gás. - Realizar auditorias de segurança regulares. Ferramentas como ConsenSys Diligence ajudam a identificar vulnerabilidades.
Recursos adicionais
Para aprofundar o assunto, consulte a documentação oficial da Ethereum aqui e explore guias de auditoria.
Entender a segurança dos contratos também complementa estratégias de trading. Veja nosso artigo sobre Futures Trading e como proteger suas posições, ou aprenda sobre Spot Trading Estratégias para diversificar riscos.