Thèse soutenue

Fuzzing dans les années 2020 : nouvelles approches et solutions

FR  |  
EN
Auteur / Autrice : Andrea Fioraldi
Direction : Davide Balzarotti
Type : Thèse de doctorat
Discipline(s) : Sciences de l'ingénieur
Date : Soutenance le 08/12/2023
Etablissement(s) : Sorbonne université
Ecole(s) doctorale(s) : École doctorale Informatique, télécommunications et électronique de Paris (1992-...)
Partenaire(s) de recherche : Laboratoire : Institut EURECOM (Sophia-Antipolis, Alpes-Maritimes)
Jury : Président / Présidente : Mathias Payer
Examinateurs / Examinatrices : Marius Muench, Suna Melek Önen
Rapporteurs / Rapporteuses : Mathias Payer, Marcel Böhme

Mots clés

FR  |  
EN

Mots clés contrôlés

Mots clés libres

Résumé

FR  |  
EN

Malgré les efforts considérables mis en œuvres en matière de fuzzing, la sécurité des logiciels informatiques reste menacée par des vulnérabilités insaisissables. Les coverage-guided fuzzers, qui se concentrent uniquement sur la couverture de code, ne parviennent généralement pas à découvrir des vulnérabilités spécifiques. La multiplication de divers outils de fuzzing a grandement divisé la communauté et a rendu difficile la combinaison de différentes techniques de fuzzing, l'évaluation précise des contributions et la comparaison efficace des différents outils. Pour remédier à cette situation, il est nécessaire de disposer d'un socle commun afin de garantir des évaluations précises et équitables. AFL, en raison de sa popularité, est souvent utilisé comme base lors de la création de nouveaux prototypes malgré le fait qu'il ne s'agisse pas d'une référence naïve et sa conception monolithique. D'autre part, les fuzzers personnalisés réécrits à partir de zéro ont tendance à réinventer la roue et utilisent souvent inneficacement la puissance des les systèmes multicœurs. Cette thèse relève ces défis en apportant plusieurs contributions: Un nouveau mécanisme de feedback appelé InvsCov est introduit, qui prend en compte les relations entre les variables du programme et la couverture du code. Il affine l'approximation de l'état du programme pour optimiser la détection de divers bugs. Une autre approche que nous introduisons explore les graphes de dépendance des données pour améliorer le fuzzing en récompensant la traversée de nouvelles arêtes du graphe de flux de données, ce qui a permis la découverte de nouvelles vulnérabilités manquées par la couverture standard efficacement. Nous présentons également une analyse approfondie des mécanismes internes d'AFL afin de mettre en lumière ses choix de conception et leur impact sur les performances du fuzzing. Enfin, pour remédier au problème de fragmentation cité précédemment, nous proposons un outil dédié au fuzzing modulaire et réutilisable: LibAFL. Les chercheurs peuvent étendre la pipeline de base du fuzzer, l'évaluation de nouvelles techniques techniques et la combinaison d'approches orthogonales. Une tentative de réécriture de AFLpp comme frontend de LibAFL a remporté le concours de fuzzing SBFT'23 dans le domaine de la recherche de bugs. Ces contributions font progresser le domaine du fuzzing, en abordant les défis de la sensibilité des mécanismes de feedback, de la diversité des bugs découverts, de la fragmentation des outils et de l'évaluation des fuzzers. Elles fournissent une base solide pour l'amélioration des techniques de fuzzing, permettant la détection d'une plus large gamme de bugs, et favorisant la collaboration et la standardisation au sein de la communauté.