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.
- O exploit é executado e a Ethereum Foundation publica uma atualização crítica confirmando a vulnerabilidade. Ethereum Foundation
- 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
- 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.