Common Vulnerabilities and Exposures o CVE è un progetto che raccoglie vulnerabilità e falle di sicurezza note nei vari software (sia applicazioni che, per esempio, firmware utilizzati nei dispositivi hardware).
Consultabile a questo indirizzo, il database contiene un elenco di tutte le vulnerabilità ad oggi conosciute.
Interessante è il database pubblicato su CVE Details che raccoglie e organizza in forma più organica i dati pubblicati sul sito Mitre.
Le informazioni pubblicate sono sufficienti per stabilire qual è il sistema operativo più sicuro nel segmento dei dispositivi mobili?
Sistema operativo più sicuro per i dispositivi mobili: basta controllare il numero di vulnerabilità scoperte per farsi un’idea?
A fine febbraio molti siti web italiani hanno tratto delle conclusioni, come minimo, molto affrettate bollando senza appello Android come il sistema operativo “mobile” meno sicuro in assoluto.
L’inappellabile giudizio è stato emesso limitandosi a verificare i numeri pubblicati in questa pagina su CVE Details.
I dati sembrano, di primo acchito, davvero “impietosi”: nel 2016 sono state scoperte ben 523 vulnerabilità in Android mentre in Apple iOS appena 161.
Come metro di paragone, Windows 10 è addirittura in 14esima posizione mentre ai primi posti “svettano”, per numero di lacune di sicurezza scoperte, distribuzioni come Debian e Ubuntu.
Android sistema operativo da evitare come la peste? Nient’affatto.
Sappiamo che quando si parla di sistemi operativi e, soprattutto, della loro sicurezza si entra in una sorta di campo minato. Quando si spende una parola in più rispetto alle caratteristiche di un sistema, si rischia di sollevare immediatamente le ire dei fanboy, di coloro che – per partito preso – difendono la loro personale scelta.
Diciamo subito che nel definire qual è il sistema operativo più sicuro su “mobile” non si può fare affidamento alle statistiche CVE. O almeno non unicamente.
Sostenere che un sistema operativo è insicuro perché, in una certa finestra temporale, sono state individuate più vulnerabilità è un errore davvero grossolano.
Quando ci si riferisce alla sicurezza di un sistema operativo, è infatti necessario verificare non tanto il numero delle vulnerabilità venute a galla ma quali e quante sono state risolte.
Per le vulnerabilità critiche, ovvero quelle che possono portare alla sottrazione di dati personali o all’esecuzione di codice arbitrario sul dispositivo mobile, è importante che il tempo di reazione sia ridotto al minimo.
Diversamente, è altamente probabile che un exploit 0-day, ovvero codice malevolo sviluppato per sfruttare le vulnerabilità non ancora risolte, possa essere sfruttato da parte di malintenzionati.
In questo senso, come si può verificare consultando il contenuto dei bollettini di sicurezza pubblicati mensilmente da Google, la società di Mountain View risponde con solerzia e risolve tutte le falle di sicurezza ritenute a maggiore criticità.
È possibile paragonare gli identificativi delle lacune di sicurezza risolte dai tecnici di Google con le schede pubblicate sul sito di Mitre: ci si accorgerà che le lacune più rilevanti sono risolti a stretto giro.
I problemi di Android sono essenzialmente due: si tratta di un sistema operativo ancora molto frammentato (molte versioni diverse in circolazione) e che viene scarsamente aggiornato dai produttori hardware.
Le due problematiche sono evidentemente legate a doppio filo: come si vede in questa pagina (dati ufficiali Google), ad oggi ben il 20,8% dei possessori di dispositivi mobili Android usa ancora KitKat, versione del sistema operativo che Google ha lanciato a fine ottobre 2013 e il 10,6% utilizza addirttura terminali con Jelly Bean, risalente a luglio 2012.
Inutile dire che le versioni supportate da Google sono solamente le ultime due: ossia Marshmallow (6.x) e Nougat (7.x).
Android è un sistema operativo estremamente frammentato soprattutto perché i produttori di dispositivi hardware generalmente creano versioni derivate dal codice ufficiale di Google (versioni “vanilla”; vedere Aggiornamento Android, come effettuarlo quando sembra impossibile), le personalizzano e successivamente – soprattutto per i dispositivi di fascia medio-bassa o per quelli più vecchi – si astengono dal rilasciare aggiornamenti.
Chi ha acquistato un device Android economico non vedrà quasi mai un aggiornamento OTA e, di conseguenza, non riceverà mai alcun update legato alla risoluzione di problematiche di sicurezza.
Il problema di Android è tutto qui: aggiornamenti applicati sulla versione “vanilla” che poi non vengono fatti propri dai produttori.
L’attenzione dei partner è stata più volte richiamata da Google (vedere ad esempio Google: ecco i produttori che non aggiornano Android).
Nell’articolo Aggiornamento Android, come effettuarlo quando sembra impossibile abbiamo visto come si possa, nella stragrande maggioranza dei casi, forzare un aggiornamento di Android sul proprio dispositivo (molte volte anche all’ultima versione).
Così facendo, si potrà attivare anche un meccanismo di aggiornamenti automatici per ricevere sempre anche le ultime patch di sicurezza.
Nelle Informazioni sul telefono o nelle Informazioni sul tablet, contenute nelle impostazioni di Android, si leggerà chiaramente l’indicazione Patch level o Livello patch di sicurezza: quando la data ivi indicata non è recente è importante valutare un aggiornamento del sistema operativo perché, diversamente, si rischierà davvero di esporre a rischi i dati personali memorizzati nel device.
Difficile quindi fare, per esempio, un paragone diretto tra Android e iOS in termini di sicurezza: il primo è infatti un sistema operativo opensource e per larga parte software libero (licenze Apache 2.0 e GNU GPL v2 per quanto riguarda il kernel Linux) mentre il secondo è un software essenzialmente proprietario (fatta eccezione per i componenti opensource; il kernel di iOS è l’XNU di Darwin, OS Unix-like opensource che Apple ha rilasciato nel 2000).
È pacifico che un sistema operativo “closed source” sia tendenzialmente meno soggetto all’individuazione di nuove problematiche di sicurezza perché può contare sulla segretezza del suo sorgente. È altrettanto evidente che su un software proprietario (tralasciando gli aspetti legali…) si possono svolgere attività di reverse engineering ma si tratta di operazioni che richiedono molto più impegno rispetto all’analisi di un codice sorgente “in chiaro” (com’è nel caso di Android o delle varie distribuzioni Linux).
Tant’è vero che nel caso di Windows molto spesso gruppi di malintenzionati fanno reverse engineering proprio sulle patch rilasciate da Microsoft così da colpire coloro che non le installano tempestivamente.
Nel caso di un sistema operativo come Android, per il quale si conoscono i sorgenti, è quindi molto più semplice rilevare vulnerabilità ed è quindi piuttosto normale che il numero assoluto di falle individuate sia maggiore. Senza contare che ad oggi Android è il sistema operativo per dispositivi mobili che a livello mondiale ha “percentuali bulgare” in termini di utilizzo (Sistemi operativi più utilizzati sui dispositivi mobili): è evidente come l’interesse nell’individuazione di vulnerabilità sia elevatissimo.
Attenzione quindi al dato relativo al numero assoluto di vulnerabilità trovate in un sistema operativo perché induce a trarre soltanto conclusioni affrettate.
Le vulnerabilità CVE, poi, non sono affatto tutte uguali: alcune “fanno numero” e sono sfruttabili davvero difficilmente perché l’utente dovrebbe installare manualmente APK malevoli sul suo dispositivo Android.
Quelle critiche, che Google infatti usa sistemare molto velocemente, sono quelle che riguardano componenti con una larga superficie di attacco e, soprattutto, le falle che sono sfruttabili in modalità remota.
È ovvio che la risoluzione di un problema legato al componente Mediaserver, a Stagefright (vedere Spiare un dispositivo Android: nuovo exploit Stagefright) o a librerie condivise da molte applicazioni è prioritaria: in questi casi, usando un’app Android che si appoggia a questi componenti e aprendo un contenuto (ad esempio una pagina web) malevolo potrebbe verificarsi l’esecuzione di codice dannoso.
Per questo è importante attivarsi affinché sul proprio dispositivo mobile sia possibile ricevere tutti gli ultimi aggiornamenti di sicurezza per Android (eventuale installazione di una ROM alternativa).
Piattaforme come quelle di Google e di Apple sono poi profondamente differenti anche per altri aspetti. Apple si è infatti sempre orientata su un’architettura chiusa: ogni dispositivo mobile col marchio della Mela è una sorta di “walled garden“, conta cioè su di un recinto all’interno del quale possono essere installate e avviate solo le applicazioni specificamente approvate dai tecnici della società di Tim Cook.
Google, invece, non controlla quali applicazioni possono essere installate sui dispositivi mobili a cuore Android ed è quindi possibile, per chiunque, allestire anche siti per il download alternativi al Play Store. Ogni utente Android, tra l’altro, può attivare l’opzione Sorgenti sconosciute, copiare o scaricare manualmente un file APK sul dispositivo mobile ed eseguirlo installando così un’app non proveniente dal Play Store.
Su iOS la stessa cosa si può fare solamente sottoponendo il dispositivo a jailbreaking, procedura che Apple – da sempre – tende ad avversare: Differenza jailbreak, root e sblocco sui dispositivi mobili.
Diversamente da Apple, che mette a disposizione una tecnologia per firmare il codice delle applicazioni iOS, Google ha preferito orientarsi su una struttura più “aperta” che però, evidentemente, si mostra più facilmente bersagliabile dai malintenzionati.
Nonostante l’adozione di uno scanner (Bouncer) automatizzato che pone al vaglio ogni applicazione pubblicata sul Play Store può capitare di imbattersi in applicazioni potenzialmente dannose anche sul negozio online del colosso di Mountain View. Sfuggite al controllo automatizzato, le app vengono di solito velocemente rimosse.
Nell’articolo Sicurezza Android, come proteggere il proprio dispositivo ed i dati in esso conservati abbiamo riassunto quali sono i passaggi che l’utente di Android può effettuare per proteggere efficacemente il suo dispositivo e i dati in esso memorizzati.
Se si utilizza un dispositivo mobile Google Android, il consiglio è, ovviamente, quello di adoperare soltanto Play Store o l’Appstore di Amazon per l’installazione delle applicazioni. Inoltre, prima di effettuare il download di una qualunque applicazione, è bene verificare i permessi richiesti. Perché un’applicazione che permette di fare una partita online o di trasformare il telefonino in una torcia dovrebbe inviare SMS, effettuare chiamate a pagamento, accedere alla rubrica dei contatti o all’account Google?
A questo proposito, con il rilascio di Android 6.0 Marshmallow sono stati compiuti enormi passi in avanti perché ciascuna applicazione può richiedere l’autorizzazione per usare un determinato permesso solo nel momento in cui ve ne sia effettivamente bisogno e l’utente può negare determinati permessi che dovesse ritenere fuori luogo.
Nel caso in cui un’app Android non funzionasse correttamente, basterà accedere alle impostazioni del sistema operativo quindi toccare Autorizzazioni o Permessi ed effettuare le variazioni del caso.
Android mostrerà l’elenco delle autorizzazioni concesse e indicherà quelle negate (che potranno essere eventualmente accordate dall’utente).