sécurité Ios Android

Android & iOs : La sécurité à portée de mains

CERT-DVT Sécurité mobile

dev-light.png

Sécurité des plateformes iOS et Android

La sécurité des systèmes connectés est un réel enjeu aujourd’hui, particulièrement pour les entreprises.

Sur le marché mobile, Android et iOS sont les deux systèmes d’exploitation les plus répandus aujourd’hui (plus de 90% de part de marché à eux deux fin 2016).

IDC: Smartphone OS Market Share Chart

Les entreprises ne sont pas les seules à se soucier de la sécurité mobile. De plus en plus d’utilisateurs ne souhaitent pas que leurs données puissent être utilisées (à des fins commerciales par exemple) ou que les données stockées sur leurs appareils soient accessibles par qui que ce soit. Prenons le cas de Xiaomi, qui est un des plus gros constructeurs de téléphone (surtout présent sur le marché asiatique). Au Q42016, une porte dérobée ou “backdoor” a été retrouvée dans le code du système d’exploitation des téléphones de la marque . Le système en question est un fork d’Android, développé par le constructeur chinois. Cette backdoor permettait à Xiaomi d’installer, sans que l’utilisateur ne le sache, n’importe quelle application.

Ce genre de pratiques nuisent à la réputation d’Android, qui rappelons-le, est un système d’exploitation open-source. Étant open-source, les constructeurs peuvent reprendre le code source et le modifier comme ils le souhaitent.


dev-security.png

iOS, système d’exploitation sécurisé par défaut

iOS contrairement à Android, n’est pas open-source. Beaucoup d’options telles que le chiffrement de l’appareil, sont présentes sur l’appareil par défaut et ne peuvent pas être désactivées par mégarde que ce soit par un utilisateur ou par un attaquant …

Sur iOS, la vie privée des utilisateurs avant tout

On peut citer ici l’exemple d’Apple qui avait refusé de déverrouiller un iPhone 5c pour le FBI. Coup de marketing ou intention légitime, Apple, en tenant tête publiquement au FBI a gagné en crédibilité quant à la sécurité de ses produits.

Il est impossible de déverrouiller un appareil qui a été autrefois lié à un compte iCloud. Si vous réinitialisez l’appareil, vous serez obligé de vous reconnecter au compte iCloud présent sur l’appareil avant la réinitialisation.

Pas de fuites de données en cas de perte / vol

Aucune donnée ne pourra être récupérée à partir d’un appareil verrouillé si celui-ci est volé ou perdu.

Apple s’assure de cela d’une part en reliant l’appareil à un compte iCloud et d’autre part en implémentant le chiffrement de l’appareil par défaut.

Un appareil verrouillé est donc théoriquement impénétrable, même si le FBI a tout de même réussi à accéder aux données d’un iphone 5c verrouillé au bout de 3 mois.

Le risque D’infection sur iOs

Envisageons le risque d’infection d’un appareil iOs par l’installation d’une application malveillante depuis l’Appstore.

Un risque diminué par les différent obstacles posé par le processus de publication d’une application sur le store.
Afin de publier une application, une licence développeur est nécessaire. Cette licence coûte aux alentours de 100 euros. En plus du prix de la licence, l’application passe par un audit de code automatisé, détectant tout comportement malveillant.

Que se passe-t-il lorsqu’une application est lancée sur iOS ?

Chaque application installée sur un iPhone s’exécutera dans son propre environnement appelé “sandbox”. A l’instar d’une machine virtuelle, l’application ne pourra accéder qu’à ses propres fichiers, sauf dans le cas où l’utilisateur spécifie explicitement qu’il souhaite ouvrir un fichier dans l’application en question.

Ce mécanisme de sécurité permet d’isoler complètement les applications entre elles. C’est également une des raisons pour lesquelles iOS est un système d’exploitation si fermé.

Ces pratiques empêchent de potentiel malware de pouvoir accéder à vos données ou de compromettre votre appareil. Sans actions spécifiques de l’utilisateur (donner des permissions à une application par exemple), une fuite de données a très peu de chance de se produire.

dev-risk-and-security.png

Android, le système d’exploitation dominant open-source

Les raisons son succès sont entre autres le fait que le système est open-source, qu’il peut être exécuté sur des architectures différentes etc…

Les raisons du succès d’Android sont multiples. Le système est open-source, il peut être exécuté sur différentes architectures. Mais ce succès est surtout dû au fait qu’Android est installé sur une multitude d’appareils, allant du bas de gamme au très haut de gamme, ce qui rend les smartphones sous Android accessibles à une majorité des consommateurs.

De par ce succès, les attaquants préfèrent en pratique développer des malwares pour cette plateforme. Le fonctionnement d’Android est très proche de celui d’un système linux classique.

Le fait que les malwares soient bien plus présents sous Android que sous iOS vient également du fait que les applications sous Android sont plus facilement modifiables. Il est possible de dé-compiler une application (à l’aide d’outils tel qu’apktool par exemple), de modifier son comportement et de recompiler l’application pour la faire installer à des utilisateurs. Sous Android, le principe même d’installer des applications depuis des sources autres que le Store officiel est plus accessible que sous iOS.

Gestion de la sécurité sous Android

La sécurité sous Android repose sur 2 modèles. Le premier modèle est le même que sur un système linux classique reposant sur le principe d’utilisateur et de groupe. Un processus s’exécutant avec un id d’utilisateur classique ne pourra accéder qu’à ses ressources.

Le deuxième modèle est celui des permissions. De même que sur iOS, un utilisateur aura la possibilité de donner certains droits à ses applications.

Concernant les utilisateurs et les groupes, il faut savoir que les fichiers /etc/passwd et /etc/shadow n’existent pas sous Android. Ces fichiers sont remplacés par les Android id, dont la définition peut être trouvée dans systemcore/include/private/Android_filesystem_config.h.

En dehors des permissions accordées par le système aux utilisateurs, il y a également les permissions accordées aux applications. Celles-ci sont demandées par  le développeur de l’application. Les permissions de l’application sont précisées dans l’AndroidManifest.xml, qui se trouve à la racine.

En ce qui concerne le verrouillage du téléphone, Google s’est essayé il y a peu a un système de verrouillage comparable a iCloud, cependant, le système n’était pas encore au point.

On peut voir dans la vidéo ci-dessus qu’il est très simple de contourner le verrouillage d’un appareil sous Android lié à un compte Google.

dev-target.png

R00T

Tous les principes décrits plus haut ne prennent pas en compte le jailbreak ni le root.

Pour rappel, Android se base sur le principe d’utilisateur et de groupes pour isoler ses applications. Dans le cas d’un téléphone rooté, une application peut avoir accès aux données des autres applications si elle est exécutée en tant qu’utilisateur “root”. Le jailbreak offre le même genre de possibilité sous iOS. Le root et le jailbreak permettent donc d’un côté d’offrir énormément de fonctionnalités mais ouvrent également beaucoup de portes à des attaquants. Si ces attaquants arrivent à exécuter une application en tant que super-utilisateur sur un appareil, c’est tout le système qui est compromis.

En conclusion, il peut sembler qu’iOS est un système plus sécurisé. Cette impression vient du fait qu’Android offre plus de possibilités à ses utilisateurs et que par conséquent, une erreur de manipulation peut s’avérer fatale. Cependant, si l’on compare d’un point de vue purement technique le modèle de sécurité des deux plateformes, celles-ci se valent.

 

Christophe Szwedo