Crypto : Bitcoin Core 32.0 arrive le 10 octobre avec deux failles bouchées

Le logiciel qui fait tourner le bitcoin est entré lundi dans sa dernière ligne droite. La première version candidate de Bitcoin Core 32.0 a été publiée le 14 septembre, et si les tests ne réservent pas de mauvaise surprise, la version définitive tombera le 10 octobre. Pour la plus grande partie du monde, c'est une ligne dans le journal de bord de quelques développeurs bénévoles. Pour ceux qui font tourner le réseau chez eux, c'est la mise à jour la plus intéressante depuis des mois : trois fois moins d'attente pour rejoindre la machine, deux trous rebouchés, et un changement de format qui va réveiller des informaticiens en pleine nuit.

Petit rappel pour situer, parce qu'un numéro de version ne dit rien à personne. Bitcoin n'a pas de serveur central. Le grand livre des transactions existe en des milliers de copies, chez des gens qui installent un programme sur leur ordinateur, le laissent tourner en permanence, et vérifient chacun pour soi que tout ce qui circule est bien réglo. Ce programme, c'est Bitcoin Core chez la très grande majorité d'entre eux. Il n'est pas obligatoire, personne ne vous force à l'installer, mais c'est lui qui tient la comptabilité et qui décide ce qui est une transaction valide et ce qui n'en est pas une.

Quand un logiciel pareil change de version, ce n'est pas une application qui fait peau neuve. C'est une pièce de plus dans la machine qui tient le réseau debout. Et cette fois, bonne nouvelle, les règles de validation ne bougent pas d'un millimètre. Le travail s'est fait ailleurs : dans la vitesse, dans les frais, et dans deux failles.

Trois fois moins d'attente pour rejoindre le réseau

Quand vous installez le logiciel sur une machine neuve, il ne commence pas par vous dire bonjour. Il se met à relire tout l'historique des transactions depuis 2009, bloc par bloc, avant de pouvoir servir à quoi que ce soit. C'est ce qu'on appelle se synchroniser, et c'est long. Des jours, sur un disque normal, pendant lesquels la machine souffle et vous n'avez rien en échange.

C'est ce moment-là que la version 32 accélère. Jusqu'ici, le programme allait chercher les informations dont il avait besoin une par une, en faisant la queue à chaque fois. Il les demande maintenant plusieurs à la fois. Les tests des développeurs donnent une synchronisation jusqu'à trois fois plus rapide.

Trois fois, ça a l'air de rien, dit comme ça. C'est en réalité le genre de détail qui décide si quelqu'un laisse tomber au bout de deux jours ou s'il va au bout. Vérifier soi-même que ses bitcoins sont bien à soi, sans faire confiance à une plateforme d'échange, n'a jamais été une partie de plaisir. Chaque heure gagnée là-dessus, c'est une raison de moins de laisser quelqu'un d'autre le faire à sa place.

Un trou de mémoire trouvé avec un modèle d'IA

La partie amusante de cette version, c'est qu'une des deux failles a été débusquée à l'aide d'un modèle d'IA. Un contributeur du projet, Matthew Zipkin, passait au crible le nouveau serveur web du logiciel, celui qui lui permet de discuter avec le monde extérieur. Il s'est fait aider par Kimi K3, un modèle qui n'est pas de la famille de ceux que j'utilise tous les jours, et le duo a trouvé une manière de faire enfler la mémoire de la machine jusqu'à l'étouffer.

Le détail qui fait mal : la correction a d'abord réglé la moitié du problème, et c'est un relecteur, en regardant le correctif de près, qui a vu que des connexions sans le moindre identifiant pouvaient encore faire gonfler la mémoire. Après révision, seize connexions anonymes pendant quatre-vingt-dix secondes font grossir le programme de trois mégaoctets. Avant, les mêmes seize connexions et les mêmes quatre-vingt-dix secondes lui faisaient avaler trois gigaoctets deux dixièmes. Mille fois moins, pour la même méchanceté.

Mémoire consommée par 16 connexions anonymes, avant et après le correctif

De quoi transformer une machine qui rend service en machine qui ne répond plus, en une minute et demie, sans aucun compte à créer

Le correctif est fusionné depuis le 5 septembre. Deux choses à en retenir, et la seconde compte plus que la première. Un modèle d'IA a servi à relire du code ancien et à trouver ce que des humains avaient laissé passer, ça devient une habitude et ce n'est pas une mauvaise nouvelle. Et la correction intermédiaire qui ne corrigeait qu'à moitié rappelle que fermer une porte demande de vérifier la poignée après, pas seulement de la claquer.

Un bureau de travail la nuit, écran allumé et carnet de notes ouvert

Un contributeur, un modèle, et un trou que personne n'avait vu depuis des mois

L'autre faille se cachait dans un fichier de conf

La seconde est plus sournoise, et elle traînait depuis la version 24.0 sur toutes les machines qui ne tournent pas sous Windows. Elle concerne une option que les exploitants de nœuds adorent parce qu'elle rend des services : elle leur permet de demander à la machine d'exécuter une commande à eux dès qu'une transaction touche leur portefeuille. Prévenu à temps, on peut déclencher une alerte, réveiller un script, faire ce qu'on veut.

# dans bitcoin.conf
walletnotify=/usr/local/bin/prevenir.sh %s

Le problème, c'est que le nom du portefeuille qui déclenche la commande était recopié sans être nettoyé. Un portefeuille baptisé avec une formule bien choisie pouvait donc faire exécuter autre chose que le script prévu, sur la machine de celui qui l'héberge. Il fallait pour cela être déjà un utilisateur reconnu du nœud, ce qui limite les dégâts, mais la porte était ouverte et elle l'est restée pendant huit versions majeures. Elle est fermée.

Deux trous refermés d'un coup dans un logiciel qui fait tourner un réseau entier, ça s'est déjà vu le mois dernier du côté de BNB Chain, et à chaque fois le scénario est le même : ce n'est jamais la faille spectaculaire qui coûte cher, c'est le détail que personne n'avait regardé.

Le piège arrive après, et il est pour les autres logiciels

Voilà la partie que les développeurs vont maudire et que je trouve, moi, plutôt saine. Quatre commandes du logiciel changent de format par défaut le 10 octobre. Elles servent à échanger une transaction à moitié signée entre un portefeuille et l'appareil qui détient la clé, cette espèce de formulaire que les deux se passent dans les mains pour que la signature se pose au bon endroit.

Les applications peuvent toujours demander l'ancien format, donc rien ne casse du jour au lendemain pour l'utilisateur qui a une appli à jour. Mais les plateformes d'échange, les services de dépôt et les fabricants de portefeuilles qui parlent à Bitcoin Core en direct ont intérêt à tester la version candidate maintenant, pas à découvrir le changement le 11 octobre au matin avec des clients mécontents. Le projet leur dit la même chose, en termes diplomatiques : essayez avant.

Deux mains se passent un formulaire plié et une enveloppe kraft

Le formulaire passe de main en main, sauf que si la version change en cours de route, la signature arrive au mauvais endroit

C'est exactement ce qu'on demande à une mise à jour de faire. Prévenir assez tôt pour que le travail se fasse en semaine, et pas un dimanche soir.

Concrètement, ça change quoi pour toi ?

Si tu as des bitcoins sur une plateforme d'échange et que tu n'installes jamais rien, aujourd'hui rien. Absolument rien. Tu n'as pas de copie du grand livre à maintenir, et le travail des autres ne t'atteint que si leur logiciel casse, ce qui est précisément la raison pour laquelle on leur demande de tester avant octobre.

Si tu fais tourner le logiciel chez toi, en revanche, tu as une date. Le 10 octobre, ou quelques jours après si un test tourne mal, c'est le moment de passer à la 32.0. Pas avant : une version candidate est faite pour être essayée, pas pour garder vos économies. Et pour ceux qui hésitaient à se lancer parce que la synchronisation prenait une éternité, ce sera l'occasion de réessayer, sur le vieux boîtier qui dort dans un placard.

Une honnêteté pour finir : les tarifs des frais ont aussi été retravaillés. Le programme sait maintenant estimer le prix d'une transaction en regardant celles qui attendent leur tour, et non plus seulement les blocs déjà remplis. Sur un réseau peu chargé, il proposera moins cher, ce qui est une vraie amélioration pour qui envoie trois transactions par mois et pleurait sur chaque facture.

Reste une question que personne ne posera avant qu'elle fasse mal : combien de ces vieux logiciels qui font tourner le réseau n'ont jamais reçu une seule mise à jour depuis « walletnotify » ? Un nœud oublié sur un vieux disque, ça ne se plaint jamais, ça ne redémarre jamais, et ça garde la porte entrouverte pendant des années.

Rejoignez la conversation

Vous devez avoir un compte pour commenter cet article. La création est gratuite et prend moins d'une minute.

  • Le fichier XMLTV à télécharger gratuitement, chaque jour
  • Commenter les articles et répondre aux autres lecteurs
  • Être averti par e-mail des nouveaux articles que vous suivez

Aucun commentaire pour le moment.

Une erreur s'est produite. Cette application peut ne plus répondre jusqu'à ce qu'elle soit rechargée.Veuillez contacter l'auteur. Reload 🗙