Le bogue qui a donné son nom à une catégorie de vulnérabilité
La fonction de scission de The DAO transférait des ethers à l’appelant avant de mettre à jour le solde enregistré de celui-ci. Un contrat qui reçoit des ethers peut exécuter du code, et ce code pouvait rappeler la fonction de scission — moment auquel le solde indiquait toujours que l’attaquant avait droit à la totalité de son montant. Répétez l’opération au sein d’une même transaction et le retrait se multiplie.
La réentrance était connue avant cet épisode. Ce que The DAO a apporté, c’est la démonstration de son coût à grande échelle, et l’établissement de l’ordre « vérifications-effets-interactions » que l’on enseigne désormais à tout développeur Solidity.
Pourquoi cela compte encore
Près de dix ans plus tard, la réentrance figure toujours dans ce registre — l’incident Curve mettait en jeu des garde-fous anti-réentrance correctement écrits mais incorrectement compilés. La catégorie de vulnérabilité n’a pas disparu ; les moyens d’y parvenir se sont multipliés.
Le fork
Conisec consigne l’issue sans la cautionner : les fonds ont été récupérés en modifiant l’historique de la chaîne au moyen d’un hard fork, que rejeta une minorité substantielle. Ce désaccord a produit deux chaînes qui existent toutes deux aujourd’hui. C’est l’illustration la plus nette qui soit du fait que « le code fait loi » décrit une préférence, et non le comportement réel du système sous pression.
Chronologie
Ajout seulement. Les corrections sont ajoutées sous la forme d'une entrée datée distincte ; les entrées antérieures ne sont jamais réécrites.
- L'exploitation est menée et la Fondation Ethereum publie une mise à jour critique confirmant la vulnérabilité. Ethereum Foundation
- Un hard fork au bloc 1 920 000 déplace les fonds siphonnés vers un contrat de retrait. La chaîne non forkée se poursuit sous le nom d'Ethereum Classic. Ethereum Foundation
Ce qu'il faut vérifier
La Fondation Ethereum a publié une mise à jour critique à l'époque ; ce billet et la documentation ultérieure du hard fork constituent le compte rendu de référence.
Conisec n'héberge ni ne relaie d'outils de récupération, de révocation ou de « vérification ». Après un incident public, les attaquants diffusent systématiquement ce type de liens en utilisant les noms des publications qui couvrent l'affaire. Utilisez le canal officiel du projet concerné, indiqué ci-dessus, et rien d'autre.
Sources
- Ethereum Foundation, CRITICAL UPDATE Re: DAO Vulnerability (17 Juin 2016)
Pas un conseil. Ceci est un résumé de faits publiés, et non un conseil juridique, fiscal ou de sécurité. Vérifiez auprès des sources primaires indiquées ci-dessus.
Dernière vérification par Conisec Staff.