Une faille de sécurité critique dans le logiciel Bitcoin Core a été dévoilée aujourd’hui par ses développeurs. Identifiée sous le nom de CVE-2024-52911, cette vulnérabilité permettait à des mineurs malveillants d’écraser à distance des nœuds Bitcoin et d’exécuter du code arbitraire sur ces machines.
Selon les informations communiquées, l’exploitation de cette faille nécessitait des ressources considérables : un attaquant devait mobiliser une puissance de hachage massive pour miner des blocs spécifiques, sans possibilité de rentabiliser ces coûts via une récompense de bloc. En effet, ces blocs invalidés ne pouvaient pas être validés par le réseau et ne généraient donc aucun gain financier.
Malgré son coût prohibitif, la méthode d’attaque était techniquement simple. Un mineur pouvait produire un bloc spécialement conçu avec une preuve de travail suffisante pour soit crash les nœuds ciblés, soit prendre le contrôle de leur mémoire afin d’y injecter et d’exécuter du code à distance. Bien que Bitcoin Core ait confirmé la possibilité d’une exécution de code à distance, aucun cas d’exploitation réelle n’a été signalé à ce jour.
Un bug de type « use-after-free » dans le moteur de validation
L’équipe de développement a décrit cette faille comme un bug de type « use-after-free » dans l’interpréteur de scripts de Bitcoin Core. Lors de la validation des blocs, le logiciel pré-calcule et met en cache les données d’entrée des transactions avant de les transmettre à des threads en arrière-plan pour validation. Si un attaquant exploite la faille CVE-2024-52911, le nœud peut continuer à lire des données depuis sa mémoire cache après que celles-ci aient été libérées par un autre processus.
Cette situation anormale crée une faille de sécurité critique : un thread de validation de script en arrière-plan pourrait lire des données de transaction déjà détruites, ouvrant la porte à une exécution de code à distance. Plus précisément, l’exploitation réussie dépendait de la lecture par le nœud de données de transaction précomputées et mises en cache, après leur destruction par le processus CScriptCheck.
43 % des nœuds Bitcoin toujours vulnérables
Bien que la faille ait été corrigée dans les versions récentes de Bitcoin Core (à partir de la v29), une part importante du réseau reste exposée. Selon les estimations, jusqu’à 43 % des nœuds Bitcoin fonctionnent encore avec des versions vulnérables (antérieures à la v29). La mise à jour des nœuds complets étant facultative et non automatique, de nombreux opérateurs n’ont pas encore appliqué le correctif.
Cette situation rappelle l’importance de maintenir à jour les infrastructures critiques, même dans un écosystème aussi décentralisé que Bitcoin.
Une découverte et un correctif rapides en 2024
La faille a été détectée dès novembre 2024 par le développeur Cory Fields, qui l’a signalée de manière responsable. Quatre jours plus tard, Pieter Wuille a proposé un correctif via la Pull Request (PR) 31112, intitulée « Améliorer la journalisation des erreurs de validation des scripts en parallèle ». Le correctif a été présenté comme une simple mise à jour de maintenance, masquant ainsi la criticité de la vulnérabilité corrigée.
Cette faille marque une première pour Bitcoin Core en deux ans : il s’agit du premier bug de sécurité lié à la gestion de la mémoire signalé publiquement, selon les déclarations de Niklas Gögge, développeur chez DCI.