Un professore ed un dottorando della Columbia University hanno scoperto una grave falla di sicurezza in Android, indipendente dalla versione del sistema operativo. Il problema riguarda infatti il Play Store e il modo in cui le applicazioni vengono create dagli sviluppatori.

Per scoprire di più sulle applicazioni, il professor Jason Nieh e il dottorando Nicolas Viennot hanno sviluppato un tool chiamato PlayDrone che usa varie tecniche per superare i controlli di Google e scaricare le applicazioni. A questo punto procede a decompilarle per ottenere il codice sorgente. Per scaricare tutto il catalogo di 1.1 milioni di applicazioni presenti sul Play Store e decompilarle serve circa una giornata.

Tra i vari problemi evidenziati dalla ricerca ne compare uno critico per quanto riguarda la sicurezza: gli sviluppatori infatti spesso includono le loro chiavi private per la firma all’interno delle applicazioni, ma questo significa che dei malintenzionati possono recuperare tali chiavi e usarle per rubare dati dai server. Nelle parole della pubblicazione:

La crescita dell’architettura Web 2.0 ha visto una proliferazione di API per i servizi cloud. La comunicazione tra servizi è solitamente protetta con token segreti che sono conosciuti solo dalle parti coinvolte. Quando implementati a dovere, i token segreti non sono mai condivisi e sono archiviati su server sicuri dove possono essere protetti adeguatamente. Tuttavia, abbiamo scoperto usando PlayDrone che, quando questi protocolli tra servizi sono stati adattati alle applicazioni mobile, gli sviluppatori sono ora soliti inserire questi token segreti direttamente nelle applicazioni. Mentre gli sviluppatori possono credere che i sorgenti delle loro applicazioni siano ben guardati, la facilità di decompilazione e la vasta disponibilità di applicazioni per il mobile rende il recupero dei token segreti relativamente semplice.

Un esempio pratico. Sviluppo un’applicazione che comunica con un mio server ospitato da Amazon Web Services. Creo un sistema di autenticazione che usa una chiave segreta. Anziché recuperare questa chiave dal server, la integro direttamente nell’applicazione. Questa chiave serve, ad esempio, per accedere a risorse ospitate sul mio server. Se malintenzionati ottengono la chiave, ottengono potenzialmente accesso a tutto quello che non ho adeguatamente protetto sul server; in alternativa, possono rendere il mio servizio difficile da raggiungere o danneggiarmi in altro modo.

Un seondo problema è quello dell’autenticazione tramite OAuth: quando, ad esempio, si effettua il login con Facebook, la teoria vorrebbe che il token fornito da Facebook per autenticare l’accesso fosse conservato su un server e non sul dispositivo. Ciò spesso non accade ed il token viene conservato sul dispositivo, esponendo il servizio a vari attacchi.

Nieh e Viennot hanno già contattato tutte le parti in causa che hanno già risolto molti dei problemi. Google si è impegnata a controllare meglio le applicazioni che vengono caricate sul Play Store.

Tutto è bene quel che finisce bene? Forse. Ma questo dimostra che Android deve ancora migliorare molto sul versante della sicurezza.

Via