ChatPaper.aiChatPaper

FuzzCoder : Test de fuzzing au niveau des octets via un modèle de langage de grande taille

FuzzCoder: Byte-level Fuzzing Test via Large Language Model

September 3, 2024
papers.authors: Liqun Yang, Jian Yang, Chaoren Wei, Guanglin Niu, Ge Zhang, Yunli Wang, Linzheng ChaI, Wanxu Xia, Hongcheng Guo, Shun Zhang, Jiaheng Liu, Yuwei Yin, Junran Peng, Jiaxin Ma, Liang Sun, Zhoujun Li
cs.AI

papers.abstract

Le fuzzing est une importante technique d'analyse dynamique de programmes conçue pour détecter les vulnérabilités dans les logiciels complexes. Il consiste à soumettre un programme cible à des entrées malveillantes élaborées afin de provoquer des plantages, des débordements de mémoire tampon, des erreurs mémoire et des exceptions. La conception efficace d'entrées malveillantes constitue un problème ouvert difficile, et les meilleures approches appliquent généralement des mutations aléatoires uniformes à des entrées valides préexistantes. Dans ce travail, nous proposons d'adopter des grands modèles de langage spécialisés (FuzzCoder) pour apprendre les motifs dans les fichiers d'entrée à partir d'attaques réussies afin de guider les explorations futures de fuzzing. Plus précisément, nous développons un cadre permettant d'exploiter les LLM de code pour guider le processus de mutation des entrées lors du fuzzing. Le processus de mutation est formulé comme un modèle séquence-à-séquence, où le LLM reçoit une séquence d'octets puis produit la séquence d'octets mutée. FuzzCoder est spécialisé sur un jeu de données d'instructions créé (Fuzz-Instruct), où l'historique de fuzzing réussi est collecté à partir d'un outil de fuzzing heuristique. FuzzCoder peut prédire les emplacements de mutation et les stratégies de localisation dans les fichiers d'entrée pour déclencher des comportements anormaux du programme. Les résultats expérimentaux montrent que FuzzCoder, basé sur AFL (American Fuzzy Lop), obtient des améliorations significatives en termes de proportion effective de mutation (EPM) et de nombre de plantages (NC) pour divers formats d'entrée, notamment ELF, JPG, MP3 et XML.
English
Fuzzing is an important dynamic program analysis technique designed for finding vulnerabilities in complex software. Fuzzing involves presenting a target program with crafted malicious input to cause crashes, buffer overflows, memory errors, and exceptions. Crafting malicious inputs in an efficient manner is a difficult open problem and the best approaches often apply uniform random mutations to pre-existing valid inputs. In this work, we propose to adopt fine-tuned large language models (FuzzCoder) to learn patterns in the input files from successful attacks to guide future fuzzing explorations. Specifically, we develop a framework to leverage the code LLMs to guide the mutation process of inputs in fuzzing. The mutation process is formulated as the sequence-to-sequence modeling, where LLM receives a sequence of bytes and then outputs the mutated byte sequence. FuzzCoder is fine-tuned on the created instruction dataset (Fuzz-Instruct), where the successful fuzzing history is collected from the heuristic fuzzing tool. FuzzCoder can predict mutation locations and strategies locations in input files to trigger abnormal behaviors of the program. Experimental results show that FuzzCoder based on AFL (American Fuzzy Lop) gain significant improvements in terms of effective proportion of mutation (EPM) and number of crashes (NC) for various input formats including ELF, JPG, MP3, and XML.
PDF453November 14, 2024