- 简介基于变异的模糊测试在发现编译器漏洞方面是有效的,但对于具有复杂结构的现代语言(例如模板、宏)来说,设计高质量的变异器仍然具有挑战性。现有的方法严重依赖手动设计或人工参与的修正过程,限制了其可扩展性和跨语言的通用性。 我们提出了 Mut4All,这是一个完全自动化的、与语言无关的框架,利用大语言模型(LLMs)和来自漏洞报告的编译器特定知识来合成变异器。该框架包含三个智能体:(1)变异器发明智能体,利用与编译器相关的洞察力识别变异目标并生成变异器元数据;(2)变异器实现合成智能体,经过微调以生成初始实现;(3)变异器优化智能体,通过单元测试反馈验证并修正变异器。 Mut4All 处理了 1000 份漏洞报告(500 份 Rust,500 份 C++),通过 GPT-4o 平均每份花费约 0.08 美元,生成了 319 个 Rust 和 403 个 C++ 变异器。我们定制的模糊测试工具利用这些变异器,在 Rust 编译器中发现了 62 个漏洞(38 个新漏洞,7 个已被修复),在 C++ 编译器中发现了 34 个漏洞(16 个新漏洞,1 个已被修复)。Mut4All 在唯一崩溃检测和代码覆盖率方面均优于现有方法,在 Rust 排名第一,在 C++ 排名第二。
-
- 图表
- 解决问题论文试图解决编译器测试中突变器(mutator)设计的自动化问题,尤其是在现代编程语言(如Rust和C++)中,由于复杂语言结构(如模板、宏)的存在,手动设计或依赖人工的突变器开发效率低下、可扩展性差且跨语言通用性有限。
- 关键思路提出Mut4All,一个基于大语言模型(LLMs)和编译器错误报告的全自动、语言无关的突变器合成框架。其核心创新在于将编译器相关知识(从bug报告中提取)与LLM结合,通过三个协同工作的代理(发明、实现、优化)来自动设计和优化mutator,显著减少人工干预。
- 其它亮点{"Mut4All利用GPT-4o处理1000份bug报告(500 Rust,500 C++),以每mutator约0.08美元的成本生成319个Rust和403个C++ mutator。",基于这些mutator构建的定制fuzzer发现了Rust编译器62个bug(38个新bug)和C++编译器34个bug(16个新bug)。,在独特崩溃检测和代码覆盖率方面优于现有方法,在Rust上排名第一,在C++上排名第二。,框架语言无关,具有良好的跨语言泛化能力。,方法完全自动化,减少了对人工参与的依赖。}
- {"AFL (American Fuzzy Lop) 和其基于变异的模糊测试方法",LangFuzz:基于语法的模糊测试器,用于静态类型语言,Csmith:用于C语言的随机测试生成工具,DeepFuzz:使用深度学习生成测试输入的模糊测试方法,近期基于LLM的代码生成与程序分析研究,如CodeBERT、Codex、AlphaCode等,基于模型的模糊测试方法,如Learn&Fuzz}
NEW
提问交流
提交问题,平台邀请作者,轻松获得权威解答~
向作者提问

提问交流