Thèse soutenue

La boucle de fuzzing CFL : un cadre de test pour Cubicle

FR  |  
EN
Auteur / Autrice : Alexandrina Korneva
Direction : Sylvain ConchonFatiha 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

Résumé

FR  |  
EN

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.