【论文速读】|针对模糊驱动生成的提示性模糊测试

news2024/11/18 21:51:16

本次分享论文:Prompt Fuzzing for Fuzz Driver Generation

基本信息

原文作者:Yunlong Lyu, Yuxuan Xie, Peng Chen, Hao Chen

作者单位:腾讯安全大数据实验室、加州大学戴维斯分校

关键词:软件测试, Fuzzing, 自动化Fuzz驱动生成

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

开源代码:暂无

论文简介

本文介绍了PromptFuzz,一种新型的基于覆盖引导的Fuzz测试方法,旨在改进自动化Fuzz测试驱动的生成过程。该方法采用大语言模型生成Fuzz测试驱动,并通过覆盖引导策略对生成的代码进行迭代优化,从而探索库代码中未被覆盖的部分。在与现有的OSS-Fuzz及其他自动化Fuzz测试生成技术的比较中,PromptFuzz在实验中显示出更高的分支覆盖率和更有效的缺陷检测能力。

引言

Fuzzing是提高软件安全性和稳定性的关键技术之一。已有技术如OSS-Fuzz在多个项目中已成功发现并修复了大量漏洞。尽管如此,生成高质量的Fuzz驱动仍然是一个挑战,它要求对库的使用有深入的理解。本文介绍的PromptFuzz利用自动化技术改进了这一流程,通过大语言模型生成的Fuzz驱动,有效地深入探索了API的使用情况。

研究背景

随着软件复杂度的增加,确保软件的安全性和稳定性变得尤为重要。Fuzzing,作为一种高效的软件测试方法,能自动揭示程序的漏洞。尽管如此,传统的Fuzzing技术在生成Fuzz驱动过程中常面临效率低和探测深度不足的问题,这要求测试者对被测库的API有深入了解。虽然现有的自动化方案能从现有代码中学习API的使用方式,但这些通常仅限于表层的功能测试,难以探索更复杂的使用场景。PromptFuzz通过结合大语言模型(LLM)和覆盖引导策略,旨在提升Fuzz驱动的生成效率和测试深度,从而更全面地识别软件中的潜在安全风险。

相关工作

在Fuzz驱动生成领域,已有多种自动化方法尝试生成Fuzz驱动。一些技术,如FuzzGen和Utopia,依靠静态源代码分析,而APICraft和WINNIE则通过动态执行追踪来学习API的使用方式。尽管这些方法能自动提取现有代码中的API使用信息,它们通常受限于代码库中已有的API使用范围,难以涵盖未探索的API功能。此外,基于解释器的方法如Hopper,虽然能够覆盖大多数API函数,但在寻找有效的API调用序列时依然需要大量尝试。PromptFuzz应运而生,结合大语言模型的生成能力和覆盖引导策略,旨在显著提升Fuzz驱动生成的质量与效率。

实验设计

1. 研究概览

PromptFuzz是一个基于覆盖引导的Fuzz驱动生成工具,通过大型语言模型(LLM)自动化生成Fuzz驱动。工具采用运行时错误检测和代码覆盖反馈,迭代优化生成的Fuzz驱动,以探索和测试库中未被覆盖的代码区域,从而有效提升Fuzzing的深度和广度。

2. 程序生成

利用大型语言模型,PromptFuzz根据特定的库API和使用场景生成Fuzz驱动程序。通过向模型提供精确的指令集生成目标代码,确保生成的程序能够有效地调用库中的API,达到探索软件潜在缺陷的目的。

3. 数据清洗

生成程序后,PromptFuzz实施数据清洗流程,通过运行时错误检测和语法验证清除可能导致执行失败或误报的程序。此步骤包括使用编译器检测语法错误和运行多种运行时清理工具,确保程序的准确性和稳定性。此外,还对程序进行测试,排除任何导致异常行为的程序,以保证Fuzz驱动的质量。

4. 覆盖引导

PromptFuzz采用覆盖引导策略优化Fuzz驱动的生成。通过收集和分析已生成程序的代码覆盖数据,指导模型调整和改善后续的程序生成指令。这一过程不仅增强了程序探索未覆盖代码的能力,还通过持续的反馈循环提升了生成程序的质量和效果,有效地扩展了测试的广度和深入性。

实现方法

PromptFuzz实现Fuzz驱动生成的过程包括四个主要步骤:

首先,使用大语言模型(LLM)根据特定的指令生成初步程序代码。然后,该方法通过运行时错误检测清理生成的程序,移除那些执行错误或可能导致误报的代码。接下来,基于程序的代码覆盖反馈调整生成指令,以优化未来的程序生成,目的是探索更多未被覆盖的代码区域。最后,该方法修改程序中库API调用的参数,使其能接受来自Fuzzers的随机字节输入,增强Fuzzing测试的效果。

通过这些步骤,PromptFuzz能够高效地生成高质量的Fuzz驱动,显著提升软件测试的全面性和深入性。

研究评估

PromptFuzz在14个真实世界的开源库上进行了评估,并与现有的OSS-Fuzz及其他领先的自动化Fuzz驱动生成解决方案进行比较。评估结果表明,PromptFuzz生成的Fuzz驱动在分支覆盖率和缺陷检测效率上均优于竞争解决方案。

具体而言,与OSS-Fuzz和Hopper相比,PromptFuzz在分支覆盖率上分别提高了1.61倍和1.67倍。此外,PromptFuzz生成的Fuzz驱动成功发现了33个以前未被识别的实际软件缺陷,这些缺陷随后被相关社区确认。这些结果明确显示了PromptFuzz在提升Fuzz驱动生成效率和有效性方面的明显优势。

论文结论

PromptFuzz利用大语言模型的程序生成能力与覆盖引导的策略,显著提升了Fuzz驱动生成的效率和成效,尤其在增强代码覆盖率和识别真实软件缺陷方面表现出色。这种方法为Fuzz驱动生成领域引入了新的视角和工具。本文解读能助力读者深入了解如何运用这些前沿技术提升软件测试的自动化与效率。

原作者:论文解读智能体

校对:小椰风

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

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

相关文章

如何使用client-go构建pod web shell

代码示例及原理 原理是利用websocket协议实现对pod的exec登录,利用client-go构造与远程apiserver的长连接,将对pod容器的输入和pod容器的输出重定向到我们的io方法中,从而实现浏览器端的虚拟终端的效果消息体结构如下 type Connection stru…

联丰策略股票杠杆交易炒股市场四大变量,突袭A股

查查配今天早盘,港股一度冲高,但临近午盘时,亦快速杀跌,三大股指纷纷转跌。A股市场自开盘之后,就走势较为低迷。人民币和A50亦同步走弱。而从亚太市场来看,日本股市跌幅最大,日经225指数一度杀跌超1.7%。那么,究竟发生了什么? 联丰策略拥有一支由知名互联网公司和国内证券金融…

Java进阶07集合(续)

Java进阶07 集合(续) 一、数据结构(树) 1、关于树 1.1 相关概念 节点:树中每个单独的分支 节点的度:每个节点的子节点数量 树高:树的总层数 根节点:最顶层节点 左子节点&…

融知财经:期货交易原理是怎样的?期货交易有哪些特征?

期货的原理是基于对某期货品种未来走势的判断而形成对其合约的买卖交易,因此期货可以解释为买涨或买跌。买涨,即看多交易,预期某期货品种未来价格上涨而进行的买入开仓交易;买跌,即看空交易,预期某期货品种…

招聘招商求职系统asp.net+sqlserver

招聘招商求职系统asp.netsqlserver 首 页 招聘信息 公寓信息 物品求购 发布信息 管理员后台登陆 账号密码TSoft 111 审核 招聘信息 求职信息 培训信息 说明文档 运行前附加数据库.mdf(或sql生成数据库) 主要技术: 基于asp.net架构和sql s…

首席数据官CCRC-CDO如何构筑企业数据合规的坚固防线

在当今信息化快速发展的时代,数据已经成为企业最宝贵的资产之一。然而,随着数据规模的迅速增长,数据合规问题也日益凸显。首席数据官(CDO)作为企业中负责数据战略和管理的核心人物,构筑企业数据合规的坚固防…

【C++】map和set的基础详解

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

500 个 AI 项目代码库:计算机视觉到 NLP | 开源日报 No.248

ashishpatel26/500-AI-Machine-learning-Deep-learning-Computer-vision-NLP-Projects-with-code Stars: 16.8k License: NOASSERTION 500-AI-Machine-learning-Deep-learning-Computer-vision-NLP-Projects-with-code 是一个包含 500 多个 AI、机器学习、深度学习、计算机视觉…

变配电工程 变配电室智能监控系统 门禁 视频 环境 机器人

一、方案背景 要真正了解无人值守配电房的运行模式,我们必须对“无人值守”这一概念有准确的理解。它并不意味着完全没有工作人员管理,而是通过技术设备和人机协作来确保配电房的正常运行。 利用变配电室智能监控系统,可以实时获得配电室各…

【全开源】Java外卖微信小程序京东拼多多外卖cps|外卖红包优惠券源码美团饿了么红包

1.京东优惠小程序: 特色功能:京东优惠小程序提供丰富的商品优惠信息,包括京东独家的优惠券、折扣活动等。用户可以直接在小程序内浏览商品、领取优惠券、下单购买,无需跳转到京东APP或网页。优势:京东作为中国领先的电…

Android 按键消息流程源码分析

在Android系统中,键盘按键事件是由SystemServer服务来管理的;然后在以消息的形式分发给应用程序处理。产生键盘按键事件则是有Linux kernel的相关驱动来实现。键盘消息有别于其他类型的消息;需要从Linux kernel drivers产生由上层APP来处理。…

正点原子Linux学习笔记(六)在 LCD 上显示 jpeg 图像

在 LCD 上显示 jpeg 图像 20.1 JPEG 简介20.2 libjpeg 简介20.3 libjpeg 移植下载源码包编译源码安装目录下的文件夹介绍移植到开发板 20.4 libjpeg 使用说明错误处理创建解码对象设置数据源读取 jpeg 文件的头信息设置解码处理参数开始解码读取数据结束解码释放/销毁解码对象 …

[华为OD]C卷 BFS 亲子游戏 200

题目: 宝宝和妈妈参加亲子游戏,在一个二维矩阵(N*N)的格子地图上,宝宝和妈妈抽签决定各自 的位置,地图上每个格子有不同的Q糖果数量,部分格子有障碍物。 游戏规则Q是妈妈必须在最短的时间&a…

力扣刷题第1天:消失的数字

大家好啊,从今天开始将会和大家一起刷题,从今天开始小生也会开辟新的专栏。😜😜😜 目录 第一部分:题目描述 第二部分:题目分析 第三部分:解决方法 3.1 思路一:先排序…

WebView基础知识以及Androidx-WebKit的使用

文章目录 摘要WebView基础一、启动调整模式二、WebChromeClient三、WebViewClient四、WebSettings五、WebView和Native交互 Androidx-WebKit一、启动安全浏览服务二、设置代理三、安全的 WebView 和 Native 通信支持四、文件传递五、深色主题的支持六、JavaScript and WebAssem…

邮件大附件系统如何进行安全、高效的大附件发送?

邮件大附件系统是一套解决传统电子邮件系统,在发送大文件时遇到限制的解决方案。由于传统电子邮件系统通常对附件大小有限制,这使得发送大文件变得困难。邮件大附件系统通过各种技术手段,允许用户发送超过传统限制的大文件,通常在…

【随笔】Git 高级篇 -- 上传命令的参数 (下)git push(三十七)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

目标检测——低光可见光-红外配对数据集

引言 亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。 …

TypeScript学习日志-第二十四天(webpack构建ts+vue3)

webpack构建tsvue3 一、构建项目目录 如图: shim.d.ts 这个文件用于让ts识别.vue后缀的 后续会说 并且给 tsconfig.json 增加配置项 "include": ["src/**/*"] 二、基础构建 安装依赖 安装如下依赖: npm install webpack -D …

11.偏向锁原理及其实战

文章目录 偏向锁原理及其实战1.偏向锁原理2.偏向锁案例代码演示2.1.偏向锁案例代码2.2.1.无锁情况下状态2.1.2.偏向锁状态2.1.3.释放锁后的状态 2.2.偏向锁的膨胀和撤销2.2.1.偏向锁撤销的条件2.2.2.偏向锁的撤销 2.2.3.偏向锁的膨胀 2.3.全局安全点原理和偏向锁撤销性能问题2.…