Il rapporto sul modello di minaccia del TrinityWallet (disponibile qui) prodotto da Cybersecurity Lab presso l’università COMSATS di Islamabad, delinea diverse minacce importanti. Nell’interesse della piena trasparenza, questo articolo delinea gli sforzi di mitigazione intrapresi dal team TrinityWallet per garantire la massima sicurezza a tutti gli utenti finali.

Minaccia 1: l’attaccante ruba il seme controllando gli Appunti di Android attraverso un’app maliziosa

A causa di problemi di sicurezza inerenti agli appunti di Android, si consiglia di evitare l’uso degli appunti con dati sensibili. A differenza del “ecosistema chiuso,” trovato in iOS, Android è meno restrittivo per quanto riguarda le funzionalità di un’app. Di conseguenza, qualsiasi app può leggere e modificare i dati memorizzati negli appunti, anche quando l’app è in background. Questo presenta un potenziale vettore di attacco nel processo di onboarding di TrinityWallet. Una volta che l’utente copia il seme negli appunti, per ad esempio incollarlo nel proprio gestore di password, questo è disponibile per qualsiasi app.
Successivamente l’utente copia il seme dal gestore delle password in TrinityWallet per verificare che il seme sia stato memorizzato correttamente (o per aggiungere un vecchio seme) durante il processo di onboarding, anche qui il seme è vulnerabile.
TrinityWallet mitiga questa minaccia integrando Keepass2Android, un gestore di password open-source. Come mostrato in questo tutorial di Marcus Jang, gli utenti possono salvare in sicurezza i propri seed in Keepass2Android e completare il processo di verifica senza mai copiare il seed negli appunti.


Furto di fondi

Minaccia 2: l’attaccante ruba i fondi manipolando l’indirizzo di ricezione copiato negli appunti di Android

Come menzionato nella Minaccia 1, gli appunti Android sono accessibili e modificabili da qualsiasi app. Se un utente copia ed incolla un indirizzo a cui inviare fondi, un’app maliziosa potrebbe rilevare che un indirizzo IOTA è stato copiato negli Appunti e quindi modificare l’indirizzo IOTA con un indirizzo di un wallet appartenente ad un utente malintenzionato. Quando l’utente ignaro incolla l’indirizzo in TrinityWallet, incollerà l’indirizzo dell’attaccante e probabilmente non lo verificherà prima di inviare fondi.
Per garantire che l’utente sia a conoscenza di questo potenziale vettore di attacco, TrinityWallet rileverà quando un indirizzo IOTA è presente negli appunti e quando l’utente preme il campo dell’indirizzo di ricezione nel wallet. Quando l’utente lo incolla nell’app per inviare una transazione, TrinityWallet avviserà l’utente che deve controllare l’indirizzo ed assicurarsi che sia corretto. Inoltre, nel tentativo di semplificare il processo e aumentare la sicurezza, TrinityWallet ha incorporato l’uso dei codici QR per l’invio di fondi. L’uso efficace di questa funzione contribuirà a ridurre la probabilità di questo metodo di attacco.


Minaccia 3: La modifica di data/ora del sistema impedisce agli utenti di accedere all’applicazione. L’applicazione si blocca nella schermata di caricamento.

La minaccia numero 3 è stata valutata come “a basso rischio” e si verifica solo su dispositivi Android. Questo vettore di attacco non mette in pericolo l’utente oppure i suoi fondi. In questa minaccia, quando la data e l’ora del sistema venivano modificate manualmente, l’accesso al wallet è bloccato.

Ciò si verifica a causa di una funzionalità di sicurezza inerente alla build di TrinityWallet, con il suo utilizzo di HTTPS per la connessione ai nodi. HTTPS utilizza SSL per la crittografia del traffico e, se la data di sistema è impostata al di fuori della finestra del certificato SSL, il nodo non consente le connessioni dall’esterno a causa del mancato rispetto dei criteri necessari per mantenere attiva una connessione HTTPS. Ciò nega l’accesso al TrinityWallet ma i fondi rimangono al sicuro.

Per risolvere questo problema, l’ora e la data del sistema devono essere reimpostate sull’ora locale corrente, a quel punto il TrinityWallet è in grado di connettersi correttamente ai nodi ed inviare i dati tramite canali crittografati usando HTTPS. Al momento stanno istituendo una notifica che avverte l’utente che la data e l’ora sono impostate in modo errato.


Minaccia 4: l’attaccante ruba informazioni sensibili usando un attacco di phishing attraverso un link diretto

Trinity supporta il deep linking (riempiendo le informazioni sulla transazione dai contenuti di un collegamento Web) registrandosi come gestore dello schema URI “iota:” o “iota: //”. Tuttavia, né Android né iOS rendono uno schema URI esclusivo per una singola app. In altre parole, più app possono gestire lo stesso schema URI. Wang, et al spiegano in modo più dettagliato nel loro rapporto sulla sicurezza dei deep links. Se TrinityWallet ed un’altra app (che supporta anche lo schema URI IOTA) sono entrambe installate su un dispositivo Android, quando l’utente tocca un link diretto, verrà presentata una finestra di dialogo che chiede quale app aprire (vedere qui). Un’app maliziosa potrebbe camuffarsi da TrinityWallet in modo che all’utente siano presentate due opzioni identiche. Un’app maliziosa, potrebbe potenzialmente presentarsi da vera e propria app TrinityWallet e chiedere all’utente informazioni riservate. L’app maliziosa può quindi accedere ai fondi dell’utente. Su iOS, non esiste un processo definitivo per scegliere quale applicazione gestirà uno schema URI (vedi qui).

Per mitigare questo rischio, TrinityWallet disabiliterà il deep linking per il momento fino a quando non saranno implementate le funzionalità di sicurezza per confermare l’autenticità dell’app. Questo può includere funzionalità come le immagini di sicurezza, una caratteristica comune sui siti homebanking di banche.


Minaccia 5: l’attaccante ottiene semi controllando la memoria volatile durante la nuova configurazione del seme

È stata valutata una versione molto primitiva del TrinityWallet per il desktop, in cui il seme generato in fase di onboarding risiedeva nella cronologia delle modifiche dello stato del TrinityWallet. Il seme era quindi leggibile come testo nella memoria.

Questa minaccia è stata mitigata come segue:

  • Aggiornando la memoria di archiviazione del seme durante l’onboarding, utilizzando la stessa memoria di archiviazione (crittografata) utilizzata per l’archiviazione del seme persistente.
  • Cancellando il seme generato dalla memoria quando non è più necessario per l’impostazione del TrinityWallet.

Spero che questo aiuti a spiegare alcune delle decisioni progettuali che sono state prese nel TrinityWallet.

Ringrazio Navin Ramachandran per la versione in inglese.
Per ulteriori informazioni in italiano o tedesco trovate i miei contatti a questa pagina.

Se avete trovato utile la mia traduzione, accetto volentieri delle donazioni 😉

IOTA:
CHQAYWPQUGQ9GANEWISFH99XBMTZAMHFFMPHWCLUZPFKJTFDFIJXFWCBISUTVGSNW9JI9QCOAHUHFUQC9SYVFXDQ9D

BTC:
1BFgqtMC2nfRxPRge5Db3gkYK7kDwWRF79

Non garantisco nulla e mi libero da ogni responsabilità.


Also published on Medium.