Thèse soutenue

Protections des processeurs contre les cyber-attaques par vérification de l’intégrité du flot d’exécution

FR  |  
EN
Auteur / Autrice : Michaël Timbert
Direction : Jean-Luc DangerSylvain Guilley
Type : Thèse de doctorat
Discipline(s) : Informatique, données, IA
Date : Soutenance le 15/09/2020
Etablissement(s) : Institut polytechnique de Paris
Ecole(s) doctorale(s) : École doctorale de l'Institut polytechnique de Paris
Partenaire(s) de recherche : établissement opérateur d'inscription : Télécom Paris (Palaiseau ; 1977-....)
Laboratoire : Laboratoire Traitement et communication de l'information (Paris ; 2003-....)
Jury : Président / Présidente : David Naccache
Examinateurs / Examinatrices : Jean-Luc Danger, Sylvain Guilley, Marie-Laure Potet, Annelie Heuser, Philippe Maurine
Rapporteurs / Rapporteuses : Marie-Laure Potet

Résumé

FR  |  
EN

Les cyber-attaques reposent sur l'intrusion des systèmes numériques en exploitant des vulnérabilités pour prendre le contrôle du système. De nombreuses protections existent contre les cyber-attaques. Parmi elles, citons les techniques d'obfuscation de code, de vérifications d'intégrité de la mémoire,la personnalisation du jeu d'instruction, la distribution aléatoire de l'espace d'adressage (ASLR), les anticipations par les canaris ou bac à sable, l'isolation des processus (machines virtuelles), la gestion de droits d'accès. Au niveau matériel, les processeurs modernes procurent des techniques de sécurisation par isolation de zones (anneaux de protection, MMU, NX bit, Trustzone). Le Contrôle de l'Intégrité du flux d'exécution (Control Flow Integrity, CFI) est une nouvelle technique proposée par Abadi et al. pour empêcher la corruption d'un programme. Cette technique a donné lieu à beaucoup d'implémentations mais aucune n'est à la fois complète, rapide et facilement incorporable aux processeurs existants. Cette thèse est inspirée des travaux de HCODE qui implémente l'intégrité du code par calcule de signature pour chaque bloc de base de code exécuté. HCODE est un module matériel conçu pour être connecté en lecture seule sur l'interface entre le processeur et le cache d'instruction. Dans cette thèse nous présentons une amélioration de HCODE nommée CCFI qui fournit à la fois la protection de d'intégrité de code et l'intégrité du flux d'exécution. Nous proposons une architecture capable de protéger les sauts directs et indirects aussi bien que les interruptions. La solution proposée repose à la fois sur des modules matériels et sur des modifications du code pour assurer rapidité et flexibilité de la solution. Pour garantir une protection CFI complète, des métadonnées sont ajoutées au code. Ces métadonnées décrivent le graphe de flot de contrôle (Control Flow Graph, CFG) du programme. Celles-ci sont calculées statiquement pendant la phase de compilation et sont utilisées par le module matériel CCFI en conjonction avec le code exécuté pour garantir que le CFG est respecté. Nous démontrons que notre solution est capable de fournir une intégrité du flux d'exécution Complète en étant à la fois rapide et facilement adaptable aux processeurs existants. Nous l'illustrons sur deux processeurs RISC-V.