Ricercatori trovano falla di sicurezza nella piattaforma Android: a rischio tutte le app

Google-Play-logo

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

 

Commenti

Ti invitiamo ad usare toni consoni e di rimanere in tema all'argomento trattato, in caso contrario, il sistema automatico potrebbe oscurare il tuo messaggio e potrebbero trascorrere fino a 48h per la verifica ed un'eventuale autorizzazione.
TuttoAndroid si riserva comunque il diritto di allontanare le persone non adatte a tenere un comportamento corretto e rispettoso verso gli altri.

  • #SuperUser

    non ho capito cosa centra il fatto delle chiavi private, che per di piu sono quelle da usare per firmare un pacchetto per caricarlo sullo store, anche utilizzando una firma differente non cambierebbe :/
    il problema sta negli sviluppatori non in android!

    • Il problema sta nel fatto che sia possibile ottenere tutte le applicazioni Android, decompilarle facilmente e ottenere le chiavi. È un problema della piattaforma.

      • Cosa fattibile con tutti i software… queste sono operazioni di reverse engineering. Qualsiasi sistema di sicurezza ha i suoi pro e contro. Il controllo solo server side non da tutti questi benefici. La chiave per fitmare le app è molto probabilmente una chiave pubblica che poi si interfaccia con il server dove è stata generata la privata già

        • Non è fattibile con iOS scaricare automaticamente tutte le applicazioni dell’App Store e decompilarle, ad esempio. Non è possibile mettere in piedi un sistema come PlayDrone.

          • Il fatto che non sia stato fatto non vuol dire che non sia possibile.

          • s789

            Ma come si fa a scaricare tutti gli apk presenti nel Play Store?

          • Tramite PlayDrone. È un’applicazione sviluppata dai due ricercatori. Riporto dall’articolo:
            “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.”

          • #SuperUser

            con il jailbreak si, allora possiamo dire che ios è penoso nella sicurezza, se lha mettiamo in questo modo

  • #SuperUser

    perchè sparare ancora una volta su android?
    per la ennesima volta la colpa e degli sviluppatori ignoranti che se ne fregano della sicurezza degli utenti!

    • Yes

      Infatti lo sviluppatore potrebbe creare una classe o un metodo per proteggere queste informazioni. La cosa migliore è quella di usare la crittografia per proteggere queste parti di codice. E quindi questa non è una vulnerabilità di android. E’ un problema dello sviluppatore.

  • Manhattan Lo Gnecco

    appena trovano un bug “android è insicuro, vulnerabile e bla bla bla” ma io onestamente sono contento quando trovano falle di sicurezza, almeno verranno correttte. mi preocupano di piu i lunghi silenzi in cui tutto dovrebbe essere “sicuro e affidabile”. e comunque è colpa degli sviluppatori ignoranti

  • firefox82

    Ma vi rendete conto di quello che scrivete? Indipendentemente dalla piattaforma se inserisco una chiave privata all’interno della mia app senza un minimo di sicurezza è chiaro che il primo che decompila un apk riesce a bucare il mio sistema in 2 secondi. Come già detto da tutti quelli che hanno commentato, il problema non è Android, ma i programmatori improvvisati che non sanno nemmeno che vuol dire sicurezza.

  • NON è un problema di Android se degli sviluppatori scellerati lasciano i token segreti nell’app!

  • Gabriele Profita

    Mi sembra che il titolo dell’articolo sia a dir poco errato e fuorviante.
    Non è una falla di Android, è semplicemente una cosa alla quale devono stare attenti gli sviluppatori prima di inserire le app nel Play Store, c’è una bella differenza!

    • Hai ragione, avrei dovuto scrivere “nella piattaforma Android”. Il problema è di piattaforma nel complesso, non tanto nel sistema operativo.

      • Gabriele Profita

        Non è neppure nella “piattaforma Android”, è al massimo nel Play Store, anzi neppure quello, è negli apk e app varie scritte male dai vari sviluppatori che non hanno bene in mente cosa sia la sicurezza e quali siano le regole basilari per tutelarsi.

        • Il fatto che sia possibile scaricare l’intero contenuto del Play Store in 24 ore mi pare un problema di sicurezza rilevante della piattaforma, però. Se non fosse possibile ti vorrei vedere a scaricare a mano 1’100’000 applicazioni…
          Se poi vogliamo dire che il Play Store non fa parte della piattaforma Android, allora si apre un dibattito del tutto diverso.

          • Gabriele Profita

            Ad ogni modo congratulazioni per l’ottima banda! :-P
            Vorrei capire anche come abbiano fatto a scaricare l’intero Play Store senza acquistare le rispettive licenze e come si possa scaricare un apk direttamente dal Play Store (cosa spesso utile per titoli gratuiti resi erroneamente non compatibili sul market con molti dispositivi, Real Racing 3 è un ottimo esempio di questa cosa).

          • Concordo, voglio anche io la loro linea! :D
            C’è tutto nel paper originale: http://www.cs.columbia.edu/~nieh/pubs/sigmetrics2014_playdrone.pdf
            Hanno sfruttato una debolezza nel metodo di autenticazione dei dispositivi, da quel che ho capito. Pare si tratti di una API privata che sono riusciti a scoprire e a sfruttare.
            Ho approfondito e scarica solo le applicazioni gratuite (che sono comunque 880’000), per evitare di spendere i miliardi per acquistare anche quelle a pagamento.

          • Gabriele Profita

            Ora me lo vado a leggere per bene, thanks!

      • firefox82

        Mi sembra che la confusione regna sovrana. Nell’articolo originale si parla chiaramente di informazioni private per accesso a servizi su rete, del tipo username/password. La chiave privata per firmare gli apk non c’entra assolutamente nulla.

        • Gli “sviluppatori improvvisati” comprendono anche quelli di Twitter, Facebook, Amazon, LinkedIn e altre società decisamente grosse.
          Il problema è di piattaforma perché non ci sono controlli né al caricamento dell’APK (ma questo è un prezzo da pagare per la grande libertà di Android) né ci sono mezzi che assicurino che non sia possibile scaricare in massa gli APK. Se questo non fosse possibile, scaricare a mano tutti gli APK e decompilarli sarebbe totalmente infattibile (a meno di non avere qualche migliaio di persone a disposizione, ça va sans dire).

          • firefox82

            Le falle di sicurezza si trovano ovunque basta vedere Microsoft, non è certo una azienducola di quattro gatti però ci sono buchi da tutte le parti. La grandezza delle aziende non significa nulla e ti posso assicuare che i “cani” si trovano ovunque. Sul discorso del download sinceramente non capisco. Si possono analizzare centinia di apk e allora? Se un app è bucata è bucata, vale per una, vale per 1000. I sistemi di sicurezza non possono certo basarsi sul mero principio del “nascondere”. Inoltre Google dovrebbe verificare se negli apk c’è gente che mette username e password in chiaro? Mah.

          • Non sto dicendo che “grosso = buono”, ma che non sono certo tutti “sviluppatori improvvisati”.
            Certo, i sistemi non si possono basare sul principio del “nascondere”, ma su quello del “non ti permetto di accedere” sì. Su altre piattaforme questo problema non sarebbe mai potuto venire a galla.

          • firefox82

            Se compro o scarico un sw (qui addirittura gratis) ho in mano qualcosa di cui posso fare reverse. Il fatto di poterlo fare in automatico su molte app non mi sembra che cambia nulla dal punto di vista sicurezza. Come ho detto vale per una e vale per 1000.

          • Riccardo

            Hanno semplicemente analizzato la piattaforma più diffusa. Leggiti bene l’articolo. La conclusione è che gli sviluppatori devono evitare di inserire chiavi segrete nel codice delle loro applicazioni in quanto è sufficiente effettuarne il reverse engineering per venirne a conoscenza (Lo puoi fare con tutte le app che install in quanto gli apk delle applicazioni sono nello smartphone). Il crawler è stato realizzato proprio per svolgere delle analisi statisticamente significative su una buona fetta del google play.

          • #SuperUser

            lo stesso è con gli .ipa su ios, basta avere il jailbreak…

          • Scusa ma sono d’accordo con il termine “improvvisati” e direi anche sprovveduti, qualsiasi sia lo sviluppatore, Amazon o chicchessia. Chiunque sa che i dati sensibili andrebbero gestiti diversamente e in particlare in questi casi tramite server. Il controllo non deve essere fatto a monte, un problema simile potrebbe esistere anche su iOS perchè il codice non ti impedisce di farlo e neanche le librerie. Il controllo meccanico fatto da Apple, giustifica anche i prezzi maggiori e i costi di licenza annui. Il problema di base sono gli sviluppatori che si spacciano per tali e non hanno un minimo di basi di sicurezza e di sviluppo e progettazione software! Il problema è alla base. Del resto si potrebbero fare miliardi di paragoni nella vita reale per i quali il problema rimane sempre l’utente (in questo caso lo sviluppatore) che usufruisce male dei servizi a sua disposizione.

          • Sono perfettamente d’accordo. Resta il fatto, però, che questo sia un problema di piattaforma di Android. Finora non ci sono stati questi problemi su nessun’altra piattaforma nonostante l’ampia diffusione. Questo mi sembra un dato di fatto innegabile.

          • Il fatto che sia stato scoperto su Android non vuol dire che non avvenga anche sulle altre piattaforme e non sia venuto a galla. Il problema, se così si chiama è un problema noto su tutti i sistemi, cioè la gestione delle licenze e delle chiavi pubbliche e private quando è necessario effettuare delle verifiche server. Pertanto, non è un problema di questa sola piattaforma, sempre che per piattaforma si intenda il mondo Android e non il sistema e il suo ecosistema. Semplicemente tizio e caio, da capire che competenze abbiano e se siano stati pagati solo per buttare parole, hanno deciso di effettuare un operazione simile sul Play Store.. Direi che la notizia originaria è semplicemente stata strutturata per creare flame e per ingannare chi ha poche competenze per effettuare una valutazione obiettiva sul problema. Piuttosto inosservato invece è stato (non da TuttoAndroid sia chiaro) il fatto che android 4.4.4 abbia chiuso una falla SSL, ha semplicemente fatto poco rumore e avrebbe dovuto farne molto.

          • #SuperUser

            anche su ios e su wp esiste il reverce engineering…
            pero lo store è piu controllato e questo non permette di scaricare in massa tutte le app.

          • Infatti il punto è proprio quello.

  • Il problema non è Android ma lo sviluppatore…. e le API offerte dai servizi esterni che devono e generalmente lo fanno, prevedere hashing per il token tramite algoritmi che lo correlino ad un seriale del dispositivo e protocolli di sicurezza server side.

Top