Le problème central : votre nœud contre la wilderness numérique

Plus de 50 ans après le premier message inter-réseaux, 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 toute sa surface d’attaque, c’est la couche réseau — comment les pairs découvrent et se connectent entre eux — qui est la plus vulnérable. Il existe deux principaux endroits où des problèmes peuvent survenir : le protocole de pairage de Bitcoin lui-même, et les protocoles Internet dont dépend le protocole Bitcoin. Dans cette optique, Core a un double mandat : prévenir les vecteurs de déni de service (DOS) qui peuvent être exploités entre les nœuds, et permettre aux nœuds de communiquer en toute sécurité dans l’environnement adversarial plus large qu’est Internet.

P2P

« Les gouvernements sont bons pour couper la tête de réseaux contrôlés centralement comme Napster, mais les réseaux purement P2P comme Gnutella et Tor semblent tenir bon. »

– Satoshi, 7 novembre 2008 [1]

Le protocole P2P englobe la façon dont les nœuds échangent des messages concernant les transactions, les blocs et d’autres pairs. Cet échange d’informations est nécessaire avant que toute transaction ou validation de consensus puisse avoir lieu, c’est donc une préoccupation majeure.

Au fil des années, plusieurs bugs ont été détectés dans ce domaine. Par exemple, en 2017, une vulnérabilité malveillante dans un serveur SOCKS a été corrigée et divulguée [2]. Cette vulnérabilité de « débordement de tampon » pourrait théoriquement conduire à diverses attaques : faire planter le nœud, injecter des charges malveillantes ou modifier des données sur le nœud. En 2020, une vulnérabilité de haute gravité a été signalée et corrigée, permettant à un pair distant de faire bannir des adresses, augmentant la liste de bannissement de façon quadratique, ce qui constitue une attaque DOS sur le nœud [3]. La vulnérabilité n’a été divulguée qu’en 2024. Elle est classée à juste titre comme « haute gravité » car l’attaque est simple à exécuter, son effet entraîne une perte de fonctionnalité du nœud, et elle nécessite peu de conditions préalables pour fonctionner. Ce genre de bugs empêche les développeurs de Core de dormir sur leurs deux oreilles, c’est pourquoi il est fortement conseillé de mettre à jour votre nœud vers une version encore maintenue (les versions plus anciennes de Core ne sont pas activement maintenues ou mises à jour).

Ce réseau distribué que nous appelons Bitcoin reste relativement petit : le nombre de nœuds sur le clearnet tourne autour de 20 000, et même en supposant un nombre généreux de 100 000 nœuds TOR, nous avons encore un réseau petit et facilement surveillable. Récemment, Daniela Brozzoni et naiyoma ont montré [4] que si un nœud fonctionne à la fois sur clearnet et Tor, il est trivial de cartographier l’adresse IPv4 et l’adresse Tor d’un nœud. Il est très probable que cela soit déjà fait par des agences de renseignement et des entreprises de chainalysis. Il devient alors facile de repérer quels nœuds publient en premier quelles transactions, en déduire l’IP d’origine de la transaction, et donc sa localisation. Bien que cela ne soit pas une faille 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 cela offre une méthode pour associer une adresse IP donnée à une transaction.

Comment prévenir cela efficacement reste une question ouverte.

Les Territoires Hostiles du Web

« Nous construisons nos ordinateurs comme nous construisons nos villes. Avec le 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 mêmes d’Internet. Malheureusement, l’architecture d’Internet telle que nous la connaissons aujourd’hui demeure terriblement vulnérable, avec des attaques connues qui sont régulièrement utilisées. La plupart de ces attaques sont menées à l’insu de tous jusqu’à ce que des 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 pratique à surveiller est appelé attaque d’éclipse, où tous les pairs d’un nœud victime sont malveillants, et alimentent une vision spécifique de la chaîne ou du réseau au nœud victime. Ce type d’attaque est fondamental dans les systèmes distribués : si vous contrôlez les pairs d’un nœud, vous contrôlez sa perception du réseau. Ethan Heilman et ses collaborateurs ont présenté l’une des premières attaques d’éclipse pratiques sur Bitcoin lors de l’USENIX 2015 [6], et en 2018, l’article Erebus décrivait une attaque d’éclipse « furtive » via un Système Autonome (AS) malveillant [7].

Ces attaques exploitent principalement des faiblesses dans la façon 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 que des initiatives soient en cours pour sécuriser le protocole BGP — BGPsec, RPKI — elles ont toutes des limites bien comprises, et laissent les gestionnaires d’Internet en quête de solutions plus robustes. En attendant, Internet restera le Far West.

Une analyse récente de cedarctic chez Chaincode Labs a révélé que les nœuds Bitcoin sont hébergés dans seulement 4551 AS, une sous-section relativement petite des réseaux constituants d’Internet. Ils décrivent une série d’attaques pouvant mener à des attaques d’éclipse en compromettant l’AS en amont dans lequel opèrent les nœuds [8]. La faible distribution des nœuds parmi les AS et les relations spécifiques entre ces AS créent une voie d’attaque unique. Bien qu’il existe des remèdes, il n’est pas clair si cette voie d’attaque était bien comprise par les bitcoiners ou leurs adversaires avant.

Toute attaque reposant sur la compromission d’un ou plusieurs AS nécessite des ressources, de la coordination et des compétences pour réussir. Bien qu’aucune attaque de ce type n’ait été rapportée avec succès sur un nœud Bitcoin, de telles attaques ont été menées avec succès contre des mineurs [9], des portefeuilles [10], des plateformes d’échange [11], et des ponts [12]. Même si nous ne pouvons pas réparer Internet, nous pouvons armer les nœuds avec les outils pour opérer dans cet environnement hostile.

L’Armurerie du Réseau

Voici quelques fonctionnalités et outils que Bitcoin Core a développés ou intégrés pour armer les utilisateurs contre les attaques au niveau du réseau :

TOR (le Onion Router) est le plus ancien réseau overlay axé sur la confidentialité intégré à Bitcoin Core. Il crée des sauts entre un réseau aléatoire de pairs pour obfusquer le trafic.

v2transport [13] chiffre les connexions entre pairs, dissimulant le trafic aux regards indiscrets et aux censeurs. L’objectif est de empêcher les observateurs passifs du réseau de fouiller dans le contenu de vos communications avec d’autres nœuds.

I2P (le Projet Internet Invisible [14]) est une fonctionnalité optionnelle de Core qui permet d’ajouter une couche privée et chiffrée à vos connexions. C’est un réseau d’anonymat semblable à Tor, qui repose sur des pairs pour obfusquer le trafic entre clients et serveurs.

ASmap [15] est une autre fonctionnalité optionnelle de Core qui met en œuvre une mitigation contre l’attaque Erebus décrite dans l’article, applicable à toutes les attaques basées sur les AS. En rendant le mécanisme de pairage de Bitcoin conscient de l’AS d’où proviennent les pairs, et en assurant la diversité parmi eux, une attaque d’éclipse devient exponentiellement plus difficile, car un attaquant devrait compromettre de nombreux AS, ce qui est hautement improbable et presque impossible sans être détecté. Depuis Core 20.0, Bitcoin supporte la cartographie des réseaux IP vers leurs AS (une AS-map), et le projet Kartograf permet à tout utilisateur de générer facilement une telle ASmap.

Étant donné que Internet restera probablement vulnérable à de nombreuses attaques, l’une des actions possibles est d’observer le comportement de nos pairs pour tenter de détecter un comportement malveillant. C’est l’objectif du projet peer-observer de 0xb10c [16]. Il fournit un système de journalisation basé sur des points de trace eBPF (une méthode pour observer les plus petites actions dans un programme s’exécutant sur un système d’exploitation) pour surveiller l’activité d’un nœud, y compris le comportement des pairs. Il fournit également tout ce dont vous avez besoin pour construire vos propres systèmes de journalisation.

Bitcoin doit être robuste

Assurer la capacité de se connecter aux pairs et d’échanger des messages est un composant clé de ce qui fait fonctionner Bitcoin.

Bitcoin évolue dans un environnement adversarial multidimensionnel, dans lequel de nombreuses menaces sont créées par les limitations mêmes de l’architecture d’Internet. Si Bitcoin doit 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.

Procurez-vous dès aujourd’hui votre exemplaire de The Core Issue !

Ne manquez pas votre chance de posséder The Core Issue — comprenant des articles écrits par de nombreux développeurs de Core expliquant eux-mêmes les projets sur lesquels ils travaillent !

Cette article est la Lettre de l’Éditeur figurant dans la dernière édition imprimée de Bitcoin Magazine, The Core Issue. Nous la partageons ici en avant-première pour donner un aperçu des idées explorées dans tout le numéro.

[0]

[1]

[2]

[3]

[4]

[5]

[6]

[7]

[8]

[9]

[10]

[11]

[12] www.coinbase.com/blog/celer-bridge-incident-analysis

[13]

[14]

[15]

[16]

[13]

Voir l'original
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
  • Récompense
  • Commentaire
  • Reposter
  • Partager
Commentaire
Ajouter un commentaire
Ajouter un commentaire
Aucun commentaire
  • Épingler