Avvelenamento di indirizzi: l'attacco che ha solo bisogno che tu copi la cosa sbagliata

·7 min di lettura·Di SSP Editorial Team
Copertina SSP Academy: avvelenamento di indirizzi e indirizzi cripto sosia

Avvelenamento di indirizzi: l'attacco che ha solo bisogno che tu copi la cosa sbagliata

Quasi tutti gli attacchi agli utenti cripto richiedono che tu commetta un errore: cliccare un link, digitare una frase seed in un modulo, approvare qualcosa che non hai letto. L'avvelenamento di indirizzi richiede meno di così. Richiede che tu copi un indirizzo dalla tua stessa cronologia delle transazioni.

Nessun malware, nessun sito di phishing, nessuna firma da estorcerti. L'intero contributo dell'attaccante consiste nel mettere una stringa dall'aria plausibile in un posto dove più avanti andrai a cercarla.

Come funziona

Partiamo da ciò che lo rende possibile: nessuno legge gli indirizzi. Un indirizzo Bitcoin o Ethereum sono trenta e passa caratteri di base58 o esadecimale senza significato, senza una somma di controllo giudicabile a occhio e senza alcun motivo per tenerlo a mente. Così ogni wallet, explorer e exchange li accorcia per la visualizzazione — 0x8f3C…9A063 — e ogni utente impara a controllare le estremità visibili e a saltare il centro.

Quell'abitudine è tutta la superficie d'attacco.

L'attaccante genera indirizzi a forza bruta finché uno condivide i primi e gli ultimi caratteri con un indirizzo che usi davvero, di solito uno a cui hai mandato denaro di recente. Costa poco. Generare coppie di chiavi è veloce, e far combaciare, diciamo, quattro caratteri iniziali e quattro finali richiede secondi su hardware comune. Nessuno sta forzando nulla; si tirano solo i dadi finché un numero non sembra familiare.

Poi fanno entrare quell'indirizzo nella tua cronologia. I metodi consueti:

Dusting. Ti mandano un importo minuscolo — qualche satoshi, una frazione di centesimo di un token — dall'indirizzo sosia. È una normale transazione in entrata, quindi atterra nella tua cronologia come qualsiasi altra. Sulle catene UTXO quella polvere diventa anche una moneta spendibile nel tuo wallet, cosa che conta più avanti.

Trasferimenti a valore zero. Sulle catene EVM un transfer ERC-20 di zero token è una transazione valida. L'attaccante invia 0 token dal tuo indirizzo al suo sosia, e alcune interfacce lo mostrano come un pagamento in uscita fatto da te. La tua cronologia ora mostra che avresti inviato a un indirizzo che non hai mai scelto.

Eventi falsi. Un contratto di token malevolo può emettere un evento Transfer mai avvenuto. Explorer e wallet che si fidano dei log di eventi lo mostreranno. Non si è mosso nulla; la registrazione è semplicemente una bugia.

Poi aspettano. Giorni, a volte mesi. L'attacco frutta la volta successiva in cui vai a pagare la stessa controparte, scorri la cronologia cercando «l'indirizzo che ho usato l'altra volta» e copi la riga sbagliata. Entrambi appaiono come 0x8f3C…9A063. Controlli le estremità. Le estremità combaciano.

Perché il consiglio abituale non regge

«Controlla sempre due volte l'indirizzo» è la raccomandazione standard e, da sola, fallisce, perché controllare è esattamente ciò che l'attacco dà per scontato. Tu hai controllato. Hai confrontato i sei caratteri mostrati dal wallet con i sei caratteri nella tua memoria, ed erano identici — perché l'attaccante li ha resi identici.

La verifica funziona solo quando ciò che confronti è costoso da falsificare. Quattro o sei caratteri combacianti costano secondi. Sedici caratteri combacianti costerebbero più di quanto valga il furto. Tutto il gioco sta in quale estremo di quella curva si trovano le tue abitudini.

C'è una seconda trappola sulle catene UTXO. Quel pagamento di polvere ora è una moneta nel tuo wallet e, se il tuo wallet consolida gli input automaticamente, può finire spazzata dentro una transazione successiva, collegando l'indirizzo impolverato al resto delle tue monete. È un problema di riservatezza più che di furto, ma è il motivo per cui la polvere va ignorata anziché riordinata.

Che cosa difende davvero

Non prendere mai un indirizzo da una cronologia delle transazioni. È l'unico cambiamento che conta. La tua cronologia è un registro di ciò che è successo, non un elenco di chi consideri affidabile — e chiunque al mondo può scriverci dentro. Prendi gli indirizzi dalla controparte, su un canale in cui noteresti un impostore, o da una rubrica che hai riempito tu.

Confronta indirizzi interi, o confronta qualcosa che riassuma l'indirizzo intero. Leggere tutti e quarantadue i caratteri non è realistico. Confrontare un identicon — una piccola immagine generata in modo deterministico dall'intera stringa — lo è, perché un sosia che differisce in un punto qualsiasi del centro produce un disegno visibilmente diverso. Il tuo occhio fa il lavoro che la tua pazienza non farà.

Usa un contatto salvato. Un indirizzo che hai salvato una volta, da una fonte che hai verificato una volta, non può essere avvelenato in seguito. Le rubriche servono a questo, ed è il motivo per cui SSP tiene i contatti sul tuo dispositivo e non su un server: un elenco di contatti è affidabile solo se nessun altro può modificarlo.

Manda un pagamento di prova per trasferimenti grandi o alla prima volta. Importo piccolo, conferma di ricezione fuori canale, poi il resto. Le commissioni rendono la cosa fastidiosa, ed è comunque corretta per un pagamento che ti dispiacerebbe perdere.

Ignora la polvere. Non spenderla, non «fare pulizia», e attenzione al consolidamento automatico se ci tieni alla riservatezza.

Che cosa fa SSP al riguardo

L'avvelenamento di indirizzi è un problema di resa grafica tanto quanto di sicurezza, quindi parte della risposta sta in come gli indirizzi vengono disegnati.

SSP accorcia gli indirizzi con sei caratteri iniziali e sei finali0x8f3C4b…9A0631 — invece dei tre o quattro usati da molte interfacce. Non è una scelta estetica. Ogni carattere in più moltiplica il costo di forza bruta per produrre una corrispondenza, e dodici caratteri visibili mettono un sosia convincente ben fuori dalla portata della generazione occasionale.

Il centro viene attenuato, non cancellato. Nella forma espansa il wallet mostra la stringa completa con le estremità in grassetto e il centro in un colore più chiaro, così la parte che gli attaccanti contano tu salti resta fisicamente sullo schermo, invece di essere sostituita da puntini di sospensione che potrebbero nascondere qualsiasi cosa.

Lo stesso codice gira in entrambe le applicazioni. splitAddressForDisplay in SSP Wallet è un port diretto di quello di SSP Key, tenuto deliberatamente identico perché un indirizzo appaia uguale sul browser e sul telefono. Questo conta perché SSP ti mostra la transazione due volte, su due dispositivi — e una seconda occhiata è un controllo vero solo se entrambe le superfici rendono la stessa cosa allo stesso modo. Due troncature diverse lascerebbero che una discrepanza si nasconda nella differenza.

Nella schermata di approvazione di SSP Key il destinatario è mostrato con un identicon generato dall'indirizzo completo, accanto al testo accorciato, e toccandolo si espande l'indirizzo intero come testo selezionabile. L'identicon è la parte che sconfigge una sostituzione a metà stringa: un attaccante può far combaciare i caratteri iniziali e finali, ma non può far combaciare un'immagine derivata da ogni carattere senza risolvere un problema molto più duro.

Niente di tutto questo è una garanzia. Se incolli un indirizzo avvelenato e lo approvi su entrambi i dispositivi, SSP lo firmerà: significa essere un wallet che controlli tu e non un custode che mette in dubbio le tue decisioni. Il multisig due-di-due impedisce ad altri di spendere le tue monete; non può impedirti di pagare di proposito la persona sbagliata. Come in ogni attacco che funziona facendoti agire, la difesa deve arrivare prima della firma, non durante.

La versione breve

L'avvelenamento di indirizzi funziona perché confronti sei caratteri invece di quarantadue, e l'attaccante sa quali sei. La difesa non è più diligenza: è non prendere mai un indirizzo da un posto in cui un attaccante possa scrivere, e usare strumenti che ti rimettano davanti le parti che salteresti.

Condividi questo articolo

Articoli correlati