Plus de 50 ans après le premier message inter-réseau, les réseaux peer-to-peer restent des bêtes rares dans la jungle d’Internet. La capacité de Bitcoin à fournir un système monétaire ouvert dépend de son architecture peer-to-peer, et sur sa surface d’attaque, c’est la couche réseau (la façon dont les pairs se découvrent et se connectent les uns aux autres) qui est la plus vulnérable. Les problèmes peuvent survenir principalement à deux endroits : le propre protocole de peering de Bitcoin et les protocoles Internet dont dépend le protocole de Bitcoin. Dans cette optique, Core a un double mandat : empêcher les vecteurs de déni de service (DOS) qui peuvent être abusés entre les nœuds et permettre aux nœuds de communiquer en toute sécurité dans l’environnement conflictuel plus large qu’est Internet.
P2P
« Les gouvernements sont doués pour couper les têtes de réseaux contrôlés de manière centralisée comme Napster, mais les réseaux purement P2P comme Gnutella et Tor semblent tenir le coup. »
– Satoshi, 7 novembre 2008 [1]
Le protocole P2P englobe la manière dont les nœuds échangent des messages sur les transactions, les blocs et d’autres pairs. Cet échange d’informations est requis avant qu’une transaction ou une validation de consensus puisse avoir lieu et constitue donc une préoccupation majeure.
Il y a eu plusieurs bugs dans ce domaine au fil des années. En 2017, par exemple, une vulnérabilité malveillante du serveur SOCKS a été corrigée et divulguée. [2]. Cette vulnérabilité de type « buffer overflow » pourrait théoriquement conduire à de nombreuses attaques différentes : planter le nœud, injecter des charges utiles malveillantes ou modifier les données sur le nœud. En 2020, une vulnérabilité de haute gravité a été signalée et corrigée. Elle permettait à un homologue distant de se voir bannir des adresses, augmentant ainsi la liste de bannissement de quadratique, et constitue donc un DOS sur le nœud. [3]. La vulnérabilité n’a été divulguée qu’en 2024. Ce bug est correctement marqué comme « haute gravité » car l’attaque est simple à exécuter, son effet entraîne une perte de fonction pour le nœud et elle nécessite peu de conditions préalables pour le faire fonctionner. C’est le genre de bugs qui empêchent les développeurs Core de dormir la nuit, et pourquoi il est fortement encouragé à mettre à jour votre nœud vers une version toujours maintenue (les anciennes versions de Core ne sont pas activement maintenues/mises à jour).
Ce réseau distribué que nous appelons Bitcoin reste relativement petit : le nombre de nœuds Clearnet oscille autour de 20 000 nœuds, et même en supposant un généreux nœud TOR de 100 000, nous disposons toujours d’un petit réseau facilement contrôlable. Récemment, Daniela Brozzoni et Naiyoma ont montré [4] que si un nœud fonctionne avec Clearnet et Tor, il est trivial de mapper les adresses IPv4 et Tor d’un nœud. Il est très probable que cela soit déjà fait par les agences de renseignement et les sociétés d’analyse de chaîne. Il devient alors facile de remarquer quels nœuds publient quelles transactions en premier, en déduisant l’adresse IP d’origine de la transaction, et donc son emplacement. Bien qu’il ne s’agisse pas d’un bug en soi, puisque le nœud ne plante pas ou ne se comporte pas mal, cela peut être considéré comme une vulnérabilité, car il présente une méthode permettant de lier une adresse IP donnée à une transaction.
Comment prévenir efficacement cela est actuellement une question ouverte.
Les badlands du Web
« Nous construisons nos ordinateurs comme nous construisons nos villes. Au fil du temps, sans plan, sur des ruines. » – Ellen Ullman [5]
Bitcoin fonctionne sur Internet et sa capacité à rester un système distribué et décentralisé dépend des propriétés d’Internet lui-même. Malheureusement, l’architecture d’Internet telle que nous la connaissons aujourd’hui reste terriblement peu sécurisée, et des attaques connues sont régulièrement utilisées. La plupart de ces attaques sont menées sans être détectées jusqu’à ce que les dégâts soient causés, sans parler des régimes de surveillance qui imprègnent Internet aujourd’hui.
Le vecteur d’attaque le plus connu et le plus pratique à prendre en compte est appelé attaque par éclipse, dans lequel les pairs d’un nœud victime sont tous malveillants et transmettent une vue spécifique de la chaîne ou du réseau au nœud victime. Cette classe d’attaque est fondamentale dans les systèmes distribués : si vous contrôlez les pairs d’un nœud, vous contrôlez sa connaissance du réseau. Ethan Heilman et ses collaborateurs ont présenté l’une des premières attaques pratiques d’éclipse contre Bitcoin à USENIX 2015. [6]et en 2018, le document sur l’attaque d’Erebus a décrit une attaque d’éclipse « furtive » via un système autonome (AS) malveillant. [7].
Ces attaques exploitent largement les faiblesses de la manière dont les réseaux Internet communiquent entre eux, comme la topologie de routage des AS ou via un protocole appelé Border Gateway Protocol (BGP). Bien qu’il existe des initiatives en cours pour sécuriser le protocole BGP (BGPsec, RPKI), elles ont toutes deux des limites qui sont bien comprises et qui laissent les responsables d’Internet en quête de solutions plus solides. D’ici là, Internet restera le Far West.
Une analyse récente réalisée par Cedarctic chez Chaincode Labs a révélé que les nœuds Bitcoin sont hébergés dans seulement 4 551 AS, une sous-section assez petite des réseaux constitutifs qui composent Internet. Ils décrivent un ensemble d’attaques pouvant conduire à des attaques d’éclipse en compromettant l’AS en amont dans lequel les nœuds opèrent. [8]. La faible répartition des nœuds parmi les AS et les relations spécifiques entre ces AS créent un vecteur d’attaque unique. Bien qu’il existe des solutions, il n’est pas clair si ce vecteur d’attaque a été bien compris au préalable par les bitcoiners ou leurs adversaires.
Toute attaque reposant sur la compromission d’un ou de plusieurs AS nécessite des ressources, de la coordination et des compétences. Bien qu’aucune attaque réussie de ce type n’ait été signalée sur un nœud Bitcoin, de telles attaques ont été lancées avec succès contre des mineurs. [9]portefeuilles [10]échanger des plateformes [11]et des ponts [12]. Même si nous n’allons pas réparer Internet, nous pouvons doter les nœuds des outils nécessaires pour fonctionner dans cet environnement conflictuel.
Armurerie réseau
Vous trouverez ci-dessous quelques caractéristiques et fonctionnalités pour lesquelles Bitcoin Core a développé ou intégré la prise en charge afin de protéger les utilisateurs contre les attaques au niveau du réseau :
TOR (le routeur à oignons) est le plus ancien réseau superposé axé sur la confidentialité intégré à Bitcoin Core. Il crée des sauts entre un réseau aléatoire de pairs pour obscurcir le trafic.
v2transport [13] crypte les connexions entre pairs, cachant le trafic aux espions et aux censeurs. L’objectif est d’empêcher les observateurs passifs du réseau de surveiller le contenu de vos communications avec d’autres nœuds.
I2P (le projet Internet invisible) [14]) est une fonctionnalité facultative de Core qui permet d’ajouter une couche supplémentaire, privée et cryptée à ses connexions. Il s’agit d’un réseau anonyme de type Tor qui s’appuie sur des pairs pour masquer le trafic entre les clients et les serveurs.
ASmap [15] est une autre fonctionnalité facultative de Core qui implémente une atténuation de l’attaque Erebus que les auteurs ont déjà décrite dans l’article et qui s’applique à toutes les attaques basées sur AS. En rendant le mécanisme de peering de Bitcoin conscient de l’AS d’où proviennent les pairs pour garantir la diversité entre les pairs, une éclipse devient exponentiellement plus difficile, car un attaquant devrait compromettre de nombreux AS, ce qui est très improbable et presque impossible sans être détecté. Bitcoin Core prend en charge la création d’une carte des réseaux IP vers leur AS (une AS-map) depuis Core 20.0, et le projet Kartograf permet à tout utilisateur de générer facilement une telle ASmap.
Étant donné qu’Internet restera probablement vulnérable à de nombreuses attaques, l’une des choses que nous pouvons faire est d’observer le comportement de nos pairs pour tenter de détecter les comportements malveillants. C’est l’impulsion qui sous-tend le projet pair-observateur par 0xb10c [16]. Il fournit un système de journalisation complet basé sur les points de trace eBPF (un moyen d’observer les plus petites actions d’un programme exécuté sur un système d’exploitation) pour observer l’activité d’un nœud, y compris le comportement des pairs. Il vous donne également tout ce dont vous avez besoin pour créer vos propres systèmes de journalisation.
Bitcoin doit être robuste
Garantir la capacité de se connecter à des pairs et d’échanger des messages est un élément clé de ce qui fait fonctionner Bitcoin.
Bitcoin opère dans un environnement conflictuel multidimensionnel, dans lequel de nombreuses menaces sont créées par les limitations de l’architecture Internet elle-même. Si Bitcoin veut survivre et prospérer, ses développeurs et ses utilisateurs doivent apprendre à naviguer dans ces eaux étranges.
Le prix des réseaux ouverts est une vigilance éternelle.

Ne manquez pas votre chance de posséder La question centrale — présentant des articles rédigés par de nombreux développeurs principaux expliquant les projets sur lesquels ils travaillent eux-mêmes !
Cet article est la lettre de l’éditeur présentée dans la dernière édition imprimée du magazine Bitcoin, The Core Issue. Nous le partageons ici comme un premier aperçu des idées explorées tout au long du numéro complet.
[0] https://web.mit.edu/gtmarx/www/connect.html
[1] https://satoshi.nakamotoinstitute.org/emails/cryptography/4/
[2] https://bitcoincore.org/en/2019/11/08/CVE-2017-18350/
[3] https://bitcoincore.org/en/2024/07/03/disclose-unbounded-banlist/
[4] https://delvingbitcoin.org/t/fingerprinting-nodes-via-addr-requests/1786/
[5] https://en.wikiquote.org/wiki/Ellen_Ullman
[6] https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-heilman.pdf
[7] https://ihchoi12.github.io/assets/tran2020stealthier.pdf
[8] https://delvingbitcoin.org/t/eclipsing-bitcoin-nodes-with-bgp-interception-attacks/1965
[9] https://www.theregister.com/2014/08/07/bgp_bitcoin_mining_heist/
[10] https://www.theverge.com/2018/4/24/17275982/myetherwallet-hack-bgp-dns-hijacking-stolen-ethereum
[11] https://medium.com/s2wblog/post-mortem-of-klayswap-incident-through-bgp-hijacking-en-3ed7e33de600
[12] www.coinbase.com/blog/celer-bridge-incident-analysis
[13] https://bitcoinops.org/en/topics/v2-p2p-transport/
[14] https://geti2p.net/fr/
[15] https://asmap.org
[16] https://peer.observer
[13] https://github.com/asmap/kartograf