Channel jamming

Difficoltà: avanzato

Argomento: tecnologia


DEFINIZIONE

Il channel jamming è un tipo di attacco su Lightning Network che si verifica quando un'entità malintenzionata, effettuando un pagamento a se stessa tramite canali di terze parti ne blocca la liquidità non rivelando mai il preimage, in modo tale che il pagamento non venga mai completato.

Lightning Network è una rete di nodi che si aiutano (di solito a pagamento) a vicenda per effettuare pagamenti tramite canali di pagamento: se Alice e Bob non hanno un canale diretto, possono utilizzare un percorso composto da più nodi di instradamento tra di loro, multi-hop, per inoltrare questo pagamento regolando i balance nei canali lungo il percorso. È importante che questi pagamenti multi-hop siano atomici, AMP Atomic Multipath Payment o Pagamenti Multipercorso Atomici, ovvero devono tutti andare a buon fine e nel caso anche uno solo fallisca devono fallire tutti, altrimenti c'è il rischio che i nodi di instradamento prendano i fondi senza inoltrarli.

I pagamenti multi-hop avvengono in due fasi:

  • bloccando i fondi sul percorso dal mittente al destinatario
  • e poi spostando i saldi propagando il preimage dal destinatario al mittente.

L'idea principale alla base del jamming è occupare le capacità di instradare i nodi per inoltrare i pagamenti effettuando pagamenti falsi e non completandoli mai. Per la durata dell'attacco, diventa impossibile per i nodi di instradamento inoltrare altri pagamenti (onesti).

Per bloccare determinati canali, un utente malintenzionato finge di effettuare un pagamento a se stesso tramite quei canali e non rilascia mai il preimage dal lato del destinatario.

Esistono due tipi di jamming:

  • amount jamming, per il quale un attaccante blocca una porzione significativa della capacità del canale target
  • slot jamming, per il quale un attaccante blocca le capacità di inoltro del canale target esaurendo il limite dei pagamenti in-flight

Gli attacchi di channel jamming sono attacchi DoS Denial of Service in cui un attaccante può impedire a una serie di canali distanti fino a 20 hop di utilizzare parte o tutti i loro fondi per un periodo di tempo prolungato.

Un nodo LN può instradare un pagamento verso se stesso attraverso un percorso di 20 o più hop. Questo crea due possibili vie per gli attacchi di channel jamming:

  • L'attacco Liquidity jamming (originariamente chiamato loop attack nel 2015) consiste nel fatto che un attaccante con una quantità di denaro pari a x (ad esempio 1 BTC) la invia a se stesso attraverso altri 20 canali, ma ritarda a saldare o a rifiutare il pagamento, bloccando temporaneamente un totale di 20x fondi appartenenti ad altri utenti (ad esempio 20 BTC). Dopo diverse ore di blocco del denaro di altri utenti, l'aggressore può annullare il pagamento e ricevere un rimborso completo delle spese sostenute, rendendo l'attacco essenzialmente gratuito.
  • L'attacco HTLC jamming consiste nell'invio da parte di un aggressore di 483 piccoli pagamenti HTLC attraverso una serie di 20 canali: un canale Lightning può avere solo 483 HTLC in attesa in ogni direzione che può instradare, questo perché esiste un limite massimo di dimensione di quanto può essere grande una transazione Bitcoin. Se si aggiungono più di 483 HTLC per direzione nel canale, la transazione per chiudere il canale, se necessario, sarebbe troppo grande e non valida da inviare alla rete. Ciò renderebbe tutto ciò che è presente nel canale inapplicabile on-chain. In questo caso, un attaccante con due canali, ciascuno con 483 slot, può bloccare oltre 10.000 slot HTLC onesti, sempre senza pagare alcuna fee.

Quindi, un attaccante può cercare di bloccare tutta la liquidità di un canale o di bloccare tutti gli slot HTLC di un canale. Entrambe le strategie renderebbero il canale inutilizzabile, ma il blocco degli slot è generalmente più economico del blocco della quantità. L'attaccante deve disporre di monete sulla rete per eseguire questo attacco, quindi instradare il valore minimo consentito per un HTCL con capacità di 483 sarà più conveniente che cercare di bloccare tutta la liquidità disponibile nel canale.

Ci sono molte ragioni per eseguire questo attacco. In primo luogo, un'entità malintenzionata che volesse attaccare Bitcoin stesso potrebbe bloccare tutti i canali chiave nel "cuore" della rete, in modo da rendere la maggior parte della rete inutilizzabile per l'instradamento dei pagamenti, fatta eccezione per i nodi che sono molto strettamente connessi tra loro. Ciò richiederebbe un numero di monete molto più elevato per raggiungere questa scala, ma non è un'eventualità da scartare quanto più il Bitcoin cresce e diventa un'alternativa al denaro e ai sistemi di pagamento approvati dai governi.

In secondo luogo, un nodo di routing, o un commerciante, potrebbe tentare di eseguire l'attacco a un concorrente per spingere le commissioni verso di lui rispetto alla concorrenza. Un commerciante che vende prodotti simili potrebbe intasare i canali di un concorrente per impedire ai clienti di fare acquisti lì, nella speranza di incentivarli a comprare nel suo negozio. Un nodo di routing che ha una connettività di canali simile a quella di un altro nodo potrebbe bloccare i canali del nodo di routing concorrente per renderli inutilizzabili per l'instradamento dei pagamenti. Con il tempo questo distruggerebbe la reputazione del nodo in termini di affidabilità del routing e, a causa della connettività simile, renderebbe sempre più probabile che i portafogli degli utenti scelgano il nodo dell'attaccante per instradare i pagamenti attraverso la rete.

Questi attacchi possono essere ancora più efficienti dal punto di vista del capitale per l'aggressore, se si instradano circolarmente attraverso un singolo canale più volte. Se sono abbastanza vicini alla vittima sulla rete, possono costruire un percorso di pagamento che si aggira e continua a passare attraverso il canale della vittima. Ci sono dei limiti alla lunghezza di un percorso di pagamento, quindi non si può fare all'infinito, ma un percorso di pagamento ad anello come questo può ridurre drasticamente la quantità di monete di cui l'attaccante ha bisogno per bloccare completamente il canale della vittima.

Questo tipo di attacco può essere particolarmente dannoso per la rete Lightning Network poiché può causare la chiusura di molti canali di pagamento, riducendo così la capacità della rete di gestire le transazioni. Esistono diversi modi per proteggere la rete dal channel jamming, come ad esempio l'utilizzo di tecniche di routing basate sulla reputazione o la creazione di canali di pagamento con una capacità maggiore.


aggiornato il 2022-12-05