Os preços dos ativos estão temporariamente atrasadosAlguns ativos deixaram de receber dados de preço atualizados. As atualizações serão retomadas automaticamente assim que a ligação de dados for restabelecida.
Bitculator

Bitculator no Android

Capitalização de mercado:

$2,005,348,361,074

Volume 24h:

$190,865,894,656

jun. 23 Liquidações:

$0

24H Longo/Curto:

Em breve

Bitculator · Aprender

Reentrancy Attack

O que significa Reentrancy Attack em termos de criptomoedas?

# 350·Atualizado jun. 2026·3 min de leitura

Um Reentrancy Attack é uma falha de segurança em contratos inteligentes, onde um atacante explora a vulnerabilidade do contrato chamando o repetidamente antes que a execução inicial seja concluída.

O que é Reentrancy Attack?

Uma Reentrancy Attack ocorre quando um contrato transfere o controlo para outro contrato durante uma chamada e esse código externo regressa ao primeiro contrato antes que este termine de actualizar os seus registos. Essa jogada de temporização permite ao atacante repetir ações sensíveis, como levantamentos, várias vezes. Imagine pedir um reembolso e voltar ao balcão antes de o caixa fechar a gaveta.


Mito

«Apenas código antigo pode sofrer uma Reentrancy Attack.» Isso não é verdade. Qualquer contrato que faça uma chamada externa antes de fixar o seu próprio estado pode ser vulnerável se a lógica for descuidada.


Como a Reentrancy Attack funciona

Resumo rápido. Um contrato inteligente típico tem uma função de levantamento que envia fundos ao chamador. Se enviar os fundos primeiro e só depois limpar o saldo, um atacante pode inserir um callback e pedir mais antes de o saldo ser definido para zero.

  1. Início: O atacante deposita alguns fundos para parecer legítimo.
  2. Chamada: O atacante aciona a função de levantamento no contrato alvo.
  3. Fallback: O alvo envia fundos, o que executa a função fallback do atacante.
  4. Repetir: Esse fallback chama a função de levantamento novamente antes do saldo ser actualizado.
  5. Esvaziar: O ciclo continua até o contrato ficar sem fundos ou sem gas. Sim, esse é o truque.

Um pequeno erro na ordem, grande problema.


Por que a Reentrancy Attack importa

Importa porque bugs de temporização mexem com dinheiro real, e depressa. Além disso, é um dos exploits clássicos que todo desenvolvedor e utilizador atento deve reconhecer de imediato.

  • Vantagem: Conhecer o padrão ajuda a identificar código arriscado e a proteger fundos.
  • Perspectiva: Alimenta-se da transparência pública, já que tudo numa blockchain é visível e invocável.
  • Relevância: Verá isto em DeFi, pontes, tesourarias e até em pagamentos de governança para DAOs.

Dica

Siga a ordem: verificações, depois efeitos, depois interações. Actualize saldos primeiro e só depois faça chamadas externas. Acrescente um simples reentrancy guard para maior segurança.


Principais características da Reentrancy Attack

Isto é o que a caracteriza:

  • Recursão: Código externo chama de volta o mesmo contrato antes deste terminar.
  • Ordem: O erro surge quando o envio de fundos ou chamadas externas ocorre antes das actualizações de estado.
  • Transversal: Pode saltar entre vários contratos, não apenas uma função.
  • Ativos: Funciona com ETH, tokens e até créditos contabilísticos se estiver mal implementado.

Variações

Diferentes variantes, mesmo problema para código descuidado:

  • Única: Reentrar na mesma função repetidamente.
  • Transversal: Reentrar através de outra função dentro do mesmo contrato.
  • Múltipla: Reentrar através de dois ou mais contratos num ciclo.
  • Só leitura: Influenciar views ou oráculos de preço para enganar escritas posteriores.

Lembrete

Corrigir uma Reentrancy Attack não se resume a uma única função. Reveja cada chamada externa, acrescente testes para cadeias de chamadas estranhas e agende auditorias regulares.


Exemplo

O exploit de 2016 contra The DAO usou um loop de reentrância na função de levantamento antes de os saldos serem limpos, esvaziando uma tesouraria enorme em minutos.


Curiosidade

A expressão comunitária «checks then effects then interactions» veio de guias de segurança iniciais e ficou porque é curta, fácil de lembrar e funciona.


Resumo

Versão curta para guardar: se código externo pode chamar você antes de terminar a sua própria escrituração, assuma que o fará e poderá entregar dinheiro de graça. Isso é uma Reentrancy Attack.

Esquecemos alguma coisa??

Sua contribuição nos ajuda a manter tudo correto. Contate-nos se algo estiver incorreto ou faltando.

Contato