【论文速读】| LLAMAFUZZ:大语言模型增强的灰盒模糊测试

图片

本次分享论文:LLAMAFUZZ: Large Language Model Enhanced Greybox Fuzzing

基本信息

原文作者:Hongxiang Zhang, Yuyang Rong, Yifeng He, Hao Chen

作者单位:University of California, Davis

关键词:模糊测试,大语言模型,二进制结构化数据

原文链接:

https://arxiv.org/pdf/2406.07714v2.pdf

开源代码:暂无

论文要点

论文简介:

灰盒模糊测试在揭示程序中的漏洞方面取得了成功。然而,随机变异策略限制了模糊测试器在处理结构化数据时的性能。专门的模糊测试器可以处理复杂的结构化数据,但需要额外的语法工作且吞吐量低。

本文探索了利用大语言模型(LLM)增强灰盒模糊测试的方法。利用LLM的预训练知识生成新的有效输入,并通过成对变异种子进一步微调模型以有效学习结构化格式和变异策略。LLM增强模糊测试器LLAMAFUZZ在标准bug基准测试Magma和各种实际程序上进行了实验,表现优于顶级竞争对手,平均多发现41个bug,并在所有实验中共发现了47个独特的bug。此外,LLAMAFUZZ在触发错误和达到错误方面展示了一致的性能。

图片

研究目的:

本研究旨在利用大语言模型(LLM)提高灰盒模糊测试在处理结构化数据时的性能。传统的灰盒模糊测试在生成结构化数据时效率低下,而LLM具有数据转换和格式的预训练知识,能够生成新的有效输入。通过微调LLM使其学习结构化格式和变异策略,可以增强模糊测试器的性能,发现更多漏洞。

研究贡献:

1. 提出了一个LLM增强的变异策略,可以应用于二进制和文本数据格式。

2. 提供了一种介于通用模糊测试器和专门模糊测试器之间的解决方案,能够学习结构化种子的模式并进行变异。

3. 提供了实验证据,证明LLM可以增强变异过程,提高代码覆盖率。

4. 通过实验解释了LLM如何增强模糊测试过程。

5. 设计了一种轻量级的异步方法,利用LLM和模糊测试器的组合,使LLAMAFUZZ能够在单GPU或多GPU上轻松部署。

引言

模糊测试是一种自动化软件测试技术,通过生成测试种子来发现目标程序或应用程序中的漏洞。在过去几年中,灰盒模糊测试因其在发现新漏洞方面的有效性而备受关注。随着软件系统的复杂性不断增加,适应性测试输入的需求也变得越来越重要。随机变异虽然取得了一些成就,但在生成结构化数据方面却遇到了瓶颈。通用灰盒模糊测试器通过比特级变异实现高吞吐量,但当处理需要结构化输入的应用时,盲目的随机比特级变异往往会破坏数据格式的完整性,导致低效的种子。

为了加速这一过程,honggfuzz提出了共享文件语料库以支持多进程和多线程运行,从而提高了生成更多测试用例的吞吐量。然而,仅仅增加吞吐量和添加更多随机变异策略在处理结构化种子时会形成瓶颈。AFL++和honggfuzz需要大量尝试才能变异出有效的结构化种子。此外,使用随机策略的模糊测试器结果不稳定。为了缓解这种不确定性,需要进行多次重复实验以公平比较。我们提出使用大语言模型(LLM)来增强模糊测试中的变异过程,通过预训练LLM了解数据转换和格式信息来生成新的有效输入,并通过微调LLM学习特定的结构化种子模式和变异策略,从而在通用模糊测试器和专用模糊测试器之间找到平衡。

研究背景

灰盒模糊测试因其在发现许多实际程序中的漏洞方面的有效性而受到关注。然而,随着软件开发的复杂性增加,许多程序使用高度结构化的数据格式,这对传统的模糊测试技术提出了重大挑战。传统的模糊测试主要在比特级进行变异,需要大量尝试才能有效变异这些结构化数据。基于语法的模糊测试提供了一种通过人类指定语法生成良好结构化种子的方法,保证生成的输入在语法上是有效的,并具有多样性。然而,语法指导的模糊测试需要额外的领域知识,这限制了其广泛使用的可能性。

研究方法

LLAMAFUZZ的研究方法主要包括三个阶段:

1. 微调准备:首先,我们收集了来自FuzzBench和AFL++实验的数据,创建了一个多样化的训练集。为了确保LLM能够处理各种数据格式,我们引入了一种数据转换方法,将二进制输入文件转换为统一的十六进制表示。这样做不仅使LLM能够理解并处理不同的数据格式,还确保了训练数据的多样性和有效性。

2. 微调LLM进行变异:在这一阶段,我们对预训练的LLM进行微调,使其能够学习特定的结构化种子模式和变异策略。通过在结构化数据上进行监督微调,LLM能够调整其权重,从而准确地理解输入的语法并生成有效的变异模式。我们使用了分步提示的方法,引导LLM生成符合预期格式的变异输出。

图片

3. 集成模糊测试器和LLM:为了解决LLM生成速度较慢与灰盒模糊测试高吞吐量之间的矛盾,我们设计了一种异步通信方法,将模糊测试器与LLM集成在一起。在这一过程中,当前种子被转换为十六进制表示后发送给LLM,LLM进行变异后将新的种子返回给模糊测试器。通过异步处理,确保模糊测试器在等待LLM生成变异种子的同时,能够继续高效地处理其他任务,从而提高整体测试效率。

研究实验

为了评估LLM在解决传统模糊测试在处理结构化数据方面的局限性,LLAMAFUZZ通过扩展AFL++实现,并在两个基准测试上进行了评估。实验包括在Magma基准测试和实际开源程序中的表现。结果显示,LLAMAFUZZ在bug发现数量和代码覆盖率方面均优于现有的模糊测试器,展示了其在处理结构化数据方面的优势。具体而言,LLAMAFUZZ在Magma基准测试中,平均比顶级竞争对手多发现41个bug,共发现47个独特bug。在实际开源程序测试中,LLAMAFUZZ在15个模糊测试目标中有10个显示出显著的代码覆盖率提升,平均提高27.19%。

图片

相关工作

模糊测试是一种自动化随机软件测试技术,用于发现目标程序或应用程序中的漏洞。传统的模糊测试方法包括黑盒模糊测试、白盒模糊测试和灰盒模糊测试。黑盒模糊测试对程序结构不了解,主要通过随机生成测试输入实现高执行量,但效果有限。白盒模糊测试利用程序分析提高代码覆盖率,但耗时较长。灰盒模糊测试结合了白盒和黑盒模糊测试的优点,通过反馈机制生成更有价值的测试种子,提高测试效率。

图片

论文结论

本文提出了一种利用大型语言模型(LLM)增强灰盒模糊测试的方法,通过预训练和微调LLM,使其能够有效地生成和变异结构化数据。实验结果表明,LLAMAFUZZ在bug发现数量和代码覆盖率方面均优于现有的模糊测试器,展示了其在处理结构化数据方面的优势。LLAMAFUZZ的成功验证了LLM在提高模糊测试效率和发现漏洞能力方面的潜力,具有广泛的应用前景。

原作者:论文解读智能体

校对:小椰风

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/35164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL面试题练习 —— 合并用户浏览行为

目录 1 题目2 建表语句3 题解 1 题目 有一份用户访问记录表,记录用户id和访问时间,如果用户访问时间间隔小于60s则认为时一次浏览,请合并用户的浏览行为。 样例数据 ------------------------ | user_id | access_time | ---------------…

云动态摘要 2024-06-27

给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新产品更新 veLinux 2.0 镜像邀测发布 火山引擎 2024-06-26 veLinux 2.0 镜像邀测发布 ECS支持100台实例批量续费/退订 火山引擎 2024-06-26 ECS支持100台实例批量续费/退订 弹性伸缩支持目标追踪规则(邀测) …

花8000元去培训机构学习网络安全值得吗,学成后就业前景如何?

我就是从培训机构学的网络安全,线下五六个月,当时学费不到一万,目前已成功入行。所以,只要你下决心要入这一行,过程中能好好学,那这8000就花得值~ 因为只要学得好,工作两个多月就能赚回学费&am…

Shell (一)Ubuntu的网络配置及软件安装

Ubuntu的配置及软件安装 网络配置 虚拟机提供的网络类型 桥接模式 主机和虚拟机分别拥有不同的ip地址,可以实现和外界设备通信 NAT模式 也可以联网,但是和主机共用同一个ip地址,外界无法识别虚拟机和主机发送的信息 仅主机模式 虚拟机不可…

数据资产与人工智能的融合之路:探讨如何结合AI技术优化数据资产管理,提升企业智能化水平

目录 一、引言 二、数据资产管理的现状与挑战 1、数据资产管理的重要性 2、数据资产管理的挑战 三、人工智能在数据资产管理中的应用 1、数据采集与整合 2、数据清洗与校验 3、数据安全与隐私保护 4、数据分析与挖掘 四、结合AI技术优化数据资产管理的策略 1、制定数…

【stm32-新建工程-HAL库版本】

stm32-新建工程-HAL库版本 ■ 1. 下载STM32Cube官方固件包(F1/F4/F7/H7)■ 2. 新建HAL库版本MDK工程所需的文件夹■ 2.1 新建工程文件- XXX项目并在下面新建如下文件夹■ 2.2 向Drivers文件添加如下文件■ 2.3 向Mrddlewares文件添加文件■ 2.4 设置Outp…

python--jiaba库的基本使用

jieba 是一个用于中文分词的 Python 库。它使用基于统计的词典分词方法,能够支持三种分词模式:精确模式、全模式、搜索引擎模式,并且支持繁体分词和自定义词典。 以下是 jieba 库的基本使用步骤: 安装 首先,你需要安…

一篇文章带你玩懂数据库的基础函数

数据库的函数 单行函数1.数据函数2.字符串函数3.时间函数4.流程函数 多行函数聚合函数 阅读指南: 本文章讲述了对于数据库的单行和多行函数,如果读者感兴趣,后续我们会更新高级的操作在我们的对于数据库教程的合集中,大家可以来很…

唐兴通:银行金融数字化转型营销客户销售个金对公讲师培训师

唐兴通 数字化转型顾问、金融产品营销专家、数字化销售增长教练、沃顿商学院演讲嘉宾。全球创新增长战略大家EM罗杰斯(创新的扩散)、杰弗里摩尔(跨越鸿沟)、亨利切萨布鲁夫(开放式创新)在中国合作者。《中…

服务接口请求 CORS跨域漏洞修复

通过nginx去对Origin请求头的来源地址去做逻辑处理,不在白名单内返回403 具体配置 location / {set $flag 0;if ($http_origin ){set $flag "${flag}1";}if ($http_origin !~* ^(http|https)://www\.abc\.com$){set $flag "${flag}1";}if ($f…

一位OpenAI大模型训练工程师繁忙的一天

早晨:迎接新的一天 7:00 AM - 起床 早晨七点起床。洗漱、吃早餐后,查看手机上的邮件和公司消息,以便提前了解今天的工作安排和任务优先级。 7:30 AM - 前往公司 乘坐地铁前往位于旧金山的OpenAI总部。在地铁上习惯性地阅读一些与人工智能和…

秋招倒计时?到底需要准备到什么程度?

秋招倒计时?需要准备到什么程度? 秋招,面向全国的毕业生,招聘的激烈程度可想而知!按照往年时间,秋招通常从八月初开始,九月黄金期,十月中后期。距今刚好差不多60天,时间其…

npm常用命令大全(非常详细)

npm(Node Package Manager)是Node.js的包管理工具,它允许你安装、更新、删除和管理Node.js项目的依赖。 以下是npm的一些常用命令,按照不同的功能进行分类和解释: 1. 初始化项目 init # 初始化一个新的npm项目&…

【.NET全栈】第16章 Web开发

文章目录 16.1 HTML概述16.1.1 HTML的基本概念16.1.2 HTML语言的基本元素16.1.3 格式设置16.1.4 超级链接16.1.5 图像16.1.6 表格16.1.7 框架16.1.8 表单 16.2 ASP.NET Web Forms的组织16.2.1 认识ASP.NET16.2.2 Web Forms的组织 16.3 Web服务器组件16.3.1 使用Label和TextBox控…

【PyScript】PyScript 基础入门

【PyScript】PyScript 基础入门 PyScript 是一个为了支持 Python 运行在浏览器的开源平台。 1.PyScript 应用程序的创建 PyScript 程序需要以下三个内容 一个提供给浏览器的 index.html 文件。PyScript 的运行环境描述,通常是一个 pyscript.json 或 pyscript.to…

陪诊小程序搭建:构建便捷医疗陪诊服务的创新实践

在当今快节奏的社会,医疗服务与人们的生活息息相关。然而,在医疗体系中,患者往往面临着信息不对称、流程繁琐、陪伴需求得不到满足等问题。为了解决这些问题,我们提出了一种创新的解决方案——陪诊小程序,旨在为患者提…

从零到一打造自己的大模型:模型训练

前言 最近看了很多大模型,也使用了很多大模型。对于大模型理论似乎很了解,但是好像又缺点什么,思来想去决定自己动手实现一个 toy 级别的模型,在实践中加深对大语言模型的理解。 在这个系列的文章中,我将通过亲手实践…

2734. 执行子串操作后的字典序最小字符串

Powered by:NEFU AB-IN Link 文章目录 2734. 执行子串操作后的字典序最小字符串题意思路代码 2734. 执行子串操作后的字典序最小字符串 题意 给你一个仅由小写英文字母组成的字符串 s 。在一步操作中,你可以完成以下行为: 选择 s 的任一非空子字符串…

Elasticsearch中的match_phrase_prefix、prefix和wildcard查询详解

Elasticsearch中的match_phrase_prefix、prefix和wildcard查询详解 match_phrase_prefix 查询示例优点缺点 prefix 查询示例优点缺点 wildcard 查询示例优点缺点 总结适用场景性能比较精度比较 在Elasticsearch中,对于以特定前缀开头的查询需求,常用的查…

入门篇:创建和运行Hello World

DevEco Studio安装完成后,可以通过运行Hello World工程来验证环境设置是否正确。接下来以创建一个支持Phone设备的工程为例进行介绍。 创建一个新工程 打开DevEco Studio,在欢迎页单击Create Project,创建一个新工程。根据工程创建向导&…