open menu

Android plus dangereux qu'iOS? Comment améliorer sa sécurité?

 

6 étapes pour augmenter la sécurité de votre smartphone

En tant que plateforme Open Source, Android propose son propre modèle de sécurité afin de se protéger dans le domaine sensible des appareils mobiles. Cependant, cette sécurité repose largement sur les épaules de ses utilisateurs. Voici donc nos six meilleurs conseils de sécurité au quoitidien:

  1. Autoriser soigneusement les permissions Android. En cas de doute, lisez les commentaires, fouillez le site de l’auteur de l’application ou ses autres publications. Et pour les puristes, testez l’application dans une machine virtuelle (ADB)
  2. Verrouillez toujours votre appareil. A elle seule, cette mesure peut vous sauver en cas de vol ou de perte de votre appareil. Si vous utilisez la fonction Android « Schéma de verrouillage », ne cochez pas la case « faire apparaitre le schéma » afin d’éviter d’attirer les regards indiscrets.
  3. Utilisez un VPN lorsque vous surfez depuis un wifi public ou depuis l’hôtel. Vous ne serez pas plus protégés que sur un réseau domestique de confiance, mais au moins personne ne pourra épier vos communications depuis la pièce d’à côté.
  4. Chiffrez votre téléphone : vous ne le regretterez pas en cas de vol
  5. Installez des applications de sécurité : un IDS ou un pare-feu (attention aux arnaques cf conseil n°1) sur votre appareil Android.
  6. Mettez votre téléphone à jour. Rien de mieux pour les pirates que les versions désuètes d’Android.

Explication détaillées

Pour comprendre le niveau de sécurité exigeant requis par ce système d’exploitation, il est nécessaire de savoir qu’il est à la croisée de deux secteurs vulnérables : le monde des logiciels Open Source et le marché des appareils mobiles.

Une plateforme Open Source : le coût de la liberté

On ne peut pas nier les bienfaits apportés par le monde Open Source. Il permet par exemple aux utilisateurs intéressés (et motivés) de parcourir le code source (voire de l’adapter à leurs besoins). C’est ce qui permet au système d’évoluer constamment tout en réduisant paradoxalement la quantité de bugs : le marché du logiciel libre offre généralement un meilleur support et une communauté plus réactive. Ainsi les problèmes sont plus vite décelés et corrigés .

Cependant, cette liberté a un coût: on trouve également des personnes moins bien intentionnées. En ayant accès au code source, il leur est possible de trouver des failles et de les exploiter à leur avantage, sans avoir eu besoin de faire du reverse engineering.


Figure 1: Schéma de principe: failles vs temps de réparation

Les appareils mobiles, cibles risquées

En tant que système d’exploitation mobile, Android est par définition vulnérable aux attaques typiques des smartphones qui peuvent le rendre partiellement ou totalement inutilisable, causer des envois de SMS/MMS non volontaires ou encore dévoiler des informations privées. Le spectre des menaces étant relativement large (en incluant les réseaux GSM/4G, le bluetooth, le wireless, etc.), ces appareils sont une cible de choix pour les pirates.

D’un point de vue technologique, la vitesse de propagation des malwares pour smartphones évolue beaucoup plus vite (environ 10 fois plus rapidement) (plus d'informations sur lifehacker) que ceux sur PC. Gostev explique cette évolution par le fait que les pirates ont profité de leur expérience historique sur les malwares PC pour l’appliquer aux appareils mobiles (qui est une technologie encore moins aboutie).

Android est devenu leader du marché mondial depuis 2012, juste devant l’iOS d’Apple. Ce succès contribue ainsi à l’attrait du pirate pour cette plateforme : qui dit plus d’utilisateurs, dit plus de victimes potentielles.

Méchanismes de sécurité inclus dans Android OS

La Figure 2, présente la pile du logiciel d’Android (Android software stack). On y retrouve le Kernel Linux (qui est OpenSource) utilisé pour l’accès aux drivers, pour la gestion mémoire et pour le réseau. Les couches supérieures contiennent les librairies Android natives (écrites en C/C++) qui sont dédiées aux différents composants inclus dans le système d’exploitation. Cette seconde couche est écrite en Java (avec des interfaces natives JNI). Puis vient la couche d’exécution (Runtime layer) qui contient la trop peu célèbre machine virtuelle Dalvik.

C’est elle qui fait tourner vos applications (au format APK converti ensuite en DEX qui est un format plus compact et optimisé pour la gestion mémoire). Viennent finalement les deux dernières couches d’applications qui sont fournies par Google (tous les composants ne sont plus open source à cette étape, comme par exemple la carte GMaps qui est une plateforme propriétaire).

En suivant cette hiérarchie, nous pouvons distinguer trois groupes généraux de mécanismes de sécurité inclus dans le Framework Android : les mécanismes Linux, les fonctionnalités de l’environnement et les mesures spécifiques à Android.


Figure 2: stack du système d'exploitation Android.

Mécanismes Linux : POSIX et File access

Sous Android, et comme sous tout système Unix/Linux, chaque application est affectée à un unique utilisateur POSIX. Cette association permet d’avoir une protection individuelle d’accès aux répertoires et aux fichiers, une gestion sûre des différents processus et un ordonnancement fiable.

Propriétés environnementales

Android comporte par défaut une unité de gestion de la mémoire (MMU pour « memory management unit »). Ce composant physique (généralement inclus dans le processeur) facilite la séparation des séquences d’adressage mémoire : chaque processus dispose d’une zone mémoire (virtuelle) qui lui est propre, évitant ainsi qu’il écrase celle des autres et réciproquement. Ce type de sécurité inhibe directement les attaques autrefois courantes sur PC telles que l’escalade de privilèges (privilege escalation), des fuites d’informations ou d’autres attaques de surcharge de tampon (bufferoverflow).

Dès le début, Android a choisi de travailler avec le langage Java. De par sa nature fortement typée, ce langage de programmation diminue les risques d’exécution de code arbitraire (par exemple stack smashing) et force toute variable à respecter son type (fini les pointeurs de pointeurs de fonctions pirates). Rien qu’avec ce choix, Android a probablement réduit de moitié son facteur risque.

Finalement Android utilise également tous les mécanismes offert par le monde de la téléphonie. A sa disposition nous remarquerons tous les protocoles d’authentification (algorithmes A3, A5 et A8 fournis par la norme GSM), de gestion d’accès au réseau et de traçabilité (logs).


Figure 3: Schéma d'encryption et d'authentification GSM

Solution propre à Android : les permissions et signatures

Le plus gros risque de sécurité, à mon avis, réside dans les applications publiées par tous les développeurs externes. D’une façon générale, on trouve deux tendances : la vérification minutieuse du code par une équipe spécialisée et professionnelle ou la délégation de responsabilité. Là où Apple a choisi le premier terme de l’alternative, Google a suivi l’autre voie : les applications publiées sur son store ne sont pas validées avant leur parution.

Ce détail est doublement surprenant : d’abord Google dispose largement des ressources nécessaires à la revue exhaustive des applications avant leur parution (employés, infrastructure, etc.). Ensuite il est discutable de déléguer (voire de se débarrasser de) la responsabilité des risques encourus.

Probablement que Google préfère informer et responsabiliser plutôt que de censurer du contenu (enfin je parle uniquement des applications Android, pas de la censure de son moteur de recherche en Chine).

Concrètement comment fonctionnent les permissions ?

Avant chaque téléchargement d’application, le store de Google (le fameux PlayStore) vous demande si vous acceptez d’autoriser la future application à accéder à différentes permissions. Sous Android, une permission est un droit d’accès à une fonctionnalité spécifique. Il en existe plus d’une centaine et elles régissent par exemple l’accès à la camera, au réseau internet, etc.

Les permissions, unique bémol?

La solution des permissions sous Android manque cruellement de souplesse : dans la version actuelle (Android 5.0), il n’est pas possible à l’utilisateur de sélectionner un sous ensemble de permissions à l’installation de l’application : soit il les accepte toutes en bloc, soit il refuse l’installation de l’application.

Difficile d’imaginer, dans la pratique, l’utilisateur lambda refuser de télécharger le dernier jeu à la mode parce qu’une des permissions lui semble suspecte. Pire, il y a fort à parier que les utilisateurs se lassent de lire les détails de ces permissions et cliquent machinalement sur « accepter », puis installent directement l’application sans se préoccuper des risques encourus.



Figure 4: quand la sécurité est dérisoire

Heureusement, toute application qui est publiée sur le Store est signée numériquement. Concrètement ça signifie qu’aucun autre auteur que celui de l’application considérée ne peut mettre à jour, modifier ou améliorer son logiciel. Donc les auteurs de renom (le constructeur de votre téléphone, les développeurs de Microsoft) sont protégés et l’utilisateur peut leur accorder sa confiance.

Dalvik : la machine virtuelle d’Android

Nous parlions plus haut de la machine Virtuelle Dalvik : en termes de sécurité, il est important de rappeler que grâce à elle, les applications tierces sont encapsulées dans leur propre machine virtuelle ce qui ne leur permet pas d’accéder aux emplacements réservés aux autres applis (sauf concernant la carte SD qui peut être accédée depuis toutes les applications!). Cette précaution barre la route à toute tentative de buffer overflow et autres stack-smashing voire de privilege escalation.

Après avoir passé en revue les points fort d’Android (et discuté de leurs limites), concentrons-nous sur les mesures possibles pour améliorer la sécurité.

Analyse du système en temps réel

Pourquoi ne pas installer un HIDS ?

Un HIDS (Host-based Intrusion Detection System) est un logiciel qui analyse ce qui se passe sur votre système d’exploitation en temps réel. Issu du monde des serveurs (notamment avec le très célèbre logiciel SNORT), ce concept est désormais dans des logiciels pour Android.

Ce genre de logiciel reconnaît les malwares (virus, rootkits, etc.) à leur signature ou à leur comportement. Même si leur efficacité diminue avec le temps (dû au fait que les malwares s’habituent à masquer leur signature) cette première ligne de défense est parfaitement judicieuse pour Android (plus de détails ici).

Quid d’un pare-feu manuel et GSM?

L’idée est analogue concernant le pare-feu : pourquoi Android ne nous proposerait-il la possibilité d’autoriser ou de bloquer l’accès aux sockets WEB (TCP/UDP) en temps réel. On aurait ainsi une bonne idée de toutes les connexions ouvertes et de tout ce qui transite à notre insu hors du smartphone.

De plus il faudrait que ce pare-feu idéal prenne en compte l’aspect GSM des communications mobiles : il devrait alors également surveiller l’envoi de SMS/MMS, les appels, etc.

Android et NSA : SELinux serait-il un cheval de Troie?

Suite aux révélations de Snowden sur le dossier PRISM, la réputation de la NSA (et de l’administration américaine) est tombée en chute libre au point que de nombreuses communautés de développement ne font plus confiance à aucun standard américain (bon nombre de normes cryptographiques proviennent de l’Oncle Sam). Mais pas Google.

En effet, depuis Android 4.3, Google a décidé d’inclure SELinux (Security-Enhanced Linux), un module Open Source développé par la NSA dans son système d’exploitation.

Un gigantesque cheval de Troie ?

Il serait facile de tirer cette conclusion, mais n’oublions pas que le projet d’anonymisation TOR a aussi été financé par le gouvernement américain (bien que la NSA essaie en même temps de détruire ce protocole).

Le code source du module LSM est disponible sur bitbucket. Ce serait grotesque de pouvoir y découvrir un cheval de Troie. D’ailleurs on l’aurait déjà su…

L’histoire se répète

En fait cette stratégie de la NSA n’est pas nouvelle : entre 1974 et 1977, elle avait déjà participé à l’amélioration du chiffrement DES. A l’époque IBM suspectait la NSA de vouloir affaiblir le cryptosystème qu’il venait de mettre au point.

Mais contre toute attente, en mai 1994, la section de recherche d’IBM admit que les changements proposés par la NSA avaient été favorables à DES.

Donc on se trouve dans une situation analogue, la NSA tente d’améliorer la sécurité du système d’exploitation le plus utilisé au monde et il est peu probable qu’un cheval de Troie y soit inclus. D’ailleurs, SELinux est inclus dans le noyau linux depuis le 8 août 2003 (Linux kernel 2.6.0-test3).

Mot de passe et chiffrement de la mémoire.

Chiffrer le contenu de son téléphone est par définition une excellente méthode pour s’assurer que ses données seront conservées de façon à respecter la vie privée. On pourrait aussi imaginer de chiffrer les SMS/MMS lors de leur envoi. Ce ne serait d’ailleurs pas difficile de créer une application qui encrypte puis décrypte les messages lors de leur transit sur le réseau.

Quant au mot de passe, Android propose un mécanisme robuste de verrouillage du téléphone. Encore faut-il l’avoir activé. C’est une question cruciale à l’heure actuelle où presque tous les smartphones sont en même temps connectés à des comptes sociaux (Facebook, LinkedIn, Google+, etc.). Simplement en verrouillant son téléphone, on se prémunit contre un vol d’information ou une usurpation d’identité.

VPN – réseau virtuel privé

Un smartphone ne se connecte pas toujours sur un réseau sécurisé. Cette question concerne également les ordinateurs portables et tablettes : la vaste majorité des utilisateurs ne se rend pas compte que tous les réseaux sans fils ne sont pas forcément sécurisés.

Les gens sont sensibilisés aux dangers du e-banking sur du HTTP sans TLS/SSL, parce que leur banque leur indique qu’il faut vérifier la présence du cadenas en bas à droite du navigateur. Mais ce qu’ils oublient c’est que le compte mail (par exemple) s’authentifie en clair sur le même réseau non sécurisé.

Dans ce contexte, il est parfois judicieux de recourir à un VPN. Le principe est simple : chaque paquet TCP (voire UDP selon la technologie) est chiffré et encapsulé dans un plus gros paquet puis envoyé à un serveur de confiance (historiquement il s’agissait du serveur au sein de l’entreprise ce qui permettait de simuler une machine physiquement connectée au réseau - d'où le nom Virtual Private Network). Ce serveur décapsule et décrypte le paquet et le transmet en clair depuis son réseau.

Ce tunnel (on parle aussi parfois de tunnel VPN) permet ainsi de créer un canal sécurisé depuis son ordinateur à travers un réseau non fiable. PPTP, L2TP et IPSEC (dans l’ordre de sécurité) sont déjà inclus dans Android depuis la version 1.6.

Conclusion

En définitive Android est un système dont la sécurité est miraculeusement solide : malgré les nombreuses menaces qui planent sur le marché de la téléphonie et de l’open source, le système d’exploitation de Google a su prouver son efficacité et sa motivation à toujours s’améliorer en termes de sécurité.

Ajouter un commentaire


8+20=