NotizieCryptoServer Electrum rinnegati hanno sostituito i pagamenti trasmessi con false transazioni bitcoin a commissione zero; la correzione è arrivata con la 4.8.3

Server Electrum rinnegati hanno sostituito i pagamenti trasmessi con false transazioni bitcoin a commissione zero; la correzione è arrivata con la 4.8.3

Autore: Cryptopolitan·

Punti chiave

  • •Electrum ha rilasciato la versione 4.8.3 per correggere una vulnerabilità ad alta gravità legata a server malevoli che sostituivano i pagamenti trasmessi, con il manutentore SomberNight che ha pubblicato l'avviso GHSA-6jp4-8v48-cc5v il 24 ottobre esortando gli utenti ad aggiornare.
  • •L'attacco riusciva perché le versioni precedenti non verificavano le firme delle transazioni in mempool, quindi una transazione falsa a commissione zero appariva come in attesa e l'aumento della commissione tramite Replace-By-Fee portava il wallet della vittima a firmare la versione dell'attaccante con una firma valida.
  • •Una vittima documentata con un multisig legacy P2SH 2-su-3 e due Trezor ha ricevuto una transazione falsa con scriptSigs identici byte per byte su 31 input, il cui indirizzo di destinazione imitava gli ultimi quattro caratteri di quello genuino, terminando in GyQ3.
  • •La correzione, introdotta nel commit 90fe308, verifica le firme sugli input di proprietà del wallet prima di aggiungere le transazioni in mempool alla cronologia locale, ma i pagamenti in entrata non confermati non possono ancora essere pienamente verificati dal wallet fino alla conferma sulla blockchain.
  • •Electrum consiglia agli utenti che non possono aggiornare di verificare gli indirizzi e gli importi degli output prima di firmare qualsiasi cosa, compresi gli aumenti di commissione, e gli utenti connessi solo ai propri server non sono mai stati coinvolti.
Server Electrum rinnegati hanno sostituito i pagamenti trasmessi con false transazioni bitcoin a commissione zero; la correzione è arrivata con la 4.8.3

Server Electrum malevoli hanno sostituito i pagamenti bitcoin appena trasmessi dagli utenti con false transazioni a commissione zero destinate a indirizzi simili, scommettendo che le vittime avrebbero aumentato la commissione e firmato la versione dell'attaccante. Electrum ha rilasciato la versione 4.8.3 il 24 ottobre per correggere la vulnerabilità ad alta gravità. Il manutentore SomberNight ha pubblicato lo stesso giorno l'avviso GHSA-6jp4-8v48-cc5v chiedendo agli utenti di aggiornare.

Come funziona l'attacco

Electrum è un light client: non esegue un nodo bitcoin completo e si affida al proprio server per le informazioni sulle transazioni non confermate presenti nel mempool, come spiegato dalla documentazione stessa del progetto. Quando un utente firma e invia una transazione (tx1), un server compromesso può bloccarla e consegnare al wallet una transazione diversa (tx2) che invia i fondi all'indirizzo dell'attaccante.

Tx2 presenta firme non valide. Le versioni precedenti di Electrum non verificavano le firme delle transazioni in mempool, quindi il wallet mostrava tx2 come in attesa e nascondeva tx1. Replace-By-Fee (RBF) consente a chi invia di ritrasmettere una transazione non confermata con una commissione più alta. Se la commissione sul falso viene aumentata, il wallet firma la versione dell'attaccante con una firma valida. Questo trasforma un passaggio di routine — l'aumento della commissione su un pagamento che sembra bloccato — nel momento in cui il wallet della vittima firma la transazione dell'attaccante.

L'indirizzo contraffatto condivideva la finale GyQ3 con la destinazione legittima

Una delle vittime, nota come dannydeezy, ha documentato l'attacco. La configurazione era un multisig legacy P2SH 2-su-3 con due Trezor, 31 input e un output. L'utente ha verificato l'output su entrambi i Trezor e poi ha trasmesso. I Trezor hanno verificato la transazione genuina prima che lasciasse il wallet; la versione dell'attaccante è apparsa solo successivamente, consegnata dal server malevolo, quindi i controlli sul dispositivo non l'hanno mai vista. La cronologia del wallet mostrava quindi l'intero importo in direzione di un indirizzo sconosciuto come non confermato, e la voce è passata in seguito a "Local". In Electrum, "Local" contrassegna una transazione nota solo al wallet e non visibile sulla rete.

Il falso replicava gli input, la versione e il locktime della transazione reale, con scriptSigs identici byte per byte su i 31 input. Tutte le 62 firme risultavano valide rispetto alla transazione reale; nessuna risultava valida rispetto al falso. Quasi tutti i fondi sono andati a un indirizzo simile, con una piccola quantità restituita a uno degli indirizzi già usati dello stesso wallet.

Il falso terminava in GyQ3 — e così anche la destinazione reale. L'attaccante era riuscito a trovare un indirizzo corrispondente agli ultimi quattro caratteri dell'indirizzo corretto. ZachXBT ha segnalato anche una truffa simile di avvelenamento degli indirizzi che colpisce gli utenti del wallet Phantom; gli indirizzi contraffatti sono progettati per eludere un controllo a colpo d'occhio dei primi e ultimi caratteri.

La 4.8.3 verifica le firme solo sugli input di proprietà del wallet

Un altro utente, Raju-K12, ha segnalato privatamente il 18 ottobre di aver aumentato la commissione sul falso e di aver perso denaro. Secondo i manutentori, alcuni server stanno eseguendo l'attacco in natura.

Il commit 90fe308 aggiunge un controllo delle firme sugli input di proprietà del wallet ("is_mine") prima di aggiungere una transazione in mempool alla cronologia locale. La versione 4.8.3 è stata contrassegnata su git il 23 ottobre e i binari sono stati rilasciati il giorno successivo.

Electrum verifica ancora solo gli input controllati dal wallet, quindi le transazioni in entrata non confermate restano non verificate, poiché il client non dispone di un interprete di script completo. Per i destinatari, ciò significa che un pagamento in entrata in attesa non può essere pienamente verificato dal solo wallet finché non viene confermato sulla blockchain. La soluzione alternativa di Electrum per chi non può aggiornare è verificare gli indirizzi e gli importi degli output prima di firmare qualsiasi cosa, compresi gli aumenti di commissione. Gli utenti che si sono connessi solo ai propri server non sono mai stati coinvolti.

Electrum ha già distribuito correzioni d'emergenza in passato. A gennaio 2018 ha chiuso un'interfaccia JSON RPC rimasta aperta per circa due anni, dopo che il ricercatore di Google Tavis Ormandy aveva scoperto che un sito web poteva rilevare la porta e prosciugare i fondi. Cryptopolitan ha riportato che l'avviso di un bug nella generazione del seed di Coldcard è arrivato a luglio, lo stesso giorno in cui circa 594 BTC — circa 38 milioni di dollari — sono stati prosciugati da circa 500 wallet.