LLM-assisted seed generation for coverage-guided fuzzing

Maneshti, Hamidreza (2026). « LLM-assisted seed generation for coverage-guided fuzzing » Mémoire. Montréal (Québec, Canada), Université du Québec à Montréal, Maîtrise en informatique.

Fichier(s) associé(s) à ce document :
[img]
Prévisualisation
PDF
Télécharger (3MB)

Résumé

Le fuzzing est une technique automatisée de test logiciel qui génère un grand nombre d’entrées variées dans le but d’exposer des erreurs et des vulnérabilités dans les programmes. Le fuzzing guidé par la couverture, l’une des variantes les plus efficaces de cette technique, dépend fortement de la qualité du corpus de graines initial à partir duquel le fuzzer commence son exploration. Les méthodes traditionnelles de construction de graines (fichiers minimaux, extraction de suites de tests et génération basée sur des grammaires) présentent chacune des limitations significatives en termes de couverture, de diversité ou de validité sémantique. Ce mémoire étudie si les grands modèles de langage (LLM) peuvent générer des corpus de graines plus efficaces en exploitant leur connaissance des langages de programmation, des formats de fichiers et des patrons d’utilisation logicielle. Notre hypothèse centrale est qu’un LLM, parce qu’il combine en une seule étape validité syntaxique et plausibilité sémantique sans effort d’ingénierie propre à chaque cible, peut produire des corpus de graines compétitifs avec des suites de tests conçues à la main, et le mémoire cherche surtout à déterminer dans quels cas cette hypothèse se vérifie. Nous concevons trois stratégies de génération de graines assistées par LLM, chacune exploitant un type différent d’information contextuelle : exemples de suites de tests (stratégie S2), documentation de pages de manuels (stratégie S3) et spécifications de grammaires formelles (stratégie S4). Ces stratégies sont évaluées contre une ligne de base de suite de tests (stratégie S1) et une ligne de base vide (stratégie S0) sur quatre programmes cibles (BusyBox bc, xmllint, lua, sqlite) et deux moteurs de fuzzing (AFL++, Honggfuzz), en utilisant le modèle GPT-4o mini avec un corpus standardisé de 26 graines et un budget de temps d’une heure par campagne. Nos résultats montrent que les graines générées par LLM surpassent systématiquement la ligne de base vide, mais ne parviennent pas à égaler de manière fiable les suites de tests existantes en termes de couverture d’arêtes. Les graines LLM offrent des avantages ciblés pour les programmes ayant des formats d’entrée simples et bien documentés : pour BusyBox bc avec AFL++, les stratégies S2 et S3 dépassent la suite de tests d’environ 20% (S2 atteint +20,5%, S3 atteint +20,1%, moyennes de trois exécutions indépendantes). En l’absence de suite de tests, la meilleure stratégie LLM atteint au moins 75% de la couverture de la suite de tests dans 7 configurations sur 8. L’analyse de la diversité des graines révèle que S2 (LLM+Tests) produit les graines les plus fonctionnellement diversifiées avec zéro doublon, tandis que S4 (LLM+Grammaire) est la plus sujette à la répétition. Un résultat notable montre qu’une diversité initiale élevée des graines ne se traduit pas mécaniquement par une couverture finale proportionnelle, soulignant l’importance de la mutabilité des graines. Pour la découverte de vulnérabilités, les graines LLM ont déclenché près de deux fois plus d’erreurs d’exécution que la suite de tests sur BusyBox bc, le seul programme cible où les campagnes ont produit plus que quelques erreurs d’exécution ; aucune erreur d’exécution n’a été observée pour xmllint ou lua, et le bilan reste trop limité sur sqlite (de 0 à 4 erreurs d’exécution selon la configuration, la plupart n’en produisant aucune) pour fonder des conclusions générales. Le processus de génération est peu coûteux (0,20 $ USD au total) et s’intègre facilement aux flux de travail de fuzzing existants sans modification des moteurs de fuzzing. En somme, ce mémoire positionne la génération de graines assistée par LLM comme un complément pratique et économique aux approches traditionnelles de construction de corpus pour le fuzzing guidé par la couverture, particulièrement utile pour amorcer une campagne lorsqu’aucune suite de tests établie n’est disponible ou pour enrichir un corpus existant à très faible coût. _____________________________________________________________________________ MOTS-CLÉS DE L’AUTEUR : fuzzing, test logiciel, grands modèles de langage, génération de graines, couverture de code, fuzzing guidé par la couverture, AFL++, sécurité logicielle

Type: Mémoire accepté
Informations complémentaires: Fichier numérique reçu en format PDF.
Directeur de thèse: Stiévenart, Quentin
Mots-clés ou Sujets: Fuzzing / Grands modèles de langage / Graines / Tests / Logiciels
Unité d'appartenance: Faculté des sciences > Département d'informatique
Déposé par: Service des bibliothèques
Date de dépôt: 01 oct. 2026 08:37
Dernière modification: 01 oct. 2026 08:37
Adresse URL : https://archipel.uqam.ca/secure/id/eprint/20366

Statistiques

Voir les statistiques sur cinq ans...