【论文速读】|理解基于大语言模型的模糊测试驱动程序生成

news2024/7/6 19:50:27

图片

本次分享论文:Understanding Large Language Model Based Fuzz Driver Generation

基本信息

原文作者:Cen Zhang, Mingqiang Bai, Yaowen Zheng, Yeting Li, Xiaofei Xie, Yuekang Li, Wei Ma, Limin Sun, Yang Liu

作者单位:南洋理工大学, 中国科学院信息工程研究所, 新加坡管理大学, 新南威尔士大学

关键词:模糊驱动生成,模糊测试,大语言模型

原文链接:https://arxiv.org/abs/2307.12469

开源代码:未提供

论文要点

论文简介本研究探讨了使用大语言模型(LLMs)自动生成Fuzz驱动程序的可行性与挑战。通过设计五种查询策略,从基础到增强,系统性地分析了生成Fuzz驱动程序的过程,并通过与工业界使用的驱动程序进行比较,揭示了其实用性和潜在的改进方向。

研究目的:解决Fuzz测试中驱动程序编写的自动化问题,提高生成有效Fuzz驱动程序的能力,减少人工编写的需求。

研究贡献:

(1)首次深入研究基于LLM的Fuzz驱动程序生成的有效性;

(2)设计并实现了五种生成策略,通过大规模评估验证了其有效性;

(3)构建了首个可以大规模评估生成Fuzz驱动程序的框架;

(4)与工业界使用的驱动程序进行了比较,总结了未来改进的方向。

引言

本文介绍了Fuzz测试的必要性和重要性,特别是在发现零日漏洞方面。Fuzz驱动程序是Fuzz测试不可或缺的组成部分,因为它们允许直接执行目标程序。一个有效的驱动程序必须包含正确且健壮的API使用方式,错误或不合理的使用可能会导致大量虚假的正面或负面结果,从而浪费测试资源。尽管Fuzz驱动程序通常需要由人类专家编写,这一过程既费时又费力,但通过使用LLM,研究人员可以尝试自动生成这些驱动程序,简化和加速这一过程。

研究背景

本研究背景部分详细介绍了自动化Fuzz驱动程序生成的挑战及其在安全测试中的重要性。Fuzz测试作为一种有效的软件测试方法,能够发现程序中的漏洞,尤其是那些难以通过传统测试手段发现的缺陷。然而,Fuzz测试的效率和效果很大程度上依赖于高质量的驱动程序。传统的驱动程序生成方法多依赖于手工编写或特定的程序分析工具,这不仅耗时耗力,而且难以适应日益增长的测试需求。本研究通过引入大语言模型(LLM),探索了一种新的自动化生成方法,旨在提高Fuzz驱动程序生成的自动化程度和适应性,从而更有效地支持复杂软件系统的安全测试需求。

研究方法

本研究旨在通过构建一个综合评估框架来评估不同问题生成策略对结果的影响。首先,研究探讨了基础查询策略(Research Question 1, RQ1),采用了基本的API信息和与大语言模型(LLM)的初步互动。其次,研究扩展至更复杂的查询策略(Research Question 2, RQ2),这些策略不仅涉及了更广泛的API应用,还引入了交互式查询功能。进一步地,研究比较了由LLM生成的模糊测试驱动程序与开源软件Fuzzing工具(OSS-Fuzz)生成的驱动程序,深入分析了它们在生成测试用例时的效能和局限性(Research Question 3, RQ3)。这些方法相互补充,共同构成了一个全面的实验设计,旨在评估生成策略的有效性。

研究策略

基本策略:基本策略主要针对简单的API信息进行一次性查询,即仅使用API的基础数据如函数声明和头文件名称。这种策略的目的是快速生成基础但可行的Fuzz驱动程序,用于初步的Fuzz测试。基本策略适用于API使用较为直接和简单的情况,能够在没有复杂依赖或深入API细节知识的情况下快速产生结果。

图片

增强策略:为了处理更复杂的API使用场景并提高生成的Fuzz驱动程序的质量,研究团队设计了多种增强策略。这些策略包括:

图片

1. 利用API文档:通过整合API的官方文档信息,增强策略能够提供更丰富的上下文,帮助模型更准确地理解API的功能和使用方法。这种策略特别适用于API文档详尽且结构化良好的情况。

2. 引入示例代码:将实际的API使用示例代码纳入查询中,可以显著提升模型生成代码的实用性和准确性。示例代码提供了具体的使用场景,使得模型能够在生成过程中模仿这些实际应用,从而生成更加有效和实用的驱动程序。

3. 交互式查询:通过与模型进行交互式对话,逐步调整和优化查询内容,增强策略能够在生成过程中不断纠正和改进,适应复杂的编程需求。这包括基于先前生成结果的反馈进行迭代查询,以细化和优化驱动程序。

驱动程序

在这篇论文中,驱动程序部分详细探讨了如何利用大语言模型(LLM)自动生成Fuzz测试的驱动程序。研究首先基于基本API信息进行单次查询,这是最简单的策略。为了提升生成效果,研究者引入了增强策略,比如结合API的文档和示例代码进行查询,以及与模型的交互式对话,使得生成的驱动程序更加准确和实用。通过这种方式,生成的驱动程序能够在实际的Fuzz测试中表现出较高的有效性和竞争力,从而显著提高了测试的自动化和效率。这项研究展示了利用语言模型处理复杂编程任务的潜力,为自动化软件测试领域带来了新的技术突破。

图片

论文结论

在本论文中,作者首次深入研究了利用大语言模型(LLM)生成Fuzz驱动程序的实用性和挑战。通过设计和实施了基础到增强的多种查询策略,验证了这些策略在自动生成驱动程序中的有效性。研究结果表明,利用LLM进行驱动程序生成显示出了良好的实用性和竞争力。64%的问题可以完全自动解决,如果加入手动的语义验证,这一比例可以提高到91%。然而,研究也揭示了该方法在处理需要复杂API使用细节的驱动程序时的局限性。未来的工作将聚焦于如何通过自动化语义正确性验证、扩展API使用及优化查询策略等方面来进一步提升系统的性能和实用性。

原作者:论文解读智能体

校对:小椰风

图片

 

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

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

相关文章

elasticsearch 常用语法汇总

文章目录 前言elasticsearch 常用语法汇总1. 创建索引2. 检索索引信息3. 删除索引4. 文档操作4.1. 对blog_new索引指定文档ID新增4.2. 对blog_new索引不指定文档ID新增,随机文档ID:4.3. 获取文档4.4. 更新文档4.5. 删除文档 5. 查询5.1. 匹配查询5.2. 范围查询5.3. …

掌握TypeScript,成为前端高手(AI写作一键生成免费)

首先,这篇文章是基于笔尖AI写作进行文章创作的,喜欢的宝子,也可以去体验下,解放双手,上班直接摸鱼~ 按照惯例,先介绍下这款笔尖AI写作,宝子也可以直接下滑跳过看正文~ 笔尖Ai写作:…

免费获取!遗传算法+多目标规划算法+自适应神经模糊系统程序代码!

前言 遗传算法(Genetic Algorithm,GA)最早是由美国的 John holland于20世纪70年代提出,该算法是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,通过数学的方式,将问题的求解过程转…

pyqt QSplitter控件

pyqt QSplitter控件 QSplitter控件效果代码 QSplitter控件 PyQt中的QSplitter控件是一个强大的布局管理器,它允许用户通过拖动边界来动态调整子控件的大小。这个控件对于创建灵活的、用户可定制的用户界面非常有用。 QSplitter控件可以水平或垂直地分割其包含的子…

靠生成式人工智能赚钱? 扎克伯格:再等几年吧

不用多说,AI人工智能就是2024年最热的技术,企业也希望通过AI技术大赚特赚。不过Meta CEO扎克伯格在公司2024年第一财季业绩会议上表示,从生成式人工智能中获利还需要几年时间。 R-C (1).jpg© 由 ITheat热点科技 提供 AI人工智能技术很多…

【数据结构与算法】:手搓顺序表(Python篇)

文章目录 一、顺序表的概念二、顺序表的实现1. 顺序表的创建1.1 扩容1.2 整体建立顺序表 2. 顺序表的基本运算算法2.1 顺序表的添加(尾插)2.2 指定位置插入2.3 指定位置删除2.4 顺序表的查找2.5 顺序表元素的索引访问2.6 顺序表元素的修改2.7 顺序表长度…

Java毕业设计 基于SpringBoot vue城镇保障性住房管理系统

Java毕业设计 基于SpringBoot vue城镇保障性住房管理系统 SpringBoot 城镇保障性住房管理系统 功能介绍 首页 图片轮播 房源信息 房源详情 申请房源 公示信息 公示详情 登录注册 个人中心 留言反馈 后台管理 登录 个人中心 修改密码 个人信息 用户管理 房屋类型 房源信息管理…

微信小程序:5.数据绑定

在Data中定义数据早wxml中进行数据使用 在data中定义数据 在页面对应的js对象中找到data,然后把数据进行定义即可 Page({data: {motto: Hello World,userInfo: {avatarUrl: defaultAvatarUrl,nickName: ,},hasUserInfo: false,canIUseGetUserProfile: wx.canIUse…

药房管理 T1072

#include<bits/stdc.h> using namespace std; int main(){int m,n;cin>>m>>n;int f[n];for(int i0;i<n;i)cin>>f[i];int count0;for(int i0;i<n;i){if(m>f[i]){mm-f[i];}else {count;}}cout<<count;return 0;}

【Redis 开发】缓存雪崩和缓存击穿

缓存问题 缓存雪崩解决方案 缓存击穿互斥锁逻辑时间基于互斥锁解决缓存击穿问题基于逻辑过期方式解决缓存击穿问题 缓存雪崩 缓存雪崩是指在同一时间段&#xff0c;大量的缓存key同时失效或者Redis服务器宕机&#xff0c;导致大量请求到达数据库&#xff0c;带来巨大压力 解决…

node.js egg.js

Egg 是 Node.js 社区广泛使用的框架&#xff0c;简洁且扩展性强&#xff0c;按照固定约定进行开发&#xff0c;低协作成本。 在Egg.js框架中&#xff0c;ctx 是一个非常核心且常用的对象&#xff0c;全称为 Context&#xff0c;它代表了当前 HTTP 请求的上下文。ctx 对象封装了…

【JavaEE网络】 TCP的可靠传输机制总结

目录 可靠传输实现机制确认应答超时重传连接管理滑动窗口流量控制拥塞控制延迟应答捎带应答 可靠传输实现机制 确认应答 这是保证可靠性的最核心机制 TCP将每个字节的数据都进行了编号。即为序列号。 这是为了防止连续发多条数据的时候&#xff0c;可能出现“后发先至”的情…

c++图论基础(2)

目录 图的存储方式&#xff1a; 邻接矩阵&#xff1a; 代码实现&#xff1a; 邻接表&#xff1a; 代码实现&#xff1a; 邻接矩阵邻接表对比&#xff1a; 带权图&#xff1a; 邻接矩阵存储&#xff1a; 邻接表存储(代码实现)&#xff1a; 图的存储方式&#xff1a; 邻…

ShardingSphere 5.x 系列【26】 数据分片原理之 SQL 路由

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址:https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 1. 概述2. 携带分片键2.1 直接路由2.2 标准路由2.3 笛卡尔路由3. 不携带分片…

CH4INRULZ-v1靶机练习实践报告

CH4INRULZ-v1靶机练习实践报告 1 安装靶机 靶机是.ova文件&#xff0c;需要用VirtualBox打开&#xff0c;但我习惯于使用VMWare,因此修改靶机文件&#xff0c;使其适用于VMWare打开。 解压ova文件&#xff0c;得到.ovf文件和.vmdk文件。直接用VMWare打开.ovf文件即可。 2 夺…

k8s学习(三十六)centos下离线部署kubernetes1.30(单主节点)

文章目录 服务器准备工作一、升级操作系统内核1 查看操作系统和内核版本2 下载内核离线升级包3 升级内核4 确认内核版本 二、修改主机名/hosts文件1 修改主机名2 修改hosts文件 三、关闭防火墙四、关闭SELINUX配置五、时间同步1 下载NTP2 卸载3 安装4 配置4.1 主节点配置4.2 从…

Java设计模式 _结构型模式_适配器模式

一、适配器模式 **1、适配器模式&#xff08;Adapter Pattern&#xff09;**是一种结构型设计模式。适配器类用来作为两个不兼容的接口之间的桥梁&#xff0c;使得原本不兼容而不能一起工作的那些类可以一起工作。譬如&#xff1a;读卡器就是内存卡和笔记本之间的适配器。您将…

JAVA:maven-->>检查 所有依赖 与 环境 兼容

内容 为了确保你项目中的所有依赖都彼此兼容&#xff0c;并与你的环境相适应&#xff0c;你可以利用 Maven 的依赖管理功能。Maven 有助于解决、升级&#xff0c;并对齐所有库的版本&#xff0c;以避免任何不一致或冲突。以下是检查兼容性的步骤&#xff1a; ### 检查兼容性的…

sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

使用JavaScript日历小部件和DHTMLX Gantt的应用场景(一)

DHTMLX Suite UI 组件库允许您更快地构建跨平台、跨浏览器 Web 和移动应用程序。它包括一组丰富的即用式 HTML5 组件&#xff0c;这些组件可以轻松组合到单个应用程序界面中。 DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表&#xff0c;可满足项目管理应用…