Un grave bug nel software di Bitcoin avrebbe potuto mandare tutto al diavolo

Gli sviluppatori di Bitcoin Core hanno aggiornato il software con una patch, ma l'episodio ha evidenziato il potenziale disastroso di una vulnerabilità banale.

|
20 settembre 2018, 10:38am

Immagine: Shutterstock 

Bitcoin è generalmente considerata il modello di riferimento per le criptovalute, ma persino la moneta basata su tecnologia blockchain nasconde difetti potenzialmente disastrosi nel software che la supporta.

Martedì, gli sviluppatori di Bitcoin Core — il software che alimenta la blockchain di Bitcoin — hanno rilasciato una nuova versione per risolvere una vulnerabilità che permetteva a utenti malintenzionati di mandare in crash la rete, rendendo del tutto inutili i soldi digitali di chiunque. Il bug è stato descritto come "molto spaventoso," "grave," e tra i "tre o quattro" bug più seri mai scoperti in Bitcoin.

"Per meno di 80.000 dollari, avresti potuto abbattere l'intera rete," mi ha detto al telefono Emin Gün Sirer, professore di informatica della Cornell University. "È una cifra inferiore a quella che un sacco di entità pagherebbero per uno 0-day su diversi sistemi. Le persone dotate delle motivazioni necessarie non sono poche e avrebbero potuto compromettere la rete."

È interessante sottolineare che il bug non era nel protocollo Bitcoin stesso, ma nella sua implementazione software più popolare. Anche alcune criptovalute costruite usando il codice Bitcoin Core sono state colpite — per esempio, Litecoin ha emesso una patch per la stessa vulnerabilità proprio martedì.

I documenti disponibili descrivono il bug come una "vulnerabilità da denial-of-service," che è stata introdotta in Bitcoin Core con un aggiornamento risalente all'anno scorso. La vulnerabilità permette essenzialmente ai miner — ovvero la gente che tiene accesi i computer 24 ore su 24, 7 giorni su 7 per indovinare un numero che aggiunge un blocco di transazioni Bitcoin alla blockchain e ottenere un premio — di creare una sorta di blocco infetto, che include una transazione che cerca di spendere le stesse monete due volte. Questo blocco corrotto avrebbe potuto poi diffondersi nella rete Bitcoin, mandando in crash il software per qualsiasi utente che lo avesse ricevuto.

Bitcoin è una rete peer-to-peer che funziona grazie a una miriade di "nodi" connessi tra loro che si assicurano che una transazione sia conforme alle regole della blockchain (per esempio, non puoi spendere le stesse monete due volte). Circa il 95 percento degli utenti che gestiscono nodi Bitcoin usano Core, e il bug ora sistemato implicava che qualsiasi nodo Core che avesse ricevuto il blocco infetto sarebbe andato in tilt, anziché rigettare il blocco perché invalido.

Questo avrebbe potuto — nel peggiore degli scenari possibili — schiantare l'intera rete o fratturarla, separando uno dall'altro gruppi di nodi. Stando a Sirer, ci sarebbe stata molto probabilmente una risposta veloce da parte della comunità per riportare online il sistema dopo un attacco del genere, che non sarebbe stato quindi del tutto catastrofico, per quanto sicuramente dirompente.

Sfruttando una vulnerabilità del genere, il miner malintenzionato avrebbe perso la ricompensa prevista per la creazione di un blocco — 12,5 bitcoin, che corrispondono a poco meno di 80.000 dollari, stando al cambio attuale — perché sarebbe stato infetto. Ma, magari, sferrare un attacco a Bitcoin sarebbe stata una soddisfazione sufficiente.

"Il fatto che tante persone usino tutte la stessa cosa non significa che esamino in modo critico il codice, o che sia sempre facile per loro cogliere errori fondamentali," ha detto Sirer. "L'unica cosa che aiuta davvero è avere molteplici versioni dello stesso software."

"La lezione da imparare in questa storia è che le monoculture sono molto pericolose."

Questo articolo è apparso originariamente su Motherboard US.