Description
Les injections de fautes constituent un vecteur d’attaque intéressant pour passer outre certaines protections lors de l’étude d’un système embarqué. Par exemple, corrompre le flot d’exécution d’un chargeur de démarrage peut permettre de passer outre une vérification de signature, et peut rendre possible l’exécution de code non signé. Dans le cas d’une exécution comportant un grand nombre d’instructions, trouver le moment optimal pour injecter une faute peut devenir fastidieux. La simulation de fautes permet alors de gagner en temps en identifiant en amont les instructions sensibles.
Cette présentation met en avant une méthode de préanalyse d'un chargeur de démarrage complexe avec un simulateur d'injection de fautes. Ce simulateur permet d'identifier des zones temporelles sensibles à plusieurs modèles de fautes, et donc potentiellement intéressantes à fauter. Ensuite, la présentation montre un passage à la réalité sur banc.
Pour réaliser cette étude, des améliorations ont été faites dans le simulateur d'injection Rainbow. Entre autres, une nouvelle manière d'itérer sur le programme a été introduite, permettant de trouver beaucoup plus rapidement des instructions sensibles.