Glossary
Réentrance
Bug de smart contract où un appel externe malveillant ré-entre dans le contrat appelant en pleine exécution, avant que ses mises à jour d'état n'aient été validées.
Le hack de The DAO en 2016 — qui a drainé 60 M USD d'ETH et a finalement provoqué le split entre Ethereum et Ethereum Classic — était un exploit de réentrance. Un contrat victime envoyait de l'ETH à un attaquant via un low-level call, l'attaquant rappelait immédiatement la victime, et comme cette dernière n'avait pas encore décrémenté son solde interne, l'attaquant pouvait retirer le même solde de manière répétée.
La correction est le pattern « checks-effects-interactions » : valider les entrées, mettre à jour l'état, puis effectuer les appels externes en dernier. Les reentrancy guards (un mutex) sont le filet de sécurité quand le pattern est difficile à imposer.