Une transaction frauduleuse paralyse les utilisateurs occasionnels de logiciels Bitcoin
Une erreur commise par un développeur de portefeuille Bitcoin a empêché les gens de redémarrer leur logiciel client Bitcoin cette semaine.
Plusieurs versions du client Bitcoin ont commencé à échouer cette semaine, après qu'une transaction malveillante a empêché les utilisateurs de redémarrer le logiciel.
Les problèmes sont apparus pour la première fois tôt lundi matin, heure des États-Unis, avec unmessage sur le forum Bitcoin Talk.
« Je viens d'ouvrir mon ordinateur portable et de lancer Bitcoin QT. J'ai reçu le message « Blockchain corrompue ». J'ai cliqué sur OK et le message « Réindexation des blocs - 204 semaines » s'affiche. « De plus, mes bitcoins ne sont pas confirmés. Que s'est-il passé ? Pourquoi ce message ? »
D'autres ont rapidement signalé la même erreur sur plusieurs ordinateurs exécutant différentes versions de Bitcoin-QT, la version standard du client Bitcoin avec interface utilisateur graphique (GUI). La réindexation des blocs via le client Bitcoin n'a pas résolu le problème. Le même problème a affecté Bitcoind, la version du client sans interface graphique.
Le problème était le résultat d'un bug introduit à l'origine dans la version 0.8.0 du client Bitcoin , qui était première sortieEn février, cette version était une version majeure, qui a remplacé la base de données utilisée pour stocker la blockchain par Berkeley DB à LevelDB, afin de résoudre un problème de sécurité.
« Il s'agit d'un bug dans notre code qui vérifie les incohérences de la base de données LevelDB, introduit lors du passage au stockage LevelDB dans la version 0.8.0, ainsi que d'un bug qui vérifie le numéro de version des transactions », a déclaré Gavin Andresen, développeur en chef. « Une transaction avec un numéro de version erroné a déclenché le problème. »
Gregory Maxwell, un autre membre de l'équipe de développement CORE , a publié un solution de contournement Pour le problème d'hier matin, il a expliqué à CoinDesk que depuis la version 0.8.0, le logiciel stockait incorrectement les transactions avec des numéros de version négatifs dans la version locale de la blockchain.
« Ce comportement incorrect est, en soi, inoffensif et jusqu'à hier, il n'y avait eu aucune transaction avec une version négative. »
Cependant, lundi, une telle transaction a été libérée et stockée dans le client. Comme le logiciel applique une vérification rigoureuse de la cohérence de la base de données à chaque démarrage, il a refusé de démarrer après l'inclusion de ces transactions dans la chaîne, a-t-il expliqué.
Ni Andresen ni Maxwell n'ont déclaré avoir constaté de perturbation significative du réseau. Andresen a souligné que cela n'affecte T les infrastructures réseau les plus importantes et critiques, telles que les pools de minage, les commerçants ou les plateformes d'échange, car ils ont tendance à KEEP leur logiciel Bitcoin en fonctionnement, généralement avec plusieurs nœuds.
« Étant donné que le problème est facilement résolu (une fois que vous avez trouvé des instructions), je pense que cela signifie qu’il s’agit probablement d’une source de frustration bien plus importante que d’une véritable perturbation », a déclaré Maxwell.
Alors, d'où venaient les transactions ? Maxwell a remonté la piste jusqu'à des adresses réutilisées. Il a pointé du doigt un développeur de portefeuille Bitcoin , dont le logiciel ne parvenait pas à initialiser la version avant d'envoyer une transaction. « C'est une erreur difficile à commettre, surtout en code C », a-t-il déclaré, ajoutant que la page Github du portefeuille est désormais hors ligne. « Peut-être l'a-t-il mis hors ligne à cause de ce bug. »
Ce bug était peut-être simplement frustrant, mais il montre aussi comment des attaques réseau peuvent être lancées – même par inadvertance et sans malveillance – en générant simplement une transaction qui perturbe le système grâce à un bug persistant. Dans ce cas, il s'agissait simplement d'une transaction malformée, déformant une donnée non utilisée activement par le client Bitcoin .
« Si l'erreur avait été présente dans un élément utilisé, il s'agirait d'un bug très grave, générateur d'un fork », a déclaré Maxwell. Cela nécessiterait cependant une vulnérabilité correspondante dans le code.
L'équipe de développement CORE travaille actuellement sur un correctif. « Une fois que nous serons certains d'avoir trouvé une solution efficace et que le problème ne pourra T être déclenché d'une autre manière, nous publierons une version 0.8.5 », a conclu Andresen.
Danny Bradbury
Danny Bradbury est écrivain professionnel depuis 1989 et travaille en freelance depuis 1994. Il couvre la Technologies pour des publications telles que le Guardian.
