SSTIC 2011 - Sécurité du système Android
Le ton est donné, 3 slides d’intro Android, et après on entre dans le vif du sujet. C’est bien, hype, populaire, sous linux (+1 surface d’attaque) et on code dessus en Java… « le developpeur Java, tapez dans une poubelle yen a 3 qui sortent »
L’avantage, c’est que le nombre de téléphones sous Android reste dans une proportion faible comparativement aux autres téléphones (le 3310 à la côte).
La signature des applications ne sert qu’a la révocation des applications pour kicker un développeur du market. La JVM n’offre pas d’isolation au niveau sécurité, elle n’est là que pour offrir une couche d’abstraction du hardware et éviter les problèmes de compatibilité avec les diverses architectures ARM. Cependant il est possible d’exécuter du code natif ayant accès a tout les syscall. Finalement, c’est aussi simple qu’un vieux système unix multi-user…
Bon, coté failles c’est pas les vulnérabilités système qui manquent :
- l’OS (linux, libc, adb…)
- le moteur Webkit
- le lecteur Flash ( qui subit les mêmes failles que la version desktop !!!)
Coté modèle de permission et implémentation, c’est pareil :
- l’utilisateur à le dernier mot
- une appli peut créer de nouvelles permissions
- l’installation d’application en remote via l’android market online
Ajoutons à ça les bugs dans les applications et les communications inter-process, l’absence de contrôle sur les fichiers de la carte SD (fat32), des injections sql, et les problèmes classiques liés à l’exécution de code natif… Tout un programme !!!
Coté malware, c’est pas les techniques qui manquent (demande de droits complets !, enchainement de 36 exploits, réplication d’application populaires ex : « vous lancez des cochons sur des oiseaux »).
Pour ce qui est fuite d’informations ben… ya le wifi… (rares sont les appli qui utilisent SSL, après tout la 3g c’est chiffré) ou le bug report de l’application qui est extrêmement verbeux.
Après ya les backdoors builtin (htcsense, codes secrets, applications constructeur sans ssl, shell « root » sur le port 12345 en telnet, téléphones verrouillés… ) les firmwares custom et autres fonctionnalités de débug / maj / bidouille… (ceux qui ont rooté leur htc savent de quoi il est question).
Pour les tests et les manip, ADB c’est l’outil universel (visualisation des permissions existantes, services, etc…). Sinon, comme il s’agit d’applications Java, ça se décompile super bien :), l’obfuscateur lui, en version par défaut, fait du renommage de fonctions –‘ , mais comme IDA supporte maintenant les applications Android…
Bon la sécurité elle est où dans tout ça ?
Oui, protection de /system en hardware (pour bloquer le root permanent),
conteneur chiffré pour les applications installés sur la sdcard, les firmware sont signés et vérifiés (sauf téléphone s-off lorsqu’on root le téléphone). mise à jour « Over The Air », Màj automatiques…
L’Android security FAIL est annoncé ! on vous aura prévenu…