I nodi sono il vero e proprio motore di una blockchain. Non stupisce quindi eccessivamente il fatto che esista un attacco che li prende espressamente di mira. Il riferimento è all’attacco Eclipse, un raid abbastanza semplice nella sua concezione, il quale si propone di andare a interferire coi nodi con l’intento di oscurarli del tutto. In tal modo sarà possibile causare disturbi di carattere generale al network, oppure preparare il terreno in vista di attacchi più sofisticati. Andiamo quindi a cercare di capire meglio cosa siano e la loro effettiva pericolosità.
Attacchi Eclipse: cosa sono e a cosa servono
Gli attacchi Eclipse presentano alcuni punti di somiglianza con quelli Sybil, ma hanno un obiettivo finale differente, mirando di fatto a colpire un solo nodo, invece che l’intero network. Se l’attacco Sybil è concepito in maniera tale da aggirare il sistema reputazionale del protocollo colpito, quello Eclipse si ripropone di fare in modo che tutte le interazioni dell’obiettivo abbiano luogo con nodi controllati dall’hacker.
L’attaccante, infatti, provvede a inondare il bersaglio con i suoi indirizzi IP, cui è probabile che la vittima si connetterà al riavvio del proprio software. Riavvio il quale può essere del tutto naturale, oppure essere forzato dallo stesso hacker tramite un attacco DDoS ai danni della vittima.
Una volta che l’attacco sia andato a buon fine, la vittima si ritrova praticamente in balia dei nodi controllati dall’attaccante, senza alcuna possibilità di interagire con il network, dandogli modo di indurlo ad accettare dati non corretti, in vase di validazione.
Cosa accade in conseguenza di un attacco Eclipse?
Per condurre un attacco a danno dei nodi, occorre investire del denaro. Con ogni probabilità, quindi, l’attacco ha un obiettivo finanziario. Tra quelli più frequenti, vanno ricordati i seguenti:
- la doppia spesa (double spending), che può avere luogo in caso di accettazione di una transazione senza che sia stata confermata. In pratica, la transazione potrebbe essere stata trasmessa, ma essere in attesa di inclusione in un nuovo blocco. In questa fase transitoria, il mittente è in grado di crearne facilmente una nuova in cui sono spesi gli stessi fondi, presso un altro indirizzo. Per spingere il miner ad accettare questa seconda transazione l’hacker mette in campo una commissione più alta, con l’ìinvalidazione della precedente. La doppia spesa può essere a zero o a N conferme, con la seconda che comporta l’eclissamento sia del nodo che del commerciante:
- l’indebolimento dei miner concorrenti, derivante dal fatto che quelli attaccati continueranno ad operare senza sapere di esserlo stati. Continueranno di conseguenza a minare blocchi seguendo le regole dal protocollo, ma i loro tentativi di aggiunta saranno declinati nella fase di sincronizzazione con i nodi onesti.
In teoria, un raid di tipo Eclipse potrebbe fornire la base per un attacco 51%. Nel caso di Bitcoin tale eventualità è un’ipotesi di scuola, in quanto servirebbe il noleggio di hash power per miliardi di dollari. In altri casi, invece, l’ipotesi è tutt’altro che remota, come il suo possibile utilizzo per il cosiddetto selfish mining.
Come impedire questo genere di attacco
Se l’attaccante possiede un numero sufficiente di indirizzi IP, è in grado di eclissare qualsiasi nodo. Le reti, però hanno la possibilità di attuare strategie difensive in grado di mitigare il pericolo. Quella più semplice in assoluto consiste nel blocco delle connessioni in entrata, oltre all’effettuazione di connessioni esclusivamente verso alcuni nodi, in particolare quelli che fanno parte di una white list.
Il problema è stato oggetto di un documento del 2015, intitolato “Eclipse Attacks on Bitcoin’s Peer-to-Peer Network”, elaborato dai ricercatori di Boston University e Hebrew University. Al suo interno sono indicate anche le possibili contromisure contro questi attacchi e si spiega che le contromisure che abbiamo ricordato hanno scarsa validità su larga scala, impedendo ai nuovi nodi di unirsi alla rete.
Nel caso di Bitcoin, invece, per impedire attacchi Eclipse bastano piccole modifiche al codice, per effetto delle quali gli attacchi diventano estremamente costosi. Tra i metodi già implementati su BTC per evitarli, occorre ricordare la selezione casuale di nuove connessioni e una maggiore capacità per l’archiviazione degli indirizzi.