Una grave vulnerabilità è presente in una delle app preinstallate sugli smartphone Xiaomi, uno dei più grandi fornitori di telefonia mobile del mondo. A scoprirla i ricercatori del team Check Point Research.
In particolare, il bug è stato individuato nell’app di sicurezza identificata come MIUI Security Component ma il cui vero nome è Guard Provider, che dovrebbe proteggere il telefono rilevando il malware e che in realtà espone l’utente a un attacco di tipo man-in-the-middle (MiTM).
Sfruttando il traffico non mascherato generato dall’applicazione un attaccante remoto sarebbe infatti in grado di connettersi alla stessa rete Wi-Fi dello smartphone e poi, spacciandosi come parte di un aggiornamento SDK di terze parti, disabilitare i sistemi di protezione e iniettare codice malevolo per intercettare e rubare i dati dell’utente e installare ransomware o qualsiasi altro tipo di malware.
Il team di ricerca di Check Point Software Technologies ha già informato Xiaomi che ha prontamente rilasciato una patch di aggiornamento per i propri dispositivi. È dunque opportuno procedere quanto prima all’aggiornamento dei dispositivi mobile del produttore cinese, soprattutto se utilizzati in ambito lavorativo o in un contesto di smart working.
Tutta la faccenda, secondo Pierguido Iezzi, Swascan Cybersecurity Strategy Director e Co Founder, ci ricorda che “il mondo delle app in generale è un punto di attenzione che non può e non deve essere sottovalutato. È solo di qualche giorno fa la notizia dell’app Exodus che ha spiato gli italiani. Un’app disponibile negli store ufficiali. Qualche mese fa abbiamo parlato proprio di formjacking e false app bancarie. Le app, insomma, rappresentano un oggetto di estremo interesse per i cyber criminali perché permettono l’accesso agli smartphone: i device che di fatto hanno il numero maggiore e più interessante di informazioni su ognuno di noi”.
“Partendo da questi presupposti, dovrebbe essere prassi o consolidata l’idea e la necessità di misure di sicurezza adeguate”, continua Iezzi. “Ma questo non succede o meglio, spesso non accade. L’utente finale deve ovviamente prestare attenzione ed essere consapevole dei rischi nell’utilizzo di qualsiasi strumento digitale, ma non può venire meno la responsabilità di chi mette a disposizione le stesse app o servizi”.
L’analista di Swascan punta quindi il dito contro gli store ufficiali delle mobile app “che, ad oggi, non effettuano verifiche di security di rilievo all’atto della submission delle app” e contro i vendor dei dispositivi “che dovrebbero garantire strumenti di protezione e controllo embedded più efficaci. Le aziende che pubblicano le proprie app (sviluppate internamente o in outsourcing) dovrebbero testarle attraverso una attività di penetration test e code review. Misure di sicurezza e tutela che rappresentano la base consolidata della sicurezza preventiva”.
Indice degli argomenti
Vulnerabilità nelle app Xiaomi: dettagli tecnici
Tornando al caso Xiaomi, è bene ricordare che Guard Provider è un’applicazione preinstallata in tutti i telefoni Xiaomi mainstream che utilizza diversi kit di sviluppo software (SDK) di terze parti per offrire funzionalità di protezione, pulizia e potenziamento del dispositivo.
L’app, in particolare, offre all’utente la possibilità di scegliere fra tre differenti antivirus integrati per proteggere il proprio telefono: Avast, AVL e Tencent. Dopo averne selezionato uno, può impostarlo come motore antivirus predefinito per la scansione del dispositivo.
Proprio questa caratteristica rende l’applicazione vulnerabile. Ci sono infatti alcuni svantaggi nascosti nell’uso di diversi SDK all’interno della stessa applicazione. Poiché tutti condividono il contesto e le autorizzazioni dell’applicazione, potrebbero verificarsi questi due scenari:
- un problema in un SDK comprometterebbe la protezione di tutti gli altri;
- i dati di archiviazione di un SDK non possono essere isolati e sono quindi accessibili da un altro SDK.
Questa integrazione tra i diversi SDK crea non pochi problemi e può rendere possibile un attacco di tipo Remote Code Execution (RCE) come quello segnalato dai ricercatori Check Point.
Un possibile scenario di attacco
Supponiamo, ad esempio, che Avast sia impostato come scanner di sicurezza predefinito di Guard Provider. L’antivirus aggiorna periodicamente il database delle firme virali scaricando il file avast-android-vps-v4-release.apk APK nella directory privata di Guard Provider /data/data/com.miui.miui.guardprovider/app_dex/vps_update_<timestamp>.apk.
Come si può vedere, il nome del file indica anche il timestamp di quando l’aggiornamento è stato scaricato (ad esempio vps_update_2019020205-124933.apk).
L’APK viene quindi caricato ed eseguito da Avast SDK prima della scansione del dispositivo.
Purtroppo, a causa del fatto che il meccanismo di aggiornamento utilizza una connessione HTTP non protetta per scaricare questo file, un criminal hacker può effettuare un attacco MiTM, rilevare i tempi dell’aggiornamento Avast e prevedere quale sarà il nome del file APK contenente il prossimo update: gli basterà semplicemente intercettare la parte di risposta della connessione contenente la stringa http://au.ff.avast.sec.miui.com/android/avast-android-vps-v4-release.apk.
Da questo momento in poi, l’attaccante MiTM è quindi in grado di prevenire futuri aggiornamenti di Avast rispondendo con un “errore 404” alle richieste di tipo http://au.ff.avast.sec.miui.com/android/vps_v4_info.vpx.
Una volta che l’attaccante intercetta e blocca le connessioni al server Avast, l’applicazione Guard Provider inizierebbe subito ad utilizzare AVL come antivirus predefinito, aggiornando immediatamente l’applicazione con il suo database dei virus. Ciò avviene verificando l’esistenza di nuove firme di virus richiedendo un file di configurazione (del tipo http://update.avlyun.sec.miui.com/avl_antiy/miuistd/siglib/2018070704.cj.conf). Questo file .conf ha un formato testo in chiaro che indica l’URL, la dimensione e l’hash MD5 dell’archivio ZIP con nuove firme.
Dopo aver elaborato il file di configurazione, AVL scarica l’archivio delle firme indicato nel campo read_update_url e lo decomprime nella directory di Guard Provider.
Ancora una volta, sfruttando l’attacco MiTM, il criminal hacker è in grado di modificare il contenuto del file .conf impostando la variabile is_new=0 per mostrare l’esistenza di un nuovo aggiornamento e fornire il link URL a un file ZIP compromesso creato ad hoc.
A questo punto, il criminal hacker è in grado di sovrascrivere il contenuto del file di configurazione contenente le firme aggiornate di Avast con il contenuto dello ZIP compromesso appena scaricato sfruttando il modulo di aggiornamento di AVL (ricordiamo, infatti, che entrambi gli SDK condividono lo stesso spazio di memoria e i loro file sono liberamene accessibili). E teoricamente sarebbe in grado di sovrascrivere qualsiasi file contenuto nella sandbox utilizzata dai diversi SDK.
Tutto quello che l’attaccante deve fare ora è interrompere l’esecuzione di AVL AntiVirus e attendere che l’app Guard Provider riattivi Avast. Il file APK maligno contenuto nello ZIP compromesso precedentemente scaricato dall’attaccante nella sandbox di Guard Provider viene caricato ed eseguito dall’SDK di Avast.
L’attacco MiTM può quindi essere portato a compimento con successo perché il file di firma del precedente aggiornamento di Avast ormai sovrascritto dall’attaccante non è stato verificato prima del caricamento in quanto Guard Provider lo ha già controllato la prima volta che è stato scaricato.
Uno scenario di attacco purtroppo reale che solleva la questione da sempre dibattuta su chi dovrebbe controllare il controllore. Nel frattempo, come dicevamo prima, il consiglio è quello di aggiornare subito l’applicazione Guard Provider con la versione patchata rilasciata da Xiaomi.