Un bug sévère sur Bitcoin révélé deux ans après avoir été corrigé

Garder un secret pour mieux agir – Braydon Fuller est ingénieur chez Purse et développeur chez Storj. Javed Khan, quant à lui, est le développeur du protocole Handshake. Les 2 codeurs ont rendu publique une importante vulnérabilité de Bitcoin Core. Un attaquant aurait pu voler des fonds, ralentir le réseau, voire scinder la blockchain.

Un bug de Bitcoin Core découvert 2 ans plus tôt

La vulnérabilité est publique depuis le 9 septembre. Les détails sont dans ce papier. Elle permettait à un attaquant de lancer des attaques par déni de service, et ce, contre n’importe quel nœud du réseau.

Braydon Fuller a découvert cette faille le 22 juin 2018 au sein des versions 0.16.0 et 0.16.1 du logiciel Bitcoin Core. D’autres cryptomonnaies avaient été également affectées :

  • Bitcoin Knots 0.16.0 ;
  • Toutes les versions de Btcd jusqu’à la 0.20.1 ;
  • Toutes les versions bêta de Bcoin jusqu’à la 1.0.0 ;
  • Litecoin Core 0.16.0 ;
  • Namecoin Core 0.16.1 ;
  • Enfin, toutes les versions de Dcrd (Decred) jusqu’à la 1.5.1.

Après sa découverte, Braydon Fuller a immédiatement signalé le problème à l’équipe développant Bitcoin Core. Bien que le logiciel client principal de Bitcoin ait très vite été patché, cela n’a pas été le cas pour d’autres réseaux. Cela explique le délai de plus de 2 ans durant lequel le bug a été gardé secret.

Le déroulé de l’attaque

L’attaque aurait pu être menée en envoyant très rapidement de multiples transactions invalides vers un nœud. Le nœud ciblé aurait alors été incapable de nettoyer sa mémoire de ces transactions invalides. Une fois saturé, le nœud aurait ainsi été paralysé. Cela était donc très risqué pour toutes les solutions de couche secondaires, comme le Lightning Network. L’attaquant aurait pu profiter de la faille pour voler les fonds des nœuds en ouvrant un canal Lightning.

« Il n’existait aucun mécanisme pour s’assurer que les détails d’une transaction en attente étaient valides ou non. Dans certains cas, vous pouviez remplir la mémoire distante avec des transactions invalides. », Javed Khan

Dans leur papier, les 2 développeurs indiquent qu’à leur connaissance, cette vulnérabilité n’a pas été exploitée. C’est une chance, car le bug était présent depuis novembre 2017 dans Bitcoin Core. Heureusement, le développeur Matt Corallo s’est chargé de le corriger.

Morgan Phuc

Cofounder @ 8Decimals - Partner @ Node Guardians - Journal du Coin / Trading du Coin / BitConseil