Début novembre, Parity révélait la « disparition » de 372 millions de dollars [1], suite à une série de bugs sur son service de portefeuilles. Un développeur indépendant aurait accidentellement bloqué ces fonds…
Introduction
Parity est avant tout un des deux logiciels principaux des réseaux Ethereum et Ethereum Classic. Le logiciel Parity est autant un portefeuille pour les utilisateur qu’un nœud pour ces réseaux.
Une des fonctionnalités de ce portefeuille est la création de comptes multi-signature, qui permettent à plusieurs entités de partager une même adresse d’où les fonds ne peuvent être déplacés que si un certain nombre de ces entités signent la transaction. L’intérêt en est grand pour les entreprises et les levées de fonds, où de grosses sommes sont stockés et où on ne peut aucunement confier le contrôle à un seul et même individu. Ces comptes multi-signature sont gérés par des contrats déployés à la demande par le logiciel Parity.
Le hack
Contrairement aux hacks normaux, l’argent n’a pas été volé ou délibérément confisqué, mais accidentellement verrouillé. À l’origine : Une série de bugs et un développeur curieux.
Alors qu’ils corrigeaient une série de bugs qui avait, le 19 juillet dernier, permis à un hacker de voler 32 M$ d’un certain nombre de comptes multi-signature, Parity avait involontairement créé une deuxième faille de sécurité dans son système ; une faille qui permettait à n’importe qui de prendre contrôle du smart contract qui gérait les comptes multi-signature.
C’est ainsi que le 6 novembre, devops199, un utilisateur curieux, a déclenché une fonction qui lui avait transféré la « propriété » d’un contrat duquel dépendaient tous les comptes multi-signature créés avec Parity [2]. Réalisant cela et pris de panique, il appela une fonction qu’il pensait allait annuler son action. Mais au lieu de cela, cette fonction avait « tué » le contrat, mettant tous les comptes qui en dépendaient dans un état terminal immutable, où ils ne répondent plus à aucun appel. Les fonds stockés dans ces comptes sont donc gelés et irrécupérables.
Parity avait réagi avec une alerte de sécurité [3] : étaient affectés tous les comptes multi-signature créés dans la version de Parity publiée après le 20 juillet 2017. Le « hacker », lui, avait supprimé son compte GitHub et n’est plus réapparu.
Un cas de jurisprudence ?
De par la nature immutable de la Blockchain, il est impossible d’annuler une opération, et impossible de modifier ou de supprimer une transaction incluse dans un bloc sans recréer et calculer tous les blocs qui viennent après.
Mais en 2016, lorsqu’un hacker avait volé l’équivalent (à l’époque) de 90 millions de dollars en Ethereum lors de l’ICO « The DAO », la communauté Ethereum s’était ralliée à la fondation Ethereum afin d’accepter une modification du blockchain, en passant par un hard fork. C’est à ce moment que l’Ethereum Classic était né, avec une communauté qui avait refusé la violation de principes fondateurs de la Blockchain et de l’Ethereum [4].
La solution de Parity
Bien que certains experts en sécurité aient tendance à imputer la faute au langage Solidity dont sont écrits les smart contracts, il est clair qu’elle revient entièrement aux développeurs de Parity, qui avaient publié un logiciel sans tests et audit préalable. D’autant que le bug avait été reporté à l’équipe de développement, qui n’y avait pas vu une faille de sécurité, mais un petit souci dont la résolution serait appréciée.
« C’est une sorte d’épargne à long terme, pour nous. », avait dit Gavin. En effet, près 180 M$ de ces fonds gelés appartiennent à Pokadot, une ICO lancée par Gavin Wood, un des fondateurs de Parity et membre de l’équipe de développement de l’Ethereum Core.
Dans une interview donnée à TechCrunch [6], Gavin Wood et Jutta Steiner ont confirmé qu’ils espéraient qu’une mise à jour de la plateforme pourrait permettre de récupérer les pièces perdues.
Réaction de la communauté
Après la publication du postmortem du bug par Parity, la réaction de la communauté fut claire : Il est hors de question que l'Ethereum subisse un autre hard fork. En effet, le prix de l'Ethereum est en forte hausse et un hard fork pourrait causer un crash et une perte de confiance dans la plateforme.
Parity a alors réagit, ce 15 décembre, et ils pourraient abandonner l'idée de modifier le protocole du réseau pour récupérer les fonds gelés.
Je préfère ne pas en parler ; à part du fait que Parity ne veut pas appliquer les proposition actuelles, parce que la réponse de la communauté a été claire et nette. — Afri Schoedon
Afri Schedon a ajouté que les développeurs de Parity arrêtaient de travailler sur les solutions "hard fork" et allaient chercher des alternatives.
We want to thank the community for their feedback on our last post. Your views have been taken into consideration and we will be reviewing further options and will keep you updated! #Ethereum #Blockchain
— Parity Technologies (@ParityTech) 15 décembre 2017
Conclusion
Que cette faille se soit révélée au niveau d’un contrat créé par des développeurs majeurs de l’Ethereum est une aubaine et laisserait présager une correction sans heurts. Mais peut-elle être faite sans toucher à l’intégralité et l’immutabilité de la Blockchain ? Rien n’est moins sûr. Ce qui est sûr, en revanche, c’est que cette année aura été désastreuse pour Parity.
Le réseau Ethereum, pour sa part, se bat contre la congestion. En effet, l’application décentralisée CryptoKitties – jeu de collection et d’échange de chats virtuels – a attiré tant d’utilisateurs qu’elle a fini par montrer les limites du réseau Ethereum [7], en augmentant le nombre de transactions journalières de 400 000 à 720 000. Les mineurs ont réagi en augmentant la limite du bloc afin d’alléger la charge, mais ce n’est qu’une solution temporaire et la communauté attend des développeurs qu’ils améliorent l’adaptabilité du réseau. Vitalik Buretin, confiant, avait cité plusieurs solutions, autant sur-chaîne et hors-chaîne, dont l’ombrage quadratique, qui amèneraient l’Ethereum au niveau d’efficacité de VISA [8].
L’Ethereum s’échange à 719 $ avec une capitalisation de 69 milliards de $.
Sources
- A Postmortem on the Parity Multi-Sig Library Self-Destruct
- Anyone can kill your contract (issue 6995)
- Security Alert (Parity Blog)
- ‘$300 Millions in Cryptocurrency’ accidentally lost forever due to bug
- Fork sur l'Ethereum Classique et réflexions sur la Blockchain (Subspace Club)
- Parity CEO is confident that $150M in frozen Ethereum isn’t lost forever
- Les chats s'invitent sur le réseau Ethereum
- Vitalik Buterin Lays Roadmap for Ethereum Visa Levels Quadratic Sharding
Si vous appréciez nos articles, n'hésitez pas à nous laisser un pourboire :
- ETH / ETC :
0x624688e4012c9E6Be7239BeA0A575F8e41B4B3B6
- BCH / BTC :
13wfjj4uwhtzHAMiKroF7fGjVqXZ7aESqL
Hashtags : #Ethereum, #Parity, #Hack, #ETH, #ETC, #Fork, #HardFork, #SoftFork, #Scalability