Les attaques par corruption de mémoire ont été un problème majeur dans la sécurité des logiciels depuis plus de vingt ans et restent l’un des types d’attaques les plus dangereux et les plus répandus de nos jours. Parmi ces attaques, celles par détournement de flot de contrôle sont les plus populaires et les plus puissantes, permettant à l’attaquant d’exécuter du code arbitraire dans le processus cible. De nombreuses approches ont été développées pour mitiger de telles attaques et pour les empêcher de se produire.
L’une de ces approches est l’isolation des données de contrôle (CDI) qui tente de d’empêcher ces attaques en supprimant leur déclencheur dans le code, à savoir les branchements indirects. Cette approche a été mise en œuvre sous la forme d’une passe de compilateur remplaçant tous les branchements indirects dans le programme par une table conduisant le flot de contrôle vers des sauts directs écrits en dur. L’inconvénient de cette approche est qu’elle nécessite la recompilation du programme. Dans ce manuscrit, nous présentons une approche et son implémentation, DAMAS, un framework capable de déployer des protections sur un logiciel en cours d’exécution et d’utiliser les informations disponibles pour les optimiser pendant l’exécution. Nous avons implémenté une protection CDI à gros grain à l’aide de notre framework et évalué son impact sur les performances.
CLAUSS Philippe, Professeur, Université de Strasbourg
FRANCILLON Aurélien, Professeur, EURECOM
NICOMETTE Vincent, Professeur, INSA de Toulouse
HIET Guillaume, Maître de Conférence, CentraleSupélec
TRONEL Frédéric, Professeur, CentraleSupélec
ROHOU Erven, Directeur de recherche, Inria Rennes