Une approche sémantique à la sécurité logicielle niveau machine
Auteur / Autrice : | Georges-Axel Jaloyan |
Direction : | David Naccache, Aymeric Vincent |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique |
Date : | Soutenance le 14/09/2021 |
Etablissement(s) : | Université Paris sciences et lettres |
Ecole(s) doctorale(s) : | École doctorale Sciences mathématiques de Paris centre (Paris ; 2000-....) |
Partenaire(s) de recherche : | Laboratoire : École normale supérieure (Paris ; 1985-....). Département d'informatique |
Equipe de recherche : Équipe Sécurité (Paris) | |
établissement de préparation de la thèse : École normale supérieure (Paris ; 1985-....) | |
Jury : | Président / Présidente : Xavier Rival |
Examinateurs / Examinatrices : David Naccache, Sylvain Guilley, Lorenzo Cavallaro, Clémentine Maurice, Aymeric Vincent, Konstantinos Markantonakis, Whitfield Diffie | |
Rapporteurs / Rapporteuses : Sylvain Guilley, Lorenzo Cavallaro |
Mots clés
Mots clés contrôlés
Résumé
L’informatique se fonde sur de nombreuses couches d’abstraction, allant des couches matérielles jusqu’à l’algorithmique en passant par le cahier des charges à la base de la conception du produit. Dans le cadre de la sécurité informatique, les vulnérabilités proviennent souvent de la confusion résultant des différentes abstractions décrivant un même objet. La définition de sémantiques aide à la description formelle de ces abstractions dans l’objectif de les faire coïncider. Dans cette thèse, nous améliorons différents procédés ou programmes en corrélant les diverses représentations sémantiques sous-jacentes. Nous introduisons brièvement les termes et concepts fondamentaux avec lesquels nous construisons le concept de langage assembleur ainsi que les différentes abstractions utilisées dans l’exploitation de programmes binaires. Dans une première partie, nous utilisons des constructions sémantiques de haut niveau pour simplifier la conception de codes d’exploitation avancés sur des jeux d’instructions récents. Nous présentons didactiquement trois exemples répondant à des contraintes de plus en plus complexes. Spécifiquement, nous présentons une méthode pour produire des shellcodes alphanumériques sur ARMv8-A et RISC-V, ainsi que la première analyse de faisabilité d’attaques de type return-oriented programming sur RISC-V. Dans une deuxième partie, nous étudions l’application des méthodes formelles à l’amélioration de la sécurité et de la sûreté de langages de programmation à travers trois exemples : une optimisation de primitives de synchronisation, une analyse statique compatible avec la vérification déductive limitant l’aliasing de pointeurs dans un langage impératif ou encore un formalisme permettant de représenter de façon compacte du code binaire dans le but d’analyser des problèmes de synchronisation de protocole.