Parity est un éditeur de portefeuilles dits multi-signatures de gestion de cybermonnaies, en l’occurrence d’Ether. C’est-à-dire que plusieurs personnes partagent un portefeuille commun, et qu’il nécessite donc l’approbation des propriétaires pour débloquer les fonds. C’est le principe développé par Parity, qui est très utilisé pour les levées de fonds en cybermonnaies par exemple.
Pour comprendre ce qu’il s’est passé le 7 novembre, il faut remonter à juillet dernier. A l’époque, une première faille avait touché les portefeuilles multi-signatures de Parity : elle permettait de connaître les propriétaires, de s’approprier un smart contract et donc les fonds qui y étaient déposés. Parity avait assez rapidement corrigé la faille en diffusant un correctif le 20 juillet. C’est sur cette version qu’une seconde faille a été découverte le 7 novembre par un curieux hasard.
Ce qu’il s’est vraiment passé
« Les portefeuilles de Parity se basent sur un smart contract générique qui est lui-même appelé par les autres portefeuilles des utilisateurs. A l’inverse de la faille de juillet, qui permettait de connaître les constructeurs d’un smart contract, cette nouvelle faille permet de révéler le destructeur. C’est-à-dire que chaque smart contract dispose d’une fonction « safe destruct » qui comme son nom l’indique permet de supprimer le smart contract de la blockchain et de récupérer les fonds qu’il héberge », nous explique Renaud Lifchitz, consultant chez Digital Security.
I accidentally killed it.https://t.co/5aAgksvKgH
— devops199 (@devops199) 7 novembre 2017
Ce qui s’est passé hier n’est pas banal. En l’occurrence, c’est un utilisateur qui dit avoir fait la manipulation accidentellement. Ce faisant, il a bloqué l’intégralité des fonds déposés dans les portefeuilles Parity. Cela représente selon nos informations environ 930 000 Ether, soit un peu moins de 300 millions de dollars. En « tuant » le smart contract générique de Parity, les portefeuilles créés après le 20 juillet sont donc désormais muets puisqu’ils « appellent une fonction qui n’existe pas », ajoute Renaud Lifchitz.
Plusieurs solutions envisagées
On ne peut évidemment pas laisser des centaines de millions de dollars dans la nature. En revanche, pour le moment, aucune solution n’a été trouvée. Dans un communiqué diffusé hier, Parity écrit : « nous continuons d’investiguer et de considérer tant les possibles implications que les différentes options » pour résoudre ce problème. En revanche, l’éditeur affirme que les fonds ne peuvent pas être bougés.
This froze funds in all Parity multi-sig wallets deployed after 20 July. We are analysing the situation and release further details shortly.
— Parity Technologies (@ParityTech) 7 novembre 2017
Plusieurs solutions sont envisagées. La première, certainement la plus triviale, serait de trouver une faille et donc d’accéder aux portefeuilles de manière détournée afin de récupérer les fonds. « Pas si simple, puisque les smart contacts sont très sécurisés », rappelle Renaud Lifchitz. Deuxième solution : un hard fork, c’est-à-dire un changement radical du protocole et qui nécessite une mise à jour de tous les nœuds du système. C’est le choix qu’avait fait The DAO en juin 2016, créant une énorme défiance de la part de la communauté. Enfin, le troisième choix a été proposé par Vitalik Butterin, le créateur d’Ethereum : il s’agit d’une amélioration intrinsèque du protocole Ethereum qui consiste à créer une porte de sortie générique pour éviter le gel des fonds. Cette solution, considérée comme étant la plus consensuelle, entraînerait la création d’un hard fork générique.
D’autres options seraient également à l’étude chez Parity, qui joue ici sa réputation voire sa survie. L’issue de cette histoire aura fatalement des répercussions, non seulement sur les cybermonnaies mais aussi sur les ICO, les levées de fonds en cybermonnaies.