Recherche de vulnérabilités logicielles par combinaison d'analyses de code binaire et de frelatage (Fuzzing)
| Auteur / Autrice : | Sofia Bekrar |
| Direction : | Roland Groz, Laurent Mounier |
| Type : | Thèse de doctorat |
| Discipline(s) : | Informatique |
| Date : | Soutenance le 10/10/2013 |
| Etablissement(s) : | Grenoble |
| Ecole(s) doctorale(s) : | École doctorale Mathématiques, sciences et technologies de l'information, informatique (Grenoble, Isère, France ; 1995-....) |
| Partenaire(s) de recherche : | Laboratoire : Laboratoire d'informatique de Grenoble (Isère, France ; 2007-....) |
| Jury : | Président / Présidente : Marie-Laure Potet |
| Examinateurs / Examinatrices : Hervé Debar, Chaouki Bekrar | |
| Rapporteurs / Rapporteuses : Éric Filiol, Yves Le Traon |
Mots clés
Mots clés contrôlés
Résumé
Le frelatage (ou fuzzing) est l'une des approches les plus efficaces pour la détection de vulnérabilités dans les logiciels de tailles importantes et dont le code source n'est pas disponible. Malgré une utilisation très répandue dans l'industrie, les techniques de frelatage ''classique'' peuvent avoir des résultats assez limités, et pas toujours probants. Ceci est dû notamment à une faible couverture des programmes testés, ce qui entraîne une augmentation du nombre de faux-négatifs; et un manque de connaissances sur le fonctionnement interne de la cible, ce qui limite la qualité des entrées générées. Nous présentons dans ce travail une approche automatique de recherche de vulnérabilités logicielles par des processus de test combinant analyses avancées de code binaire et frelatage. Cette approche comprend : une technique de minimisation de suite de tests, pour optimiser le rapport entre la quantité de code testé et le temps d'exécution ; une technique d'analyse de couverture optimisée et rapide, pour évaluer l'efficacité du frelatage ; une technique d'analyse statique, pour localiser les séquences de codes potentiellement sensibles par rapport à des patrons de vulnérabilités; une technique dynamique d'analyse de teinte, pour identifier avec précision les zones de l'entrée qui peuvent être à l'origine de déclenchements de vulnérabilités; et finalement une technique évolutionniste de génération de test qui s'appuie sur les résultats des autres analyses, afin d'affiner les critères de décision et d'améliorer la qualité des entrées produites. Cette approche a été mise en œuvre à travers une chaîne d'outils intégrés et évalués sur de nombreuses études de cas fournies par l'entreprise. Les résultats obtenus montrent son efficacité dans la détection automatique de vulnérabilités affectant des applications majeures et sans accès au code source.