Thèse soutenue

Une approche sémantique à la sécurité logicielle niveau machine

FR  |  
EN
Auteur / Autrice : Georges-Axel Jaloyan
Direction : David NaccacheAymeric 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

FR  |  
EN

Résumé

FR  |  
EN

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.