Bitcoin Core : : CVE-2018-17144 Divulgation complète


CVE-2018-17144, dont un correctif a été publié le 18 septembre dans les versions 0.16.3 et 0.17.0rc4 de Bitcoin Core, inclut à la fois un composant de déni de service et une vulnérabilité d’inflation critique. Il a été initialement signalé à plusieurs développeurs travaillant sur Bitcoin Core, ainsi qu’à des projets prenant en charge d’autres crypto-monnaies, y compris ABC et Unlimited le 17 septembre en tant que bogue de déni de service uniquement.

Afin d’encourager des mises à niveau rapides, la décision a été prise de corriger et de divulguer immédiatement la vulnérabilité de déni de service la moins grave. les entreprises et les autres systèmes concernés tout en retardant la publication du numéro complet pour donner aux systèmes le temps de améliorer. Le 20 septembre, un message dans un forum public a rapporté le plein impact et bien qu’il ait été rapidement retiré, la réclamation a été diffusée.

À l’heure actuelle.

Bitcoin Core : : CVE-2018-17144 Divulgation complète

Cependant, il reste essentiel que les utilisateurs concernés mettent à niveau et appliquent les derniers correctifs pour s’assurer qu’aucune possibilité de réorganisations importantes, d’extraction de blocs invalides ou d’acceptation de transactions invalides ne se produise.

Dans Bitcoin Core 0.14, une optimisation a été ajoutée (Bitcoin Core PR #9049) qui a évité une vérification coûteuse lors de la validation initiale du bloc de pré-relais que plusieurs entrées dans une même transaction n’ont pas dépensé deux fois la même entrée qui a été ajoutée en 2012 (PR # 443). Bien que la logique de mise à jour UTXO ait suffisamment de connaissances pour vérifier qu’une telle condition n’est pas violée dans la version 0.14, elle ne l’a fait que dans une assertion de contrôle d’intégrité et non avec une gestion complète des erreurs (elle a cependant entièrement géré ce cas deux fois avant la version 0.8 ).

Ainsi, dans Bitcoin Core 0.14.X, toute tentative de double dépense d’une sortie de transaction dans une seule transaction à l’intérieur d’un bloc entraînera un échec d’assertion et un plantage, comme cela avait été initialement signalé.

Dans Bitcoin Core 0.15. l’assertion a été modifiée subtilement. Au lieu d’affirmer que la production marquée comme dépensée n’était pas dépensée auparavant, elle affirme seulement qu’elle existe.

Ainsi, dans Bitcoin Core 0.15.X, 0.16.0, 0.16.1 et 0.16.2, toute tentative de double dépense d’une sortie de transaction dans une seule transaction à l’intérieur d’un bloc où la sortie dépensée a été créée dans le même bloc, le même échec d’assertion se produira (comme dans le scénario de test inclus dans le correctif 0.16.3). Cependant, si la sortie en double dépense a été créée dans un bloc précédent, une entrée restera toujours dans la carte CCoin avec l’indicateur DIRTY défini et ayant été marquée comme dépensée, ce qui n’entraînera aucune affirmation de ce type. Cela pourrait permettre à un mineur de gonfler l’offre de Bitcoin car il pourrait alors réclamer la valeur dépensée deux fois.

Chronologie du 17 septembre 2018  : (toutes les heures UTC)

  • 14 :: Pieter Wuille, Greg Maxwell, Wladimir Van Der Laan de Bitcoin Core, deadalnix de Bitcoin ABC et malade de Bitcoin Unlimited
  • 15 :15 Greg Maxwell partage le rapport original avec Cory Fields, Suhas Daftuar, Alex Morcos et Matt Corallo
  • 17 :47 Matt Corallo identifie un bug d’inflation
  • 19 :15 Matt Corallo essaie d’abord de joindre le PDG de slushpool pour avoir une ligne de communication ouverte pour appliquer un patch rapidement
  • 19 :29 Greg Maxwell horodate le hachage d’un cas de test qui démontre la vulnérabilité à l’inflation ()
  • 20 :15 John Newbery et James O’Beirne sont informés de la vulnérabilité afin qu’ils puissent aider à alerter les entreprises d’un correctif en attente pour une vulnérabilité DoS
  • 20h30 Matt Corallo s’entretient avec le directeur technique et le PDG de slushpool et partage le patch avec la divulgation du déni de service
  • 20 :48 slushpool confirmé mis à niveau
  • 21h08 Une alerte a été envoyée à Bitcoin ABC qu’un patch sera publié publiquement à 22h00
  • 21 :57 Bitcoin Core PR 14247 publié avec un correctif et un test démontrant le bogue de déni de service
  • 21 :58 Bitcoin ABC publie son patch
  • 22 :, entre autres
  • 23 :21 Bitcoin Core version 0.17.0rc4 étiqueté

18 septembre 2018  :

  • 00 :24 Bitcoin Core version 0.16.3 étiqueté
  • 20 :44 Les binaires de sortie de Bitcoin Core et les annonces de sortie étaient disponibles
  • 21 :47 Bitcointalk et reddit ont des bannières publiques incitant les gens à se mettre à jour

19 septembre 2018  :

  • 14 :06 La liste de diffusion distribue un message supplémentaire incitant les gens à se mettre à jour par Pieter Wuille

20 septembre 2018  :

  • 19h30 David Jaenson a découvert la vulnérabilité de manière indépendante,