Diverse popolari applicazioni Android disponibili sul Google Play Store sono suscettibili a una vulnerabilità correlata alla traversata di percorso che potrebbe essere sfruttata da un’applicazione malevola per la sovrascrittura di file dannosi nella directory home dell’app vulnerabile.
Il funzionamento della vulnerabilità riguardante la sovrascrittura in queste applicazioni
“Le implicazioni di questo modello di vulnerabilità includono l’esecuzione di codice arbitrario e il furto di token, a seconda dell’implementazione dell’applicazione“, ha detto Dimitrios Valsamaras del team di Intelligence sulle Minacce di Microsoft in un rapporto pubblicato mercoledì, riguardo questa vulnerabilità sulla sovrascrittura delle app.
Lo sfruttamento con successo del bug della sovrascrittura potrebbe consentire a un attaccante di prendere pieno controllo del comportamento dell’applicazione e sfruttare i token rubati per ottenere accesso non autorizzato agli account online della vittima e ad altri dati.
Due delle app che sono state trovate vulnerabili al problema sono le seguenti:
- Xiaomi File Manager (com.mi.Android.globalFileexplorer) – Oltre 1 miliardo di installazioni
- WPS Office (cn.wps.moffice_eng) – Oltre 500 milioni di installazioni
Anche se Android implementa l’isolamento assegnando a ciascuna applicazione il proprio spazio dati e di memoria dedicato, offre ciò che viene chiamato un provider di contenuti per facilitare la condivisione di dati e file tra le app in modo sicur; tuttavia, le sviste nell’implementazione potrebbero consentire di eludere le restrizioni di lettura/scrittura (portando quindi ad una sovrascrittura “indiscriminata” all’interno della directory home di un’applicazione.
Quali problemi può causare la sovrascrittura “indiscriminata” su queste applicazioni, secondo Microsoft
“Questo modello basato su provider di contenuti fornisce un meccanismo di condivisione file ben definito, consentendo a un’applicazione di servizio di condividere i propri file con altre applicazioni in modo sicuro con un controllo dettagliato“, ha detto Valsamaras.
“Tuttavia, ci siamo spesso imbattuti in casi in cui l’applicazione consumatrice non convalida il contenuto del file che riceve e, cosa più preoccupante, utilizza il nome file fornito dall’applicazione di servizio per memorizzare nella cache il file ricevuto all’interno della directory dati interna dell’applicazione consumatrice.”
Questa trappola può avere gravi conseguenze quando un’applicazione di servizio dichiara una versione dannosa della classe FileProvider per consentire la condivisione di file tra le app e, in ultima analisi, causare all’applicazione consumatrice di sovrascrivere file critici nel proprio spazio dati privato.
In altre parole, il meccanismo sfrutta il fatto che l’applicazione consumatrice si fida ciecamente dell’input per inviare payload arbitrari con un nome file specifico mediante un intento personalizzato ed esplicito e senza la conoscenza o il consenso dell’utente, portando all’esecuzione di codice potenzialmente dannoso.
Di conseguenza, ciò potrebbe consentire a un attaccante di sovrascrivere il file delle preferenze condiviso dell’applicazione di destinazione e farlo comunicare con un server sotto il loro controllo per estrarre informazioni sensibili.
La risposta di Google riguardo alla vulnerabilità della sovrascrittura
Un altro scenario coinvolge app che caricano librerie native dalla propria directory dati (anziché “/data/app-lib”), in questo caso un’applicazione fraudolenta potrebbe sfruttare la falla sopra menzionata per sovrascrivere una libreria nativa con codice dannoso che viene eseguito quando la libreria viene caricata.
A seguito della divulgazione responsabile, sia Xiaomi che WPS Office hanno risolto il problema a partire da febbraio 2024; tuttavia, Microsoft ha dichiarato che il problema potrebbe essere più diffuso, richiedendo che gli sviluppatori adottino misure per verificare le proprie app per problemi simili.
Anche Google ha pubblicato le proprie linee guida in materia, esortando gli sviluppatori a gestire correttamente il nome file fornito dall’applicazione server.
“Quando l’applicazione client scrive il file ricevuto nello storage, dovrebbe ignorare il nome file fornito dall’applicazione server e invece utilizzare un proprio identificatore univoco generato internamente come nome file“, ha detto Google. “Se la generazione di un nome file univoco non è praticabile, l’applicazione client dovrebbe sanificare il nome file fornito.”