Ethereum : un casse à 30 millions d’euros pas prévu au smart contract

Sécurité
parity-ethereum

Un défaut dans l’implémentation de la multisignature sur le client Ethereum de Parity a permis le vol de l’équivalent de 30 millions d’euros dans trois portefeuilles.

Destins croisés pour Edgeless, Swarm City et æternity.

Les trois entités, qui portent respectivement des projets de casino sur Ethereum, d’économie décentralisée et de blockchain alternative, ont en commun d’avoir recouru à une ICO (levées de fonds en cryptomonnaies)… et de s’être fait voler tout ou partie des sommes obtenues dans ce cadre.

Les quelque 153 000 ethers qui leur ont été dérobés – l’équivalent d’environ 30 millions d’euros – avaient la particularité d’être tous stockés sur des adresses associées à des portefeuilles créés avec le client Ethereum de Parity Technologies.

L’entreprise établie à Londres avait réagi mercredi, évoquant une « faille critique » dans son logiciel, à partir de la version 1.5 « Nativity ».

Cette dernière, sortie en début d’année, avait notamment introduit la prise en charge des portefeuilles dits « multisignatures » ; en d’autres termes, exigeant des approbations multiples indépendantes pour valider des transactions.

Un trou dans le portefeuille

Pour intégrer cette fonctionnalité, Parity s’est appuyé sur le code de multisignature associé à Ethereum (le smart contract wallet.sol), mais en a réalisé une implémentation plus légère destinée essentiellement à réduire les coûts de déploiement des portefeuilles.

Problème : plusieurs fonctions permettant d’initialiser un portefeuille n’étaient pas suffisamment protégées. Elles permettaient en l’occurrence à un tiers de modifier le propriétaire et les paramètres dudit portefeuille.

Parity affirme avoir éliminé la vulnérabilité en déconnectant une dépendance, puis corrigé le code. En l’état, sur les 596 portefeuilles vulnérables recensés par ses soins, il semble que trois aient été touchés : ceux d’Edgeless, Swarm City et æternity.

Les autres, associés à des projets comme Bancor, FirstBlood et Creditbit, ont également été vidés, mais par des « hackers bienveillants » (des « white hats ») qui ont exploité la même faille pour extraire les fonds et les sécuriser sur une autre adresse en attendant de les restituer.

Le compte y est

Du côté d’Edgeless, on confirme le vol de 26 793 ethers. Mais les fondateurs assurent que le projet verra bien, comme prévu, le jour au cours de ce trimestre : les fonds sont suffisants grâce non seulement à la diversification des sources de financement, mais aussi à l’augmentation de la valeur de l’ether depuis l’ICO.

Même son de cloche chez æternity, qui reconnaît qu’un peu plus de 82 000 ethers ont disparu de son portefeuille, tout en affirmant disposer des fonds nécessaires, entre autres parce que son ICO était divisée en plusieurs phases. Les autorités policières du Liechtenstein ont été averties.

Swarm City admet aussi figurer sur la liste des victimes, avec un butin de 44 055 ethers. Si on y additionne les montants évoqués par Edgeless et æternity, on dépasse effectivement les 153 000 ethers. Somme qu’on retrouve sur une adresse que l’explorateur de blocs Etherscan a identifiée comme « MultiSigExploit-Hacker »…

Fondateur et CTO de Parity, Gavin Wood assure que toutes les modifications « sensibles » apportées au code du projet font l’objet d’au moins deux vérifications.

Le multisignature entre dans  cette catégorie, mais l’ancien CTO de la Fondation Ethereum explique que la fonctionnalité est arrivée dans le cadre d’un changement plus vaste : la mise en place d’une interface graphique de gestion des portefeuilles. Elle a donc été considérée dans la globalité d’une modification « non sensible » et n’a, par là même, été examinée qu’une fois.

En réponse à cet épisode, Parity songe à intercaler, en amont du smart contract qui gère le multisignature, un autre contrat, plus léger, qui ait l’effet d’un « interrupteur d’urgence ». Des développements sont en cours sous le nom CoreVeto.

 


Lire la biographie de l´auteur  Masquer la biographie de l´auteur