Le Bitcoin Core atteint par une faille critique corrigée en urgence


Le patch de la version 0.16.3 du Bitcoin Core, a probablement sauvé le Bitcoin d’une crise importante. Elle a permis de corriger, en urgence, la faille CVE-2018-17144, qui rendait le Bitcoin particulièrement vulnérable.
Correction en catastrophe d’une faille du Bitcoin Core
Tout est allé très vite le 17 septembre dernier. Une source anonyme a dévoilé une faille du Bitcoin Core à 14h57 à plusieurs développeurs, faille qui a été corrigée tôt le lendemain, à 00h24. On note notamment le rôle des développeurs de Slush Pool, la plus ancienne pool de minage.
Il n’a même pas fallu 10 heures pour corriger cette faille importante, qui aurait pu avoir des conséquences désastreuses. Encore une fois, la communauté a su prouver sa réactivité et son utilité !
La faille CVE-2018-17144, en détails
Qu’est-ce que la faille CVE-2018-17144 et qu’impliquait-elle pour le Bitcoin ? Deux jours après le lancement du correctif, l’équipe du Bitcoin Core a publié un article complet au sujet de cet incident qui aurait bien pu faire vaciller le Bitcoin mais dont l’ampleur avait prudemment été gardé secret le temps que la faille soit corrigée.
On y apprend que cette faille, présente dans le code depuis deux ans, représentait deux types de vulnérabilité : la première avec la possibilité de réaliser des attaques par déni de service (DoS attack) et l’autre par une inflation critique. En effet, le risque qu’un mineur ayant validé un bloc réalise une double dépense (double-spend) était réel.
Qu’aurait-il pu se passer si la faille du Bitcoin Core n’avait pas été corrigée à temps ? Des mineurs mal intentionnés auraient pu tenter de pratiquer le double spending, engendrant un crash des nœuds utilisant une version Bitcoin Core égale ou supérieure à 0.14.0.
De plus, dans la version 0.15.0 et les versions suivantes, un attaquant aurait pu l'utiliser pour créer de nouveaux bitcoins, amenant le nombre total au-delà du cap des 21 millions, gonflant ainsi l'offre et dévalorisant les bitcoins actuels.
À l’heure actuelle, bon nombre de mineurs sont passés à la version patchée du Bitcoin Core. Un risque de fork existe toujours, mais si cela venait à arriver, la nouvelle blockchain contenant le bug n’aurait aucun intérêt à être suivie. La blockchain du Bitcoin est étroitement surveillée pour le moment, en attendant que l’intégralité des mineurs utilisant le Bitcoin Core optent pour la version corrigée.
Existe-t-il d’autres vulnérabilités et comment s’y préparer ?
Cet incident soulève, en particulier pour les développeurs, de nouvelles questions : peut-il y avoir d’autres faiblesses de cette importance présentes dans le code actuel ? Et, en ce qui concerne les développements futurs, existe-t-il un moyen d’empêcher un bug aussi grave d’être à nouveau inséré dans le code ?
Un challenge pas si évident puisque, comme le fait remarquer un des contributeurs au code Bictoin Core, Greg Maxwell : « Le fait de consacrer plus d'efforts aux tests est un défi à long terme pour nous, en partie parce que l'art et la science des tests ne sont pas moins difficiles que tout autre aspect de l'ingénierie du système. Le test implique des compétences et des aptitudes particulières que tout le monde n'a pas. »
Reste que limiter la responsabilité de toutes les vérifications aux seuls développeurs, comme on a pu le lire en ligne, est exagéré. Dans un système se voulant ouvert et décentralisé, comme le fait remarquer dans un tweet un autre participant au Bitcoin Core, Wladimir van der Laan : « Oui, on a foiré mais le "nous" qui a tout foiré est très large. Toute la communauté a foiré en n’examinant pas suffisamment les changements de consensus. »
De plus, dans tous codes informatiques, quel que soit le niveau et l’intensité des vérifications, le risque d’erreur n’est jamais nul. Et certaines des solutions préconisées, comme l’implémentation de plusieurs codes (existent déjà Bitcoin Knots et Btcd), risquent d’amener autant de problèmes qu’elles n’en résolvent, ne fut-ce que parce que ces différentes implémentations facilitent la partition du réseau pour les attaquants…
Il faudra donc redoubler d’attention, comme le dit le modérateur du subreddit bitcoin Theymos : « Je ne sais pas exactement comment empêcher cela de se reproduire, mais je sais que ce serait une erreur pour la communauté de ne pas tenir compte de ce bug simplement parce qu’il a été inoffensif cette fois ci. »
Disclaimer : ce type d'investissements étant hautement spéculatifs, les divers contenus publiés ici ne constituent en rien une incitation à investir, ni une garantie de succès. Prudence donc. Et si vous décidez de vous lancer, ne le faites qu’avec des montants que vous pouvez vous permettre de perdre.