Aller au contenu
Dossier d'incident · · 2 min de lecture · 234 mots ·Découvert ·Divulgué Résolu

L’exploitation par appel récursif de The DAO, juin 2016 : ce qui s’est passé et ce qu’il faut vérifier

Une faille de réentrance dans la fonction de scission de The DAO a siphonné environ 3,6 millions d'ETH et a conduit au hard fork controversé qui a donné naissance à Ethereum et Ethereum Classic.

Partager
Schéma de l'incident The DAO montrant l'étape de réentrance comme point de défaillance.
Schematic of the The DAO incident showing the reentrancy stage as the failure point.

En un coup d'œil

ENTITÉ TOUCHÉE
The DAO
CHAÎNE(S)
Ethereum
CLASSE D'ATTAQUE
Réentrance
PERTES DÉCLARÉES
env. 3,6 millions d'ETH(Ethereum Foundation, 17 Juin 2016)
RÉPONSE OFFICIELLE
blog.ethereum.org

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.

  1. L'exploitation est menée et la Fondation Ethereum publie une mise à jour critique confirmant la vulnérabilité. Ethereum Foundation
  2. 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

  1. 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.

Pour aller plus loin