Race Attack

Difficoltà: avanzato

Argomento: tecnologia


DEFINIZIONE

Un attacco di tipo Race Attack è una forma di attacco informatico che sfrutta una vulnerabilità nella gestione delle operazioni concorrenti in un sistema informatico.

Nel caso di Bitcoin, potrebbe essere un double-spend effettuato tramite due transazioni create dagli stessi fondi (UTXO) che vengono inviate in rapida successione e solo una viene confermata nella blockchain. L'obiettivo è acquistare qualcosa con la transazione non confermata per poi invalidarla con una nuova transazione prima che sia confermata.

Viene fatta dall'attaccante ad esempio creando due transazioni in conflitto con UTXO in comune, una fraudolenta verso la vittima e l'altra verso lo stesso attaccante. È sufficiente che l'attaccante sappia che la vittima, ad esempio un merchant, accetterà la transazione come valida prima che sia confermata, ovvero scritta in un blocco aggiunto alla blockchain, per fornire i beni o servizi.

L'esempio:

L'attaccante crea una transazione tx1 di pagamento alla vittima utilizzando uno o più UTXO in input, con fee sufficientemente basse per fare in modo che la transazione non venga presa in considerazione troppo presto dai miner per essere inserita nel blocco che andranno a minare.

La vittima vede la tx1 in transito (nella mempool), e fornisce comunque all'attaccante i beni o servizi anche se non è stata ancora confermata in blockchain.

L'attaccante a questo punto crea una nuova transazione tx2 con lo stesso o gli stessi UTXO in input della tx1, ma con il pagamento verso se stesso e fee abbastanza alte affinché la tx2 sia scelta dai miner per essere inserita in un nuovo blocco prima della tx1. Una volta che la tx2 è memorizzata nella blockchain, gli input in conflitto vengono considerati spesi e la tx1 viene considerata invalida dai miner e scartata dalla loro transaction pool.

Per evitare un race attack, i merchant devono attendere il completamento del mining e la comparsa della transazione nella blockchain prima di fornire il prodotto/servizio al pagatore, e possibilmente anche un certo numero di conferme, ovvero di blocchi successivi a quello nel quale è presente la transazione. Generalmente viene considerato molto sicuro attendere almeno 6 blocchi successivi come conferma prima di effettuare la consegna di beni o servizi. In questo caso, le possibilità per un attaccante di annullare una transazione sono trascurabili, anche ipotizzando che l'aggressore possa controllare non più del 10% della potenza computazionale totale utilizzata nel mining.

Più recentemente, poiché l'incremento della difficoltà del mining Bitcoin ha reso più proibitivo controllare una percentuale significativa della potenza computazionale, la raccomandazione è di attendere almeno 3 conferme.


aggiornato il 2022-09-24