SSTIC 2013 - L'embarqué entre confiance et défiance


Par Aurélien Francillon

L’orateur s’est penché sur la sécurité des micro-controleurs AVR et leur sécurité. L’architecture fait qu’on ne peut pas récupérer du code à partir du micro-controleur, on est donc obligé de passer par du ROP pour manipuler le bootloader.

Coté Android, le système tourne sur un SoC, qui contient deux parties, le baseband, et le CPU pour le système Android, et ce qui est cool sur le G1, c’est qu’il y à des pins JTAG sur lequels on peut se brancher. Ce qui à permis de dumper les bootloaderrs, le basebandOS, etc… et surtout le bootloader du CPU du baseband qui lui n’est jamais mis à jour, et qui contient des certificats et deux modes d’exec, un mode commercial, et un mode gouvernemental inscrit en dur dans la ROM.

Les systèmes embarqués sont partout, et pulullent. Un PC n’est pas un PC, mais une collection de systèmes embarqués qui présentent les mêmes caractéristiques  Le disque dur par exemple, fait beaucoup de choses en logiciel, et contient aussi un firmware dont la signature n’est pas vérifiée contrairement aux téléphones. Il est donc possible de le « mettre à jour » avec votre propre firmware custom.

Autre problème avec les systèmes embarqués: les clefs sans fils de véhicules, sur lesquelles on peut faire des attaques par relais en activant la clefs à l’aide d’un câble permettant de prolonger le signal de la voiture vers la clef. La clef répond ensuite en UHF avec une centaine de mètres de portée. Le trick fonctionne sur n’importe quelle voiture avec un système de clef sans-fil.

L’auteur se pose donc la question de la confiance qu’on peut avoir dans ces systèmes embarqués ? Certains on voulu faire ça en logiciel, et donc c’est du soft qui vérifie du soft. L’idée c’est d’utiliser un petit bout de code qui génère un checksum sur des adresses aléatoires de façon très rapide pour éviter que l’attaquant ait le temps d’intercepter la routine. Bien entendu on vérifie le temps d’exec pour détecter si l’attaquant debug le code du checksum. Le problème c’est que c’est bypassable à grand coup de ROP, et donc la fonction de contrôle du micro-contrôleur ne sert plus à rien.

Du coup l’orateur propose une architecture de controle spécifique palliant à ces défauts