C&ESAR 2011 - Injection de fautes sous Android

Par Joan Mazenc et al. – Thalès.

Android / iPhone, beaucoup d’applications, donc une surface d’attaque énorme, de plus en plus de malwares, de plus en plus de vulnérabilités lié aux applications comme le XSS sur Skype, les vulnérabilités lié au navigateur (notamment la récupération de fichiers par XSS).

L’orateur dresse un bilan alarmant de la sécurité sur les smartphones, et fait une passe rapide sur l’architecture, puis enchaîne sur un ensemble de techniques de jailbreak/root, pour en arriver à un comparatif attaques logicielles vs attaques matérielles. Et il n’y a pas photo, les attaques hardwares, c’est puissant, bien plus puissant qu’une attaque soft. Comme un smartphone, on peut le voler, la probabilité qu’un attaquant est un accès physique à la machine est bien plus forte qu’avec un PC traditionnel.

Dans ce cadre, l’auteur liste les attaques matérielles permettant de faire de l’injection de fautes, et il s’avère que bon nombre d’attaques de ce types peuvent griller le device. L’orateur et son équipe du CESTI de Thalès se sont tourné vers de l’injection de fautes par impulsions électro-magnétiques. Ils ont en suite étudié l’implémentation de RSA sous Android, et comment l’attaquer via cette technique d’injection de fautes.

Pour le POC, ils se sont tourné vers une tablette Android très populaire (samsung galaxy tab ?), car elle était très documentée sur internet, et pas mal de hacks tournaient sur cette plateforme. Puis ils ont mis au point une application de test implémentant RSA-CRT et effectuant des manipulations sur la mémoire non-volatile (la flash). Puis ils ont fait leur travail d’injection de fautes, s’en est suivi un grand nombre de freezes, reboots, etc… et finalement des injections de fautes dans le code natif.

Pour ce qui est du code à haut niveau (du code Java), ils ont effectué un autre poc avec une boucle qui se décrémente en code Java, et une série de log indiquant la valeur du compteur de la boucle et il s’avère qu’ils ont pu injecter des fautes qui avaient une répercussion sur le code tournant dans la JVM.

Il est donc possible de perturber le fonctionnement du code de la plateforme Android, et donc de manipuler les comportements par défaut des composants de sécurité de l’OS.

Bref, un attaquant qui à un accès physique au device peut avoir accès à tout.