Protections des processeurs contre les cyber-attaques par vérification de l’intégrité du flot d’exécution - TEL - Thèses en ligne Accéder directement au contenu
Thèse Année : 2020

Protections of processors against cyber attacks by control flow checking

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

Résumé

Cyber attacks are based on intrusions into digital systems by exploiting bugs to take control over the system. Many protections have been developed to thwart cyber attack, among them we can quote code obfuscation, memory integrity check, instruction set randomization, address space layout randomization (ASLR), canary, sand boxing, process isolation, virtualization and access right restriction. Modern processors provide security by zone isolation systems (Protection ring, MMU, NX bit, TrustZone), Control Flow Integrity (CFI) is a new technique proposed by Abadi et al. to mitigate program corruption. This technique gave rise to many implementations but none are complete, fast and easily incorporable to existing processor. This thesis is inspired from previous work on HCODE which implements code integrity by computing signature for each executed basic block. HCODE is an hardware block designed to be plugged in read only on the interface between the processor and the instruction cache. In this thesis we present CCFI solution, improvement of HCODE, which is now able to provide Code Integrity and Control Flow Integrity. We propose CCFI architecture able to protect direct and indirect jumps as well as interruptions. The proposed solution is based on both hardware modules and software modifications to ensure speed and flexibility of the solution. To ensure a full CFI protection metadata are embedded with the code. These metadata describes the Control Flow Graph
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.
Fichier principal
Vignette du fichier
84061_TIMBERT_2020_archivage.pdf (2.04 Mo) Télécharger le fichier
Origine : Version validée par le jury (STAR)

Dates et versions

tel-03066435 , version 1 (15-12-2020)

Identifiants

  • HAL Id : tel-03066435 , version 1

Citer

Michaël Timbert. Protections des processeurs contre les cyber-attaques par vérification de l’intégrité du flot d’exécution. Cryptographie et sécurité [cs.CR]. Institut Polytechnique de Paris, 2020. Français. ⟨NNT : 2020IPPAT028⟩. ⟨tel-03066435⟩
405 Consultations
390 Téléchargements

Partager

Gmail Facebook X LinkedIn More