FuzzCoder: Byte-level Fuzzing Test via Large Language Model

Fuente: arXiv
Guardado en:
Detalles Bibliográficos
Autores principales: Yang, Liqun, Yang, Jian, Wei, Chaoren, Niu, Guanglin, Zhang, Ge, Wang, Yunli, ChaI, Linzheng, Xia, Wanxu, Guo, Hongcheng, Zhang, Shun, Liu, Jiaheng, Yin, Yuwei, Peng, Junran, Ma, Jiaxin, Sun, Liang, Li, Zhoujun
Formato: Preprint
Publicado: 2024
Materias:
Acceso en línea:
Etiquetas: Agregar Etiqueta
Sin Etiquetas, Sea el primero en etiquetar este registro!
_version_ 1866913490785009664
author Yang, Liqun
Yang, Jian
Wei, Chaoren
Niu, Guanglin
Zhang, Ge
Wang, Yunli
ChaI, Linzheng
Xia, Wanxu
Guo, Hongcheng
Zhang, Shun
Liu, Jiaheng
Yin, Yuwei
Peng, Junran
Ma, Jiaxin
Sun, Liang
Li, Zhoujun
author_facet Yang, Liqun
Yang, Jian
Wei, Chaoren
Niu, Guanglin
Zhang, Ge
Wang, Yunli
ChaI, Linzheng
Xia, Wanxu
Guo, Hongcheng
Zhang, Shun
Liu, Jiaheng
Yin, Yuwei
Peng, Junran
Ma, Jiaxin
Sun, Liang
Li, Zhoujun
contents 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.
format Preprint
id arxiv_https___arxiv_org_abs_2409_01944
institution arXiv
publishDate 2024
record_format arxiv
spellingShingle FuzzCoder: Byte-level Fuzzing Test via Large Language Model
Yang, Liqun
Yang, Jian
Wei, Chaoren
Niu, Guanglin
Zhang, Ge
Wang, Yunli
ChaI, Linzheng
Xia, Wanxu
Guo, Hongcheng
Zhang, Shun
Liu, Jiaheng
Yin, Yuwei
Peng, Junran
Ma, Jiaxin
Sun, Liang
Li, Zhoujun
Computation and Language
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.
title FuzzCoder: Byte-level Fuzzing Test via Large Language Model
topic Computation and Language
url https://arxiv.org/abs/2409.01944