playstore

Playstore: poco sicuro? come lo organizzerei io

Quante volte abbiamo sentito parlare male di Android? quante volte abbiamo sentito la frase “Android è pieno di malware”, “non è sicuro”, “è un colabrodo”? Personalmente l’ho sentito davvero troppe volte, ma siamo sicuri che la colpa è di Android? Non direi. Android con le ultime versioni è davvero diventato un ottimo Sistema Operativo, sotto tutti i punti di vista (performance, sicurezza, stabilità, ecc..), se proprio vogliamo trovare una falla in tutto l’ecosistema, se proprio vogliamo dare la colpa a qualcosa, il responsabile credo sia il playstore.

Questa è solo la mia personalissima opinione, e come tale va presa.

La sicurezza di Android

Iniziamo con la parte noiosa, in cui vi spiegherò perchè ritengo Android un sistema operativo sicuro. Se non vi va di sentirlo, passate alla sezione successiva, ma ritengo sia importante conoscere come vanno le cose. Android è un sistema sicuro, tanto quanto la concorrenza. Non lo dico per simpatia, o come direbbe qualcuno “da fanboy”, ma lo dico per motivi tecnici. Android è un sistema operativo opensource basato sul kernel linux, e questo lo sappiamo tutti. Ciò che non tutti sanno è che Android ha diversi strumenti per la sicurezza, e non tutti sono visibili all’utente.

Play protect

Nell’ultimo anno, Google ha introdotto play protect, cos’è? sostanzialmente è una sorta di antivirus, esegue la scansione delle applicazioni installate (sia tramite fonti esterne che tramite playstore). Non si limita ad effettuare la scansione solo a livello client, ma anche a livello server, controlla le app pubblicate nel playstore e verifica che non abbiano comportamenti malevoli.

Sandbox

Un altro elemento fondamentale della sicurezza di Android, è la sandbox. Questa è presente sin dalla nascita di Android (ai tempi c’era pure una virtual machine). Cosa è la sandbox? vedetela come una scatola, un contenitore. Ogni applicazione eseguita in Android, viene avviata dentro alla sua personale sandbox, ed è isolata dal resto del sistema. Quindi l’app1 è isolata dall’app2 e viceversa. Queste applicazioni possono accedere alle risorse all’esterno della loro “scatola” tramite i permessi.

Permessi

Come ogni sistema operativo che si rispetti, Android ha una sua politica dei permessi. Ogni applicazione può accedere solo alle risorse che l’utente gli mette a disposizione. Per poter scattare foto, un’applicazione deve avere il permesso per poterlo fare (idem per tutto il resto, accesso ai contatti, accesso all’ID del dispositivo, accesso ai messaggi, ecc…). Sostanzialmente, se voi installate un’app “calcolatrice” che chiede i permessi per la Fotocamera, Contatti, SMS, chiamate, ecc… qualche domanda sulla sua sicurezza dovete farvela. Questi permessi siete voi a darglieli, avete presente quell’avviso che vi esce fuori quando installate (o nelle recenti versioni di android, quando eseguite un’applicazione)? ecco quel simpatico messaggio, non è messo li tanto per. Quelli sono i permessi a cui l’applicazione tenta di accedere e siete voi che potete scegliere se concederglieli o meno.

SELinux

SELinux, è un modulo del kernel Linux, probabilmente molti di voi, non ne avranno mai sentito parlare. Cos’è SELinux? È un po difficile da spiegare. SELinux è un sistema di controllo degli accessi, in poche parole, quando un processo tenta di fare una determinata operazione, il kernel, prima di lasciargliela fare, interroga SELinux per chiedergli se il processo è autorizzato o meno. Ci sarebbe altro da dire sul suo funzionamento, ma per ora fermiamoci qui, visto che il suo funzionamento è molto tecnico, e probabilmente la documentazione ufficiale sa spiegarsi meglio di quanto non farei io.

Crittografia

Android, utilizza la crittografia per proteggere i dati degli utenti.  Vi permette facilmente di cifrare tutta la memoria interna e se volete pure la memoria esterna, permettendovi così di mettere al sicuro tutti i vostri dati. Cos’è la crittografia? in questo articolo potete leggere in cosa consiste.

È open source

Qui qualcuno può non essere d’accordo, ma essendo OpenSource, chiunque può leggere i sorgenti, studiarli, capirli, e trovare falle di sicurezza. Nel mondo è pieno di hacker etici, di esperti di sicurezza che ogni giorno controllano codice in cerca di falle, per poi segnalarle agli sviluppatori e farle chiudere. Quindi avere tanti occhi può senz’altro portare ad una maggior sicurezza

Tanto altro

Oltre a tutto questo troviamo svariati altri strumenti di difesa diretti e indiretti, come ad esempio il Verified Boot che controlla in fase di avvio se il sistema operativo è stato modificato e tanti altre accortezze. Qui potete trovare un report completo (in inglese) stilato da google.

Aggiornamenti

Google aggiorna Android ogni mese rilasciando 2 o 3 level patch (sempre vengono rilasciate l’1 e il 5 del mese, ogni tanto capita di trovare patch anche il 6 del mese), che servono a chiudere le falle trovate. Ok non tutti i produttori aggiornano ogni mese le patch, ma questo non è un problema di Android, Android viene aggiornato, se poi il produttore X non aggiorna i suoi dispositivi, la colpa è solo sua.

 

Che c’entra il playstore?

Dopo avervi annoiato sul perchè ritengo Android un sistema operativo sicuro, veniamo al punto critico, il Playstore. Anche se il playstore NON fa parte di Android, ma fa parte delle gapps (google app), è innegabile dire che quasi tutti gli smartphone lo hanno preinstallato, e di fatto è lo store di riferimento di Android.

Lo store dovrebbe essere visto come una fonte sicura, dove sei sicuro che tutto ciò che scarichi, sia sicuro al 100% (come ad esempio sono i repository nelle distribuzioni GNU/Linux, per chi conosce un po l’ambiente), o per lo meno se non si arriva al 100%, ci si dovrebbe avvicinare molto.

Attualmente sul playstore chiunque può, con facilità pubblicare la propria App. Questa libertà è un bene perchè permette a tutti di pubblicizzare la propria app, ed è un bene perchè lo store si popola in fretta. Ma ha anche un riscontro negativo, ovvero se è così tanto facile pubblicizzare un’app qualcuno potrebbe sfruttare questa libertà per pubblicare app malevole.

Ed effettivamente è capitato diverse volte che nel playstore venissero trovati malware (che ripeto, siete voi ad installare, quindi non è colpa di Android se prende malware, in quanto voi li avete installati, voi gli avete concesso i permessi). È innegabile che google faccia pochi controlli sulle app immesse, e il solo controllo tramite IA non sempre si è verificato sufficiente. Ovviamente non è pensabile che Google possa controllare manualmente oltre 3.7milioni di app (Aggiornato a marzo 2018). Però io mi sono fatto una mia idea su come gestirei l’immissione di nuove App nel playstore.

 

La mia idea

Partiamo dal presupposto che di tutti gli sviluppatori che pubblicano le loro app, abbiamo essenzialmente 2 tipi di sviluppatori:

  • Sviluppatori famosi, e/o grandi aziende (ad esempio Facebook, Telegram LLC, Whatsapp Inc, ecc…)
  • Piccoli sviluppatori, che sono tutti quegli sviluppatori sconosciuti, come posso essere io, o qualcun altro che ha pubblicato 1-2 app nel playstore, ecc..

Prendendo in esame questi 2 tipi di utenti viene naturale pensare che uno sviluppatore famoso o una grande azienda famosa, non ha motivo di pubblicare malware nel playstore, perché se si venisse a sapere che (esempio) Facebook (parlo dell’azienda/sviluppatore, non della singola app) ha immesso nel playstore un’applicazione malevola, avrebbe ripercussioni molto negative sull’intera Azienda. Quindi Google non ha bisogno di controllare manualmente tutte le App pubblicate da questi sviluppatori.

Certificazione

Di conseguenza potrebbe mettere in piedi un meccanismo di certificazione (come ad esempio c’è su YouTube, dove la “V” blu ti certifica che un determinato utente è veramente chi dice di essere), chi ha la certificazione è uno sviluppatore registrato/schedato (quindi se poi si scoprisse che una tua App è malevola, si hanno tutti i dati per risalire alla persona reale, e quindi fargli pagare le conseguenze delle sue azioni), ed è esente dal controllo manuale, quindi tutte le Applicazioni pubblicata da un utente certificato, saranno controllate solo dai sistemi automatici.

Al contrario un piccolo sviluppatore, non ha la fama per dare garanzie e potrebbe benissimo crearsi l’account, solo per immettere malware, cercando di guadagnare soldi in maniera illecita. Questi utenti non avrebbero alcuna certificazione sul playstore (niente spunta blu). Google dovrebbe controllare manualmente (dopo aver superato il controllo da parte dell’IA), con persone reali, solo le App di questi sviluppatori senza certificazione.

Vantaggi

A questo punto ci ritroviamo ad avere

  • Utenti certificati
  • Utenti non certificati

l’utente finale (chi installa le app) sa che degli sviluppatori certificati può fidarsi, perchè, come detto prima, non hanno motivo di rovinare la loro fama producendo malware; inoltre anche se uno sviluppatore certificato pubblicasse un malware, Google saprebbe con certezza chi c’è dietro a quel malware. Mentre degli sviluppatori non certificati avremo un badge, un’icona, o quello che volete, che ci dice:

“L’app ha superato il controllo tramite IA e tramite controllo manuale da parte del team Google”.

In questo modo l’utente ha maggiori garanzie, maggior sicurezza, maggior tranquillità.

E le App già pubblicate?

Cosa accade per le app vecchie?? Quelle appartenenti a sviluppatori certificati, riceveranno la certificazione dell’utente, e quindi verranno considerate sicure. Le altre invece, siccome è impensabile pensare di controllarle tutte a mano, riceveranno semplicemente il badge, l’icona:

“L’app ha superato il controllo da parte dell’IA”

Svantaggi

Gli unici svantaggi che mi vengono in mente sono per google e gli sviluppatori non certificati:

la prima in quanto dovrà spendere un po di risorse per fare controlli manuali delle app (ma stiamo parlando di google, non della prima azienda che passa). Ma comunque la mia idea, è un ragionevole compromesso, tra lo sforzo da parte di google, e la sicurezza degli utenti, perchè grazie alla certificazione, Google potrebbe risparmiarsi di controllare App di sviluppatori ritenuti affidabili.

Mentre gli sviluppatori non certificati, hanno come svantaggio, una maggiore attesa affinchè l’app approdi sul playstore (ma non mi pare la fine del mondo), visto che dovranno essere controllate anche manualmente.

Le App vecchie non saranno ricontrollate manualmente, ma tanto non sarebbero comunque controllate, direi che è pur sempre meglio di niente no?

 

Questa è la mia idea su come dovrebbe essere ristrutturato il playstore, che ne pensate? È da un po di mesi che lo sto pensando.