Thèse soutenue

Aller de la sûreté à la sécurité en analyse de code : le modèle d'attaquant

FR  |  
EN
Auteur / Autrice : Soline Ducousso
Direction : Marie-Laure PotetSébastien Bardin
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance le 14/12/2023
Etablissement(s) : Université Grenoble Alpes
Ecole(s) doctorale(s) : École doctorale mathématiques, sciences et technologies de l'information, informatique
Partenaire(s) de recherche : Laboratoire : Laboratoire Verimag (Grenoble)
Jury : Président / Présidente : Laure Gonnord
Examinateurs / Examinatrices : Marie-Laure Potet, Guillaume Bouffard
Rapporteurs / Rapporteuses : Karine Heydemann, Guillaume Hiet

Mots clés

FR  |  
EN

Résumé

FR  |  
EN

Des travaux majeurs ont été réalisés, ces dernières décennies, dans le domaine de l'analyse de programme, tirant parti de techniques telles que l'exécution symbolique, l'analyse statique, l'interprétation abstraite ou la vérification bornée de modèles, pour chasser les bogues et vulnérabilités logicielles, conduisant à l'adoption de ces techniques par de grandes entreprises. Les bogues étant des points d'entrées pour les attaques, les éliminer est un premier pas vers une meilleure sécurité logicielle. Cependant, ces techniques reposent sur un modèle d'attaquant seulement capable de concevoir des entrées malicieuses, exploitant des cas particuliers dans le code lui-même, typiquement un fichier formaté de manière à déclencher un débordement mémoire dans les routines de traitement. Un modèle d'attaquant plutôt faible, alors qu'un attaquant avancé est capable de perturber l'exécution d'un programme en exploitant des vecteurs d'attaques tels que les injections de fautes matérielles, les attaques micro-architecturales, les attaques matérielles contrôlées par logiciel, et n'importe quelle combinaison de ces vecteurs d'attaques.Dans cette thèse, notre objectif est de concevoir une technique automatique et efficace pour raisonner sur l'impact d'un attaquant avancé sur les propriétés de sécurité d'un programme. Nous proposons l'atteignabilité adversariale, un formalisme qui étend la notion d'atteignabilité en y incluant les capacités de l'attaquant. Nous avons construit un nouvel algorithme, l'exécution symbolique adversariale, pour répondre au problème de l'atteignabilité adversariale sous l'angle de la recherche de bogues (vérification bornée). Notre algorithme évite l'augmentation significative de l'espace d'états à analyser due nouvelles capacités de l'attaquant, grâce à un nouvel encodage non branchant de celles-ci sous forme de fautes injectées. Nous le montrons correct et k-complet pour l'atteignabilité adversariale. De plus, nous avons imaginé deux optimisations visant à réduire le nombre de fautes : la détection précoce de saturation et l'injection à la demande.Nous proposons une implémentation de l'exécution symbolique adversariale au niveau binaire intégrée à l'outil BINSEC. Notre évaluation expérimentale repose sur des programmes usuels du domaine des fautes matérielles et des cartes à puce. Nos expériences montrent un gain de performance significatif par rapport à l'état de l'art, en moyenne d'un facteur x10 et x200 pour 1 et 2 fautes respectivement, avec un gain similaire en termes de chemins explorés. De plus, notre approche passe à l'échelle jusqu'à considérer 10 fautes alors que l'état de l'art atteint le temps limite pour 3 fautes. Nous montrons également l'utilisabilité de notre méthode dans différents scénarios de sécurité tels que reproduire une attaque BellCoRe sur CRT-RSA, chercher des attaques sur un programme protégé par la contre-mesure SecSwift, ou évaluer la robustesse d'un réseau de neurones. D'autre part, nous avons exploré le cas du programme de démarrage de WooKey en rejouant des attaques et en évaluant des contre-mesures proposées. En particulier, nous avons trouvé une attaque non mentionnée précédemment et avons proposé un nouveau correctif aux développeurs.