Pular para o conteúdo
Registro de incidente · · 1 min de leitura · 212 palavras ·Descoberto ·Divulgado Resolvido

Exploit de chamada recursiva no The DAO, junho de 2016: o que aconteceu e o que verificar

Uma falha de reentrância na função de split do The DAO drenou cerca de 3,6 milhões de ETH e levou ao contencioso hard fork que produziu o Ethereum e o Ethereum Classic.

Compartilhar
Esquema do incidente da The DAO mostrando a etapa de reentrância como o ponto de falha.
Schematic of the The DAO incident showing the reentrancy stage as the failure point.

Visão geral

ENTIDADE AFETADA
The DAO
BLOCKCHAIN(S)
Ethereum
CLASSE DE ATAQUE
Reentrância
PERDA RELATADA
aprox. 3,6 milhões de ETH(Ethereum Foundation, 17 jun 2016)
RESPOSTA OFICIAL
blog.ethereum.org

O bug que batizou uma classe de vulnerabilidade

A função de split do The DAO transferia ether ao chamador antes de atualizar o saldo registrado dele. Um contrato que recebe ether pode executar código, e esse código podia chamar a função de split de novo — momento em que o saldo ainda dizia que o atacante tinha direito ao valor integral. Repita isso dentro de uma única transação e o saque se multiplica.

A reentrância já era conhecida antes disso. O que o The DAO fez foi demonstrar o custo em escala e consagrar verificações-efeitos-interações como a ordenação que todo desenvolvedor Solidity aprende hoje.

Por que isso ainda importa

Quase uma década depois, a reentrância ainda aparece neste rastreador — o incidente da Curve envolveu proteções contra reentrância corretamente escritas, mas incorretamente compiladas. A classe de vulnerabilidade não desapareceu; os caminhos para chegar até ela se multiplicaram.

O fork

A Conisec registra o desfecho sem endossá-lo: os fundos foram recuperados alterando o histórico da blockchain por meio de um hard fork, que uma minoria substancial rejeitou. Essa discordância produziu duas blockchains que existem até hoje. É a ilustração mais nítida disponível de que “o código é a lei” descreve uma preferência, e não como o sistema de fato se comportou sob pressão.

Linha do tempo

Somente de acréscimo. As correções são adicionadas como entrada datada própria; as entradas anteriores nunca são reescritas.

  1. O exploit é executado e a Ethereum Foundation publica uma atualização crítica confirmando a vulnerabilidade. Ethereum Foundation
  2. Um hard fork no bloco 1.920.000 move os fundos drenados para um contrato de saque. A blockchain sem o fork continua como Ethereum Classic. Ethereum Foundation

O que verificar

A Ethereum Foundation publicou uma atualização crítica na ocasião; essa publicação e a documentação posterior do hard fork são o registro definitivo.

A Conisec não hospeda nem linka ferramentas de recuperação, de revogação ou de “verificação”. Depois de um incidente público, atacantes rotineiramente semeiam exatamente esses links usando o nome de publicações que cobrem o caso. Use o canal oficial do próprio projeto afetado, linkado acima, e nada além disso.

Fontes

  1. Ethereum Foundation, CRITICAL UPDATE Re: DAO Vulnerability (17 jun 2016)

Não é aconselhamento. Este é um resumo de fatos publicados, não orientação jurídica, tributária ou de segurança. Confira nas fontes primárias linkadas acima.

Última verificação por Conisec Staff.

Continue explorando