La journée est mouvementée sur la planète Ethereum à la suite d’une attaque réussie contre la célèbre « DAO », première organisation autonome décentralisée qui avait levé plus de 12 millions d’ETH fin mail 2016. Pour résumer simplement les choses, un attaquant a réussi à exploiter une faille dans le « smart contract » régissant la DAO, lui permettant de siphonner petit à petit les ethers [1] détenus par cette dernière. Ce ne sont pas loin de 3,6 millions d’ethers
Les conséquences directes ont été une chute drastique du cours du token, mais aussi du cours de l’Ethereum (plus de 10% des ETH étant « investis » dans la DAO…)
Le problème a vite été identifié [2], mais de par la nature même du système il était déjà trop tard : le problème est présent dans un « smart contract » autonome et incoercible, et, à part une tentative pour ralentir l’attaque, il n’y avait pas d’autre alternative que de regarder, impuissant, les fonds de la DAO être progressivement transférés sur l’adresse de l’attaquant !
– un « soft fork » permettant de bloquer les fonds de l’attaquant pour qu’il ne puisse pas les récupérer les ethers volés.
– un « hard fork » pour récupérer les fonds volés et les restituer à la DAO.
Il est à noter que le fonctionnement de la DAO fait que l’attaquant ne pouvait (et ne pourra pas dans tous les cas si le soft fork est accepté) récupérer les ETH volés avant 27 jours, le temps d’initier une sortie des ETH immobilisés sur le « smart contract » de la DAO.
C’est donc maintenant à la communauté Ethereum de décider la suite, la décision de forker le réseau ne devant pas être prise à la légère… Il y aura des conséquences tous les cas, et les débats ont déjà commencé au sein de la communauté !
[1] Token (monnaie) d’Ethereum.
[2] L’attaque, une « Recursive Call Attack » ou « Race To Empty », consiste à profiter d’une vulnérabilité du code régissant TheDAO, et à faire appel de manière répétée via la récursivité à la fonction « splitDAO » à partir d’un « child DAO ». L’attaque a été répétée 27996 fois et a permis de soustraire 3,6 millions d’ether (par 237.62451099999999 ETH à chaque fois) de TheDAO pour les loger dans le DAO de l’attaquant (TheDarkDAO). Par ailleurs, une erreur de typographie dans l’écriture d’une fonction « Transfer » (notée T et non t) aurait permis à cette attaque la répétition à l’infinie de la boucle d’attaque. A ce stade, celui-ci ne peut pas les utiliser/transférer sur un autre compte car le code originel oblige à attendre 27 jours pour que le compte de TheDarkDAO soit effectivement disponible pour son créateur. Il n’en reste pas moins que les fonds sont totalement sous le contrôle de TheDarkDAO et que personne sauf son créateur n’y a accès. [Explications de Régis PIETRASZEWSKI et Laurent MALLET].