La boucle de fuzzing CFL : un cadre de test pour Cubicle
Auteur / Autrice : | Alexandrina Korneva |
Direction : | Sylvain Conchon, Fatiha Zaïdi |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique |
Date : | Soutenance le 08/12/2023 |
Etablissement(s) : | université Paris-Saclay |
Ecole(s) doctorale(s) : | École doctorale Sciences et technologies de l'information et de la communication (Orsay, Essonne ; 2015-....) |
Partenaire(s) de recherche : | Laboratoire : Laboratoire Méthodes formelles (Gif-sur-Yvette, Essonne ; 2021-....) |
référent : Faculté des sciences d'Orsay | |
graduate school : Université Paris-Saclay. Graduate School Informatique et sciences du numérique (2020-....) | |
Jury : | Président / Présidente : Dominique Quadri |
Examinateurs / Examinatrices : Régine Laleau, Stephan Merz, Sylvain Hallé, Pascal Poizat | |
Rapporteurs / Rapporteuses : Régine Laleau, Stephan Merz |
Mots clés
Résumé
L'objectif de cette thèse est d'intégrer une technique de test dans le model checker Cubicle. Pour cela, nous avons étendu Cubicle avec une boucle de Fuzzing (appelée Cubicle Fuzzy Loop - CFL). Cette nouvelle fonctionnalité remplit deux fonctions principales.Tout d'abord, elle sert d'oracle pour l'algorithme de génération d'invariants de Cubicle. Ce dernier, basé sur une exploration en avant de l'ensemble des états atteignables, était fortement limité par ses heuristiques lorsqu'elles sont appliquées à des modèles fortementconcurrents. CFL apporte une nouvelle manière plus efficace d'explorer ces modèles, en particulier il permet de visiter beaucoup plus d'états pertinents.Son deuxième objectif est de détecter rapidement et efficacement les problèmes et les vulnérabilités dans les modèles de toutes tailles, ainsi que de capturer les deadlocks.L'intégration de CFL nous a également permis d'augmenter l'expressivité du langage d'entrée de Cubicle, avec l'inclusion de nouvelles primitives pour manipuler des threads (verrous, sémaphores, etc.).Enfin, nous avons construit un cadre de test autour de Cubicle et de CFL avec un interpréteur interactif, utile pour le débogage, le prototypage et l'exécution pas à pas des modèles. Ce nouveau système a été appliqué avec succès sur une étude de cas d'un algorithme deconsensus distribué pour blockchains.