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

本次分享论文: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驱动生成领域引入了新的视角和工具。本文解读能助力读者深入了解如何运用这些前沿技术提升软件测试的自动化与效率。

原作者:论文解读智能体

校对:小椰风

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux的基础IO:文件系统

目录 学前补充 磁盘的存储结构 OS如何对磁盘的存储进行逻辑抽象 细节内容 文件的增删改查 学前补充 问题:计算机只认二进制,即0、1,什么是0、1? 解释:0、1在物理层面可能有不同的表现,0、1是数字逻辑…

粘土制作的梵高世界;实时自由地转换您的声音Supertone;几秒钟内设计出令人惊叹的LOGO

✨ 1: 梵高的世界 你探索 runwayml #Gen2 过 的风格功能吗?看看这个用粘土制作的梵高作品的视频——就像走进了梵高的双手雕刻的世界。 🎨 🖌️ 关注更多将经典艺术与现代技术融合的创新方式! ✨ 2: Supertone Shift 实时自由…

基于零一万物多模态大模型通过外接数据方案优化图像文字抽取系统

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 大模型应用向开发路径:AI代理工作流大模型应用开发实用开源项目汇总大模…

深究muduo网络库的Buffer类!!!

最近在学习了muduo库的Buffer类,因为这个编程思想,今后在各个需要缓冲区的项目编程中都可以用到,所以今天来总结一下! Buffer的数据结构 muduo的Buffer的定义如下,其内部是 一个 std::vector,且还存在两个…

Pyecharts的编程环境准备

一,准备Python编程环境: Python版本:3.10以上,最高版本3.12 https://www.python.org/ 进入官网,点击downloads—>windows进入下载页面,搜索”3.10.6”找到指定版本,下载并安装64位Installer…

ai智能答题助手,这四款软件让知识触手可及!

在数字化时代,知识的获取变得前所未有的便捷。随着人工智能技术的不断发展,AI智能答题助手应运而生,成为了人们学习、工作和生活中的得力助手。今天,就为大家介绍四款备受欢迎的AI智能答题助手软件,让你感受知识的魅力…

string讲解和实现

认识string string是将basic_string<char>重新定义了 basic_string是一个类模板&#xff0c;里面包括了一些列的有关字符的函数 注意&#xff1a;insert/erase/replace能不要就不用&#xff0c;他们都涉及挪动数据&#xff0c;效率不高 size_t注意 面对无符号整形size_t在…

静态住宅代理 IP 的影响

在不断发展的在线业务和数字营销领域&#xff0c;保持领先地位势在必行。在业界掀起波澜的最新创新之一是静态住宅代理 IP 的利用。这些知识产权曾经是为精通技术的个人保留的利基工具&#xff0c;现在正在成为各行业企业的游戏规则改变者。 一、静态住宅代理IP到底是什么&…

互联网轻量级框架整合之HibernateMyBatis

持久层框架 Hibernate 假设有个数据表&#xff0c;它有3个字段分别是id、rolename、note, 首先用IDEA构建一个maven项目Archetype选择org.apache.maven.archetypes:maven-archetype-quickstart即可&#xff0c;配置如下pom <project xmlns"http://maven.apache.org/…

应用FMEA打造零风险供应链的关键因素有哪些?

当下&#xff0c;构建零风险的供应链已成为企业竞争的核心要素。其中&#xff0c;FMEA&#xff08;故障模式与影响分析&#xff09;作为一种预防性的质量工具&#xff0c;对于识别和消除潜在风险&#xff0c;优化供应链流程至关重要。本文&#xff0c;天行健六西格玛管理培训公…

sklearn的make_blobs函数

make_blobs是一个用于生成随机数据点的实用函数&#xff0c; from sklearn.datasets import make_blobs X,Y make_blobs(n_samples2000,n_features2,centers12,cluster_std0.05,center_box[-5,5],random_state21)n_samples: 要生成的样本数量。centers: 要生成的簇&#xff0…

linux文本三剑客之awk

目录 1、特点与应用场景 2、awk命令执行流程 3、awk行与列 1)awk取行 2)awk取列 3)awk行与列综合使用 4、awk模式匹配-正则匹配 5、awk模式匹配-范围模式 6、awk模式匹配-特殊模式 7、awk数组* 1) 用途 2&#xff09;格式对比 8、awk循环与判断 1、特点与应用场景…

App测试基本流程以及注意事项

1 APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开发周期来确定测试时间&#xff0c;一般测试时间为两三周&#xff08;即15个工作日&#xff09;&#xff0c;根据项目情况以及版本质量可适当缩短或延长测试时间。 1.3测试资源 测试任务开始前&#xff0c;检查…

Neo4j+LLM+RAG 环境配置报错处理

开发KGLLMRAG程序时遇到以下报错&#xff0c;记录下处理方案&#xff1a; ValueError: Could not use APOC procedures. Please ensure the APOC plugin is installed in Neo4j and that ‘apoc.meta.data()’ is allowed in Neo4j configuration 这个参考文章&#xff1a;link…

【平台开发】MTK6833——cache操作记录

CPU Cache 用的是一种叫 SRAM&#xff08;Static Random-Access Memory&#xff0c;静态随机存储器&#xff09; 的芯片。 通常分为L1&#xff0c;L2&#xff0c;L3三层缓存。 CPU 并不会直接和每一种存储器设备直接打交道&#xff0c;而是每一种存储器设备只和它相邻的存储器…

vue2 Avoided redundant navigation to current location

再次点击同一个链接会报错 每次使用 push 方法时带上两个回调函数 this.$router.push({name: item.name}, ()>{}, ()>{}) //第二、第三个参数分别为成功和失败的回调函数重写 Vue-router 原型对象上的 push 函数不行 https://blog.csdn.net/weixin_43615570/article/d…

python入门demo实例-个人信息收集页面实现

dd 今天是python入门day2&#xff0c;先看一下本案例demo的样子吧~ 一个简单得html页面&#xff0c;个人信息收集界面。 案例介绍常用得input 元素 文本框&#xff0c;密码&#xff0c;邮箱。文件上传等实现。 资源下载&#xff1a;python案例demo个人信息收集页面实现资源-…

微信公众号有哪些类型,微信服务号和订阅号有哪些区别

什么是微信公众号&#xff1f; 微信公众号是国内社交媒体平台微信上的公众账号。它们是允许公司发布内容&#xff0c;收集追随者并推广其产品或服务的商业帐户。微信公众号主要有两种类型&#xff1a;订阅账号和服务账号。 微信月活跃用户突破12亿 微信最近达到了平台上的月活…

jmeter利用自身代理录制脚本

在利用代理录制脚本时一定要安装java jdk&#xff0c;不然不能录制的。 没有安装过java jdk安装jmeter后打开时会提示安装jdk&#xff0c;但是mac系统中直接打开提示安装jdk页面后下载的java并不是jdk&#xff08;windows中没有试验过&#xff0c;笔者所说的基本全部指的是在ma…

区块链 | NFT 水印:Review on Watermarking Techniques(二)

&#x1f34d;原文&#xff1a;Review on Watermarking Techniques Aiming Authentication of Digital Image Artistic Works Minted as NFTs into Blockchains 1 半脆弱和可逆水印 鲁棒性好的水印技术通常会产生非常低透明度。正如前面所述&#xff0c;由于透明度在处理数字…