Reentrancy Attack: Entenda e Previna Vulnerabilidades em Smart Contracts

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 call em vez de transfer ou send.
  • Falta de mecanismos de bloqueio (mutex) ou uso de reentrancy guard.

Boas práticas de prevenção

  1. Atualizar o estado antes de chamar funções externas. Sempre deduza o saldo ou marcação antes de enviar Ether.
  2. Utilizar o padrão checks‑effects‑interactions. Primeiro valide as condições, depois atualize o estado e por último faça chamadas externas.
  3. Empregar ReentrancyGuard da OpenZeppelin. O modificador nonReentrant impede chamadas recursivas.
  4. Limitar o uso de call para transferências simples. Prefira transfer ou send quando possível, pois impõem um limite de gás.
  5. 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.