introduzione

Un attacco Eclipse è un attacco relativamente semplice che un utente malintenzionato può implementare per interferire con i nodi di una rete. Come suggerisce il nome, l’attacco mira a oscurare la visione della rete peer-to-peer da parte di un partecipante, per causare disagi generali o per prepararsi ad attacchi più sofisticati.

Gli attacchi Eclipse possono sembrare simili, in superficie, agli attacchi Sybil. Sebbene condividano alcune somiglianze (l’autore malintenzionato inonderà la rete di peer falsi), il loro obiettivo finale è in definitiva diverso. Un attacco Eclipse prende di mira un singolo nodo (per ragioni spiegate in una sezione successiva), mentre un attacco Sybil è un attacco a livello di rete progettato per ingannare il sistema reputazionale del protocollo.

Il concetto è discusso a lungo nel documento del 2015 Eclipse Attacks on Bitcoin's Peer-to-Peer Network, in cui ricercatori della Boston University e della Hebrew University riportano i risultati dei loro esperimenti sull'organizzazione di attacchi Eclipse, nonché le possibili contromisure per combatterli.


Come funziona un attacco di eclissi

I minatori di Bitcoin richiedono attrezzature specializzate per generare nuovi blocchi, ma i nodi non minerari (o completi) possono essere facilmente gestiti con una potenza di calcolo minima. Ciò aiuta la decentralizzazione di Bitcoin, poiché chiunque può avviare un nodo su un dispositivo con specifiche basse. Il software mantiene un database di transazioni che sincronizza con i suoi colleghi immediati, in modo da rimanere in sintonia con la rete.

Un fattore limitante per molti nodi è la larghezza di banda. Sebbene esista un'enorme quantità di dispositivi che eseguono il software, il dispositivo medio non è in grado di connettersi direttamente a molti di essi a causa delle limitazioni stabilite nel software Bitcoin (che consente solo un massimo di 125 connessioni).

In un attacco Eclipse, l’attore malintenzionato si assicurerà che tutte le connessioni del bersaglio vengano effettuate verso i nodi controllati dall’aggressore. L'entità innanzitutto inonderà l'obiettivo con i propri indirizzi IP, a cui probabilmente la vittima si connetterà al riavvio del proprio software. Il riavvio può essere forzato (ovvero con un attacco DDoS sul bersaglio) oppure l'aggressore può semplicemente attendere che avvenga. 

Una volta che ciò si è verificato, la vittima ignara è alla mercé dei nodi dannosi: senza vista della rete più ampia, possono ricevere dati errati dall'aggressore.


Conseguenze di un attacco di eclissi

Se un utente malintenzionato sta spendendo risorse per allontanare un peer dalla rete, probabilmente ha un motivo per farlo. Esistono alcuni attacchi successivi che possono essere lanciati più facilmente una volta che un nodo è stato soffocato.


Spese doppie con conferma 0

Se un individuo accetta una transazione senza conferme, corre il rischio di una doppia spesa. La transazione potrebbe essere stata trasmessa, ma finché non sarà stata inclusa in un blocco (e quindi vincolata alla blockchain), il mittente potrà facilmente creare una nuova transazione che spenderà gli stessi fondi altrove. Se la nuova transazione ha una commissione più alta, è probabile che un minatore la includa prima dell’originale, invalidando quella precedente. 

Alcune aziende e privati ​​accettano queste transazioni senza conferma. Consideriamo un commerciante, Bob, che vende veicoli di fascia alta. Non sa che Alice ha eclissato il suo nodo e non sospetta nulla mentre effettua un ordine per un'auto sportiva di lusso. Crea una transazione, che Bob poi trasmette alla rete. Soddisfatto che il pagamento sia in arrivo, consegna le chiavi dell'auto e Alice si allontana.

Ovviamente, la transazione non è stata trasmessa alla rete: Bob l'ha semplicemente inoltrata ai nodi dannosi di Alice, che non la inoltreranno ai nodi onesti. Mentre questa transazione è sospesa nel limbo, Alice spende gli stessi fondi sulla rete (reale), sia verso un'altra parte che verso un indirizzo di sua proprietà. Anche se alla fine la transazione iniziale con Bob viene vista, verrà rifiutata poiché le monete sono già state spese.


Spese doppie con N conferme

La doppia spesa con N conferme è simile a quella con 0 conferme, ma richiede una maggiore preparazione. Molte aziende preferiscono attendere un certo numero di conferme prima di contrassegnare un pagamento come valido. Per aggirare questo problema, l’attaccante deve eclissare sia i minatori che il commerciante. Una volta che l'aggressore ha impostato l'ordine con il commerciante, trasmette una transazione ai minatori (eclissati). La transazione viene confermata e inclusa nella blockchain, ma questa blockchain non è la catena osservata dalla maggior parte della rete, poiché il minatore viene tagliato fuori.

Da lì, l’aggressore trasmette questa versione della blockchain al commerciante, che rilascia la merce credendo che la transazione sia stata confermata. Una volta che i nodi eclissati si ricongiungono alla rete reale, la blockchain che credono erroneamente valida rimane orfana di quella su cui ha lavorato il resto della rete (questo presenta alcune somiglianze con un attacco del 51%).


Indebolimento dei minatori concorrenti

Un nodo eclissato continuerà a funzionare, ignaro del fatto di essere stato segregato dalla rete. I miner continueranno a estrarre blocchi rispettando le regole stabilite dal protocollo, ma i blocchi aggiunti verranno scartati non appena si sincronizzeranno con peer onesti. 

Teoricamente, un attacco Eclipse su larga scala contro i principali minatori potrebbe essere utilizzato per facilitare un attacco del 51%. Allo stato attuale, il costo per assumere il controllo della maggior parte del potere di hashing di Bitcoin è semplicemente troppo alto anche per gli aggressori più intraprendenti: a ~80TH/s, l’entità avrebbe bisogno di più di 40TH/s per tentare una simile manovra. 

In uno scenario ipotetico in cui questo potere di hashing è distribuito tra 10 parti (in modo tale che ciascuna possieda 8TH/s), l’aggressore può abbassare significativamente i requisiti per un attacco del 51% isolando queste parti dalla rete. Se cinque vengono eclissati, 40TH/s vengono rimossi dalla corsa per trovare il blocco successivo e l'attaccante ora deve solo acquisire leggermente più di 20TH/s per prendere il controllo.

Altri sabotaggi che possono essere ottenuti eclissando gli obiettivi includono la manipolazione dei nodi per l’estrazione egoistica o l’organizzazione di gare tra minatori per trovare il blocco successivo.


Mitigazione

Con un numero sufficiente di indirizzi IP, un utente malintenzionato può eclissare qualsiasi nodo. Il metodo più semplice per evitare che ciò accada è che un operatore blocchi le connessioni in entrata e effettui solo connessioni in uscita verso nodi specifici (come quelli che sono stati inseriti nella whitelist da altri peer). Come sottolinea il documento di ricerca, tuttavia, questo non è un approccio che funziona su larga scala: se tutti i partecipanti adottano queste misure, nuovi nodi non potranno unirsi alla rete.

Gli autori propongono una manciata di modifiche al software Bitcoin, alcune delle quali sono state integrate dopo la pubblicazione dell'articolo. Ciò rende gli attacchi Eclipse più costosi attraverso piccole modifiche al codice, come la selezione casuale di nuove connessioni e una maggiore capacità di memorizzazione degli indirizzi.


Pensieri conclusivi

Gli attacchi Eclipse vengono eseguiti a livello di rete peer-to-peer. Utilizzati come attacco autonomo, possono essere una sorta di fastidio. La loro vera efficacia sta nel potenziare altri attacchi che hanno un impatto finanziario sugli obiettivi o forniscono all’aggressore un vantaggio sul fronte del mining.

In natura non ci sono ancora conseguenze gravi derivanti da un attacco di eclissi, ma la minaccia esiste ancora nonostante le contromisure integrate nella rete. Come per la maggior parte dei vettori di attacco esistenti per Bitcoin e altre criptovalute, la difesa più forte sarà quella che rende finanziariamente proibitivo per i malintenzionati tentarli.