ChatPaper.aiChatPaper

FuzzCoder: Byte-Level-Fuzzing-Tests mittels Large Language Models

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

Fuzzing ist eine wichtige dynamische Programmanalyse-Technik, die entwickelt wurde, um Schwachstellen in komplexer Software zu finden. Beim Fuzzing wird ein Zielprogramm mit speziell erstellten bösartigen Eingaben konfrontiert, um Abstürze, Pufferüberläufe, Speicherfehler und Ausnahmen zu verursachen. Das effiziente Erstellen solcher bösartiger Eingaben ist ein schwieriges, ungelöstes Problem, und die besten Ansätze wenden oft gleichmäßige zufällige Mutationen auf bereits vorhandene gültige Eingaben an. In dieser Arbeit schlagen wir vor, feinabgestimmte große Sprachmodelle (FuzzCoder) einzusetzen, um Muster in den Eingabedateien aus erfolgreichen Angriffen zu erlernen und zukünftige Fuzzing-Explorationen zu steuern. Konkret entwickeln wir einen Rahmen, um Code-LLMs zu nutzen, um den Mutationsprozess von Eingaben beim Fuzzing zu lenken. Der Mutationsprozess wird als Sequenz-zu-Sequenz-Modellierung formuliert, bei der das LLM eine Bytefolge empfängt und dann die mutierte Bytefolge ausgibt. FuzzCoder wird auf dem erstellten Instruktionsdatensatz (Fuzz-Instruct) feinabgestimmt, wobei die erfolgreiche Fuzzing-Historie aus dem heuristischen Fuzzing-Tool gesammelt wird. FuzzCoder kann Mutationspositionen und Strategiepositionen in Eingabedateien vorhersagen, um abnormales Programmverhalten auszulösen. Experimentelle Ergebnisse zeigen, dass FuzzCoder basierend auf AFL (American Fuzzy Lop) signifikante Verbesserungen hinsichtlich des effektiven Mutationsanteils (EPM) und der Anzahl der Abstürze (NC) für verschiedene Eingabeformate, einschließlich ELF, JPG, MP3 und XML, erzielt.
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