Google Bouncer e la protezione del Play Store contro i Malware
Tempo di lettura: 7 minuti
Data pubblicazione: June 7, 2017
Android è il sistema operativo open più diffuso al mondo, con una percentuale di utilizzo che supera il 60% tra tutti i sistemi per smartphone al mondo. Come qualsiasi dispositivo mobile, presenta molteplici vettori di attacco, partendo da semplici vulnerabilità in un’applicazione mobile, fino ad arrivare ad implementazioni errate del protocollo SS7.
I problemi principali di sicurezza sono:
Frammentazione del mercato: rispetto ad Apple, i vendor sono aziende differenti rispetto al produttore del software (Google). In questo modo i produttori degli smartphone possono non aggiornare il sistema e decidere di non applicare patch di sicurezza;
Semplicità di root: la scelta di non rilasciare il sistema dando i permessi di amministratore non è del tutto sbagliata. In questo modo non si dovrebbero causare danni al proprio telefono, ma si agisce solo a livello di applicazioni. Il problema è che la semplicità con cui ormai si trovano guide su come rootare il proprio dispositivo è disarmante, rendendo quasi inutile la protezione;
Applicazioni e permessi: Google ha avuto la bella idea di gestire le applicazioni come una Sandbox a sè stante, molto simile al sistema implementato da UNIX. Il problema si pone quando viene data la possibilità ad un’applicazione di sfruttare un permesso che non è utile ai fini del funzionamento della stessa (l’app torcia che chiede l’utilizzo di internet per intenderci) e l’utente, senza permessi di root, se non con particolari applicazioni di terze parti, può solo accettare.
Visto che il principale vettore di attacco sono le applicazioni, Google ha implementato un servizio di sicurezza che controlla a monte appena ne viene pubblicata una nel Play Store, in modo che se essa presenta determinati pattern di attacchi, verrà rimossa in tempistiche ridotte.
Introdotto nell’ormai lontano 2012, Google Bouncer è un quindi sistema di scansione automatica delle applicazioni che utilizza diverse tecniche, tra cui:
Analisi statica alla ricerca di minacce note;
Esegue il software in un emulatore virtuale e ne identifica il comportamento;
Analizza i dati che l’applicazione inserisce nel sistema alla ricerca di eventuali stranezze.
In teoria non dovrebbero essere conosciute le azioni che intraprende il Bouncer verso le applicazioni, proprio per evitare di essere aggirato. Ma dei ricercatori (Oberheide e Miller) poco dopo l’introduzione del bouncer, hanno avuto la grandiosa idea di inserire nello store un'applicazione che inviasse dei log al loro server in merito all’utilizzo della stessa.
Con questo metodo il Bouncer è stato dissezionato in maniera completa (si trova tutto nel paper), ma alcune delle caratteristiche vitali sono:
Utilizza un emulatore virtuale, QEMU;
Avvia e traccia il comportamente del****l’app per 5 minuti, nel caso la stessa non faccia nulla di male in questo periodo supera questo test. Ma in questo modo, chi è a conoscenza del test, può programmare il software ed eseguire azioni malevole solo dopo un certo tempo;
Esplora l’app in ogni pulsante e bottone, ma anche questo può essere un limite. Si potrebbe riconoscere il comportamento di un utente reale (che non clicca in maniera compulsiva tutti i pulsanti presenti nell’arco di pochi secondi) dal comportamento del Bouncer;
Il problema principale che ha evidenziato la ricerca non è tanto il fatto che esegue poche analisi in merito all’applicazione, ma che è stata praticamente messa a nudo (permettendo, tra l’altro, la creazione di una reverse shell e relativo exploit) con una “semplice” applicazione di footprinting.
L’idea di inserire un controllo a monte è ottimale, specialmente con una divisione così netta tra vendor e produttore del sistema operativo, ma certamente non è perfetta, visto gli innumerevoli malware che girano quotidianamente nel Play Store.
Nel market sono presenti diverse problematiche, tra le quali:
Nessuna firma dell’applicazione, a differenza dell’Apple store;
Nessuna possibilità di gestione dei permessi da parte dell’utente. Se un’applicazione chiede un servizio che non è necessario, perchè l’utente non dovrebbe avere la possibilità di rimuoverlo? Ormai c’è una ridondanza di richieste di permessi, andando ad intaccare anche la privacy stessa dell’utente, oltre che la sicurezza;
Analisi blanda dell’applicazione. L’idea del Bouncer è ottima, ma perchè viene (o veniva, essendo ormai passati parecchi anni dalla ricerca) eseguita per così poco? L’analisi statica e dinamica dovrebbe esser migliorata, in modo da eseguire una scrematura migliore delle applicazioni.