Introduction

Une attaque Eclipse est une attaque relativement simple qu'un acteur malveillant peut déployer pour interférer avec les nœuds d'un réseau. Comme son nom l’indique, l’attaque vise à obscurcir la vue d’un participant sur le réseau peer-to-peer, afin de provoquer une perturbation générale ou de préparer des attaques plus sophistiquées.

Les attaques d'éclipse peuvent ressembler, à première vue, aux attaques de Sybil. Bien qu’ils partagent certaines similitudes – l’acteur malveillant inondera le réseau de faux pairs – leur objectif final est finalement différent. Une attaque éclipse vise un seul nœud (pour les raisons expliquées dans une section ultérieure), tandis qu'une attaque Sybil est une attaque à l'échelle du réseau conçue pour jouer avec le système de réputation du protocole.

Le concept est longuement discuté dans l'article de 2015 Eclipse Attacks on Bitcoin's Peer-to-Peer Network, dans lequel des chercheurs de l'Université de Boston et de l'Université hébraïque rapportent les résultats de leurs expériences sur l'organisation d'attaques d'éclipse, ainsi que les contre-mesures possibles pour les combattre.


Comment fonctionne une attaque d'éclipse

Les mineurs de Bitcoin nécessitent un équipement spécialisé pour générer de nouveaux blocs, mais les nœuds non miniers (ou complets) fonctionnent facilement avec une puissance de calcul minimale. Cela facilite la décentralisation de Bitcoin, car n'importe qui peut créer un nœud sur un appareil peu performant. Le logiciel maintient une base de données de transactions qu'il synchronise avec ses pairs immédiats, afin de rester en phase avec le réseau.

Un facteur limitant pour de nombreux nœuds est la bande passante. Bien qu'il existe un nombre considérable d'appareils exécutant le logiciel, l'appareil moyen est incapable de se connecter directement à bon nombre d'entre eux en raison des limitations définies dans le logiciel Bitcoin (qui n'autorise qu'un maximum de 125 connexions).

Lors d’une attaque Eclipse, l’acteur malveillant veillera à ce que toutes les connexions de la cible soient établies vers des nœuds contrôlés par l’attaquant. L'entité inondera d'abord la cible avec ses propres adresses IP, auxquelles la victime se connectera probablement au redémarrage de son logiciel. Un redémarrage peut être soit forcé (c'est-à-dire avec une attaque DDoS sur la cible), soit l'attaquant peut simplement attendre qu'il se produise. 

Une fois que cela se produit, la victime sans méfiance est à la merci des nœuds malveillants : sans vue sur le réseau dans son ensemble, l'attaquant peut lui fournir des données incorrectes.


Conséquences d'une attaque d'éclipse

Si un attaquant dépense des ressources pour éloigner un homologue du réseau, il a probablement une raison de le faire. Il existe une poignée d'attaques successives qui peuvent être plus facilement lancées une fois qu'un nœud a été étouffé.


0-confirmation double dépenses

Si une personne accepte une transaction sans confirmation, elle risque de doubler sa dépense. La transaction a peut-être été diffusée, mais jusqu'à ce qu'elle soit incluse dans un bloc (et donc engagée dans la blockchain), l'expéditeur peut facilement créer une nouvelle transaction qui dépense les mêmes fonds ailleurs. Si la nouvelle transaction comporte des frais plus élevés, un mineur les inclura probablement avant l'original, invalidant ainsi la précédente. 

Certaines entreprises et particuliers acceptent ces transactions sans confirmation. Prenons l’exemple d’un commerçant, Bob, qui vend des véhicules haut de gamme. Il ignore qu'Alice a éclipsé son nœud et ne se doute de rien alors qu'elle passe commande d'une voiture de sport de luxe. Elle crée une transaction, que Bob diffuse ensuite sur le réseau. Satisfait que le paiement soit en route, il remet les clés de la voiture et Alice s'en va à toute vitesse.

Bien entendu, la transaction n'a pas été diffusée sur le réseau : Bob l'a simplement relayée vers les nœuds malveillants d'Alice, qui ne la relayeront pas vers les nœuds honnêtes. Pendant que cette transaction reste en suspens, Alice dépense les mêmes fonds sur le (vrai) réseau, que ce soit vers une autre partie ou vers une adresse qui lui appartient. Même si la transaction initiale avec Bob est finalement vue, elle sera rejetée car les pièces ont déjà été dépensées.


N-confirmation double dépenses

La double dépense de confirmation N est similaire à celle de confirmation 0, mais implique plus de préparation. De nombreuses entreprises préfèrent attendre un certain nombre de confirmations avant de valider un paiement. Pour contourner ce problème, l'attaquant doit éclipser à la fois les mineurs et le marchand. Une fois que l'attaquant a établi la commande auprès du commerçant, il diffuse une transaction aux mineurs (éclipsés). La transaction est confirmée et incluse dans la blockchain – mais cette blockchain n’est pas la chaîne que la majorité du réseau observe, puisque le mineur est coupé.

À partir de là, l’attaquant transmet cette version de la blockchain au commerçant, qui libère les marchandises en pensant que la transaction a été confirmée. Une fois que les nœuds éclipsés rejoignent le réseau réel, la blockchain qu'ils croient à tort valide est orpheline de celle sur laquelle le reste du réseau a travaillé (cela présente certaines similitudes avec une attaque à 51 %).


Affaiblir les mineurs concurrents

Un nœud éclipsé continuera à fonctionner, inconscient du fait qu’il a été séparé du réseau. Les mineurs continueront à exploiter des blocs conformément aux règles établies par le protocole, mais les blocs ajoutés seront supprimés lors de leur synchronisation avec leurs pairs honnêtes. 

Théoriquement, une attaque d’éclipse à grande échelle contre les principaux mineurs pourrait être utilisée pour faciliter une attaque à 51 %. Dans l’état actuel des choses, le coût pour reprendre la majorité de la puissance de hachage de Bitcoin est tout simplement trop élevé, même pour les attaquants les plus ingénieux : à ~80 TH/s, l’entité aurait besoin de plus de 40 TH/s pour tenter une telle manœuvre. 

Dans un scénario hypothétique où cette puissance de hachage est répartie entre 10 parties (de telle sorte que chacune possède 8TH/s), l'attaquant peut réduire considérablement les exigences d'une attaque de 51 % en coupant ces parties du réseau. Si cinq sont éclipsés, 40 TH/s sont retirés de la course pour trouver le bloc suivant, et l'attaquant n'a plus qu'à acquérir un peu plus de 20 TH/s pour prendre le contrôle.

D'autres sabotages qui peuvent être réalisés en éclipsant des cibles incluent la manipulation de nœuds à des fins d'exploitation minière égoïste, ou l'ingénierie de courses entre mineurs pour trouver le bloc suivant.


Atténuation

Avec suffisamment d’adresses IP, un attaquant peut éclipser n’importe quel nœud. La méthode la plus simple pour éviter que cela ne se produise consiste pour un opérateur à bloquer les connexions entrantes et à établir uniquement des connexions sortantes vers des nœuds spécifiques (tels que ceux qui ont été ajoutés à la liste blanche par d'autres pairs). Cependant, comme le souligne le document de recherche, cette approche ne fonctionne pas à grande échelle : si tous les participants adoptent ces mesures, de nouveaux nœuds ne pourront pas rejoindre le réseau.

Les auteurs proposent quelques modifications au logiciel Bitcoin, dont certaines ont été intégrées depuis la publication du document. Celles-ci rendent les attaques d'éclipse plus coûteuses grâce à des modifications mineures du code, telles qu'une sélection aléatoire de nouvelles connexions et une plus grande capacité de stockage d'adresses.


Pensées finales

Les attaques Eclipse sont menées au niveau du réseau peer-to-peer. Déployés comme une attaque autonome, ils peuvent être quelque peu gênants. Leur véritable efficacité réside dans la potentialisation d’autres attaques qui ont un impact financier sur les cibles ou qui donnent à l’attaquant un avantage sur le front minier.

Dans la nature, une attaque d'éclipse n'a pas encore eu de conséquences graves, mais la menace existe toujours malgré les contre-mesures intégrées au réseau. Comme pour la plupart des vecteurs d’attaque qui existent pour Bitcoin et d’autres crypto-monnaies, la défense la plus solide sera celle qui rend financièrement prohibitive toute tentative de tentative par des parties malveillantes.