Reentrancy Decodificada – O Bug do Contrato Inteligente que Ainda Esvazia Milhões em 2026, e o Padrão Checks-Effects-Interactions que o Impede no Código
Reentrância não é magia. É um bug de ordem: seu contrato atualiza seu próprio estado APÓS fazer uma chamada externa, em vez de antes, e um atacante faz uma chamada de volta durante essa lacuna. Corrija a ordem e o bug desaparece.
O DAO perdeu cerca de 3,6 milhões de ETH (aproximadamente US$ 60 milhões, cerca de 5% de todo o ETH existente na época) por esse exato erro em 17 de junho de 2016. O impacto dividiu o Ethereum em ETH e ETC.
Dez anos depois, ele ainda está esvaziando fundos. O Solv Protocol perdeu US$ 2,73 milhões por uma reentrância em 5 de março de 2026, e aproximadamente US$ 52 milhões foram roubados em diversos protocolos on-chain em maio de 2026 (DeFiLlama via CryptoTimes, 31 de maio de 2026).
O padrão vulnerável: ler o saldo, enviar o ETH com uma chamada de baixo nível, E DEPOIS definir o saldo como zero. A função receive() do atacante reentra em withdraw() antes que esse zero seja aplicado, e entra em loop até que o contrato fique vazio.
Duas correções, usadas juntas:
Checks-Effects-Interactions. Valide, atualize TODO o estado e faça a chamada externa POR ÚLTIMO. Mova balances[msg.sender] = 0 acima da chamada, e a chamada reentrante lerá zero e reverterá.
A proteção nonReentrant da OpenZeppelin. Um mutex de armazenamento (NÃO_ENTRADO para ENTROU) que reverte na reentrada. Use-o E CEI, não apenas um ou outro.
Duas coisas que a maioria dos desenvolvedores ainda erra.
1. .transfer() não é mais um escudo: o subsídio de 2300 gás deixou de ser uma suposição segura quando o EIP-1884 aumentou o gás de SLOAD em 2019. Use .call{value:}("") com CEI.
2. A reentrância somente de leitura contorna uma proteção padrão, porque uma função view lida durante uma atualização retorna estado corrompido e pode envenenar um oracle de preços (dForce, US$ 3,64 milhões).
Apenas para fins educacionais. Não é aconselhamento financeiro.
Siga para insights diários – onde blockchain encontra IA, um swipe satisfatório de cada vez.
#Solidity #SmartContractSecurity #Web3Security #Ethereum #DeFi #SmartContracts #BlockchainDeveloper #SolidityDev #EVM #OpenZeppelin #Reentrancy #Web3Dev #BlockchainSecurity #DeFiSecurity #SmartContractAudit #CodeSecurity #OnChain #BlockchainEducation