【论文速读】| 利用大语言模型在灰盒模糊测试中生成初始种子

news2025/1/12 6:29:06

图片

基本信息

论文标题: Harnessing Large Language Models for Seed Generation in Greyb0x Fuzzing

作者: Wenxuan Shi, Yunhang Zhang, Xinyu Xing, Jun Xu

作者单位: Northwestern University, University of Utah

关键词: Greyb0x fuzzing, Large Language Models, Seed generation, Test case generation

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

开源代码:暂无

论文简介

在当今的软件测试领域,灰盒模糊测试已然成为发现软件漏洞的一项常用且关键的技术,它巧妙地在探索效率与深度之间找到了平衡点。然而,尽管诸多研究都着力于对模糊测试技术进行改进,高质量初始种子的重要性却常常被忽略,而事实上它在整个测试流程中起着基石般的作用。现阶段,已有的种子生成方法存在诸多局限,尤其在面对具有非标准或自定义输入格式的程序时,更是显得力不从心。

随着技术的发展,大语言模型(LLMs)横空出世,在多个领域展现出了前所未有的超强能力,其对复杂模式的理解与生成本领令人瞩目。在此背景下,SeedMind 应运而生,这是一个借助大语言模型(LLMs)来增强灰盒模糊测试的智能种子生成系统。与传统方法截然不同的是,SeedMind 并非直接生成测试用例,而是运用 LLMs 来打造测试用例生成器。它采用迭代式的反馈驱动过程,在这一过程中,依据每一轮反馈持续优化调整,逐步精细打磨测试用例的生成策略,力求全方位提高代码覆盖率的深度与广度。

通过对大量现实世界应用程序展开广泛且深入的评估,相关研究结果有力地表明:SeedMind 能够高效且有效地借助 LLMs 生成高质量的测试用例,在漏洞发现效率方面,更是成功超越了现有的基于 LLM 的同类解决方案,为软件漏洞挖掘开辟了一条全新且高效的路径。

研究背景

在软件安全保障领域,模糊测试(Fuzzing)是一种常用的代码漏洞发现技术,其核心是向目标程序输入大量随机或特定格式的数据,以此触发潜在漏洞。随着技术发展,灰盒模糊测试成为主流,它融合了白盒与黑盒测试的优势,能高效地发现潜在漏洞。

然而,当前模糊测试技术虽有进展,但生成高质量的初始种子仍是一大难题,限制了技术的进一步发展。过去研究多聚焦于提升模糊测试效率,如缩短测试周期、优化资源利用等,却忽视了如何生成更具代表性的输入种子。这导致面对具有复杂输入格式或定制化数据需求的程序时,传统方法效果不佳,难以满足软件测试需求。

近年来,大语言模型(LLMs)蓬勃兴起,为种子生成带来希望。LLMs 通过对海量数据的学习,具备理解和生成复杂模式的能力,为种子生成拓展了更多可能。在此背景下,SeedMind 应运而生,它创新性地结合 LLMs,直击传统种子生成的局限,展现出巨大潜力,有望重塑软件漏洞检测格局。

问题与挑战

尽管 SeedMind 借助大语言模型(LLMs),在一定程度上改善了灰盒模糊测试里的种子生成问题,然而在其设计与实施进程中,依旧不可避免地遭遇诸多挑战。

其一,程序的输入格式繁杂多样,而且大多并非标准化形式,这无疑给有效种子的生成增添了极大难度。传统方法通常要基于对输入格式的精准把控来运作,一旦面对自定义或是未知的输入格式,其生成适配种子的能力就显得极为薄弱。

其二,LLMs 在数据生成环节存在上下文窗口受限的问题。当语言模型着手生成较长文本时,只能在局促的上下文窗口内完成操作,如此一来,生成的测试用例在语法或语义层面,便很有可能与实际应用需求存在偏差。所以,怎样应对输入格式的多样性,以及如何突破上下文的限制,已然成为 SeedMind 系统开发进程中的关键要点。

其三,生成的种子不但要切实有效、符合规范,还得契合模糊测试的进展性需求。由于模糊测试每一轮都需依据先前的结果持续推进优化,这便对种子生成系统提出了更为严苛的实时性以及反馈要求。

设计与实施

为了解决上述挑战,SeedMind在设计上采用了一种创新的迭代反馈机制。这一机制允许系统通过反复的测试和反馈,不断优化种子的生成过程。具体来说,SeedMind通过将大语言模型与反馈回路结合,确保了每次生成的测试用例都能够根据当前的测试进展进行调整和优化,从而提高了种子在后续测试中的适用性。

图片

在实现上,SeedMind首先创建了一个智能种子生成器,它能够通过学习大量的程序输入数据,从中推断出合适的种子数据。与传统方法不同,SeedMind并不是直接生成完整的测试用例,而是生成一个测试用例的生成器,进而通过进一步的迭代和调整,确保生成的种子能够更好地触发潜在的漏洞。

图片

研究评估

SeedMind的有效性通过对多个实际应用程序的广泛测试进行了验证。评估结果表明,SeedMind在生成高质量的测试用例方面,展现出了比现有LLM解决方案更强的优势。具体来说,SeedMind能够在大多数测试场景中显著提高漏洞发现的效率,且其生成的测试用例质量与人工生成的种子相当,甚至在某些情况下超过了人工种子的效果。

图片

通过对比不同种子生成方法的性能,SeedMind不仅提升了覆盖率,还提高了错误触发的精确度,这使得其在实际应用中的价值尤为突出。尤其是在处理具有复杂输入格式的程序时,SeedMind表现出了前所未有的灵活性和适应性,展示了LLMs在这一领域的巨大潜力。

论文结论

本论文的贡献在于提出了一种全新的种子生成方法——SeedMind,该方法基于大语言模型(LLMs),并通过创新的反馈机制,解决了传统种子生成技术的局限性。实验结果表明,SeedMind在多个实际测试中表现出色,其生成的种子在质量和效率上均超越了现有的基于LLM的解决方案。

总体而言,SeedMind不仅推动了模糊测试技术的进步,也为LLMs在网络安全领域的应用开辟了新的方向。未来的研究可以继续在此基础上进行拓展,例如通过更高效的模型架构和更广泛的测试集,进一步提升种子生成的准确性和覆盖范围。

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

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

相关文章

Linux:操作系统简介

前言: 在本片文章,小编将带大家理解冯诺依曼体系以及简单理解操作喜欢,并且本篇文章将围绕什么以及为什么两个话题进行展开说明。 冯诺依曼体系: 是什么: 冯诺依曼体系(Von Neumann architecture&#xff…

为什么选择平滑样条?

为什么选择平滑样条? 抗噪声能力: 平滑样条通过引入平滑参数 λ \lambda λ,允许你在以下两者之间找到平衡: 拟合误差(与数据的偏离):希望曲线接近数据点。光滑性(曲线的平滑程度&a…

边缘计算网关解决车间数据采集的关键问题

随着工业4.0和智能制造的快速发展,车间数据采集与分析已成为提升生产效率、保证产品质量、优化加工过程的关键环节。传统的数据采集方式,如中心化的数据处理模式,在面对海量数据、实时性要求高的工业场景时,往往显得力不从心。边缘…

C语言之assert断言

1.assert的使用形式 #include <assert.h>assert (表达式); (1)在c语言中&#xff0c;宏&#xff0c;是一种预处理指令。assert(表示式) 就是一个宏 (2)表达式必须是一个能计算出真或假的布尔条件&#xff0c;它通常意味着 该表达式是一个能够返回整数值的表达式&#…

【Linux】正则表达式

正则表达式是一种可供Linux工具过滤文本的自定义模板&#xff0c;Linux工具&#xff08;如sed、gawk&#xff09;会在读取数据时使用正则表达式对数据进行模式匹配。 正则表达式使用元字符来描述数据流中的一个或多个字符。它是由正则表达式引擎实现的。正则表达式引擎是一种底…

hutool糊涂工具通过注解设置excel宽度

import java.lang.annotation.*;Documented Retention(RetentionPolicy.RUNTIME) Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER}) public interface ExcelStyle {int width() default 0; }/*** 聊天记录*/ Data public class DialogContentInfo {/**…

全面教程:Nacos 2.4.2 启用鉴权与 MySQL 数据存储配置

全面教程&#xff1a;Nacos 2.4.2 启用鉴权与 MySQL 数据存储配置 1. 配置 Nacos 开启鉴权功能 1.1 修改 application.properties 配置文件 在 Nacos 2.4.2 中&#xff0c;开启鉴权功能需要修改 conf/application.properties 文件。按照以下方式配置&#xff1a; # 开启鉴权…

【学习】CMMM智能制造能力成熟度评估的重要性

CMMM认证通过对企业当前生产状态的全面评估&#xff0c;能够精准地确定其智能化生产的程度&#xff0c;并将企业的智能化生产水平划分为五个等级&#xff0c;包括初始级、已定义级、以管理级、卓越级和顶级。这种等级划分使得不同类型的企业能够根据自身实际情况&#xff0c;选…

特制一个自己的UI库,只用CSS、图标、emoji图 第二版

图&#xff1a; 代码&#xff1a; index.html <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>M…

Y3编辑器地图教程:ORPG教程、防守图教程

文章目录 Part1&#xff1a;ORPG教程一、章节人物选择1.1 Logo与界面动画1.2 章节选择与投票1.2.1 设计章节选择完毕后的操作1.2.2 玩家投票统计 1.3 多样化的人物选择系统1.3.1 异步模型显示1.3.2 双击和键盘选人1.3.3 UI选人 1.4 简易存档 二、对话与任务系统2.1对话UI与触发…

Ubuntu问题 -- 硬盘存储不够了, 如何挂载一个新的硬盘上去, 图文简单明了, 已操作成功

需求 我现在有一个ubuntu22.04操作系统的服务器, 但是当前硬盘不够用了, 我买了一个1T的SSD固态硬盘, 且已经安装在服务器上了, 我需要将这个硬盘挂载到当前ubuntu的某个目录上 开始 1. 确认新硬盘是否被系统识别 打开终端&#xff0c;输入以下命令查看系统识别到的硬盘&…

吴恩达 提示词工程 课程笔记

一、Introduction 二、Guidelines Principle1: 清晰&#xff08;不一定是简短的&#xff09;而具体的指令 Tactic1: 使用分隔符 Triple quotes: “”" Triple backticks: Triple dashes: — Angle brackets:< > XML tags: < tag></ tag> Tactic2:…

网络安全设备主要有什么

网络安全设备指的肯定是硬件设备了&#xff0c;国内卖安全硬件的没几家&#xff0c;天融信&#xff0c;启明星辰&#xff0c;绿盟&#xff0c;深信服&#xff0c;就这四家卖的比较齐全吧&#xff0c;上它们官网看一下&#xff0c;就知道市面上主要的网络安全设备有哪些了。分类…

【C++补充】第一弹---位图技术揭秘:内存优化与快速访问

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1 位图 1.1 位图相关面试题 1.2 位图的设计及实现 1.3 C库中的位图 bitset 1.4 位图的模拟实现 1.5 位图的优缺点 1.6 位图相关考察题目 1 …

解决nginx多层代理后应用部署后访问发现css、js、图片等样式加载失败

一般是采用前后端分离部署方式&#xff0c;被上一层ng代理后&#xff0c;通过域名访问报错&#xff0c;例如&#xff1a;sqx.com.cn/应用代理路径。 修改nginx配置&#xff0c;配置前端页面的路径&#xff1a; location / {proxy_pass http://前端页面所在服务器的IP:PORT;pro…

第34天:安全开发-JavaEE应用反射机制攻击链类对象成员变量方法构造方法

时间轴&#xff1a; Java反射相关类图解&#xff1a; 反射&#xff1a; 1、什么是 Java 反射 参考&#xff1a; https://xz.aliyun.com/t/9117 Java 提供了一套反射 API &#xff0c;该 API 由 Class 类与 java.lang.reflect 类库组成。 该类库包含了 Field 、 Me…

Qt天气预报系统获取天气数据

Qt天气预报系统获取天气数据 1、获取天气数据1.1添加天气类头文件1.2定义今天和未来几天天气数据类1.3定义一个解析JSON数据的函数1.4在mainwindow中添加weatherData.h1.5创建今天天气数据和未来几天天气数据对象1.6添加parseJson定义1.7把解析JSON数据添加进去1.8添加错误1.9解…

SQL SERVER 2016 创建用户。

一、在实例中创建用户 二、在数据库中创建用户分配表格权限. 三、也可以在表格属性中分配用户权限 四、搜索对象中可以选择表、视图等等内容.

汽车信息安全 -- S32K1如何更新BOOT_MAC

目录 1.安全启动模式回顾 2.为什么要讨论BOOT_MAC 3.S32K1如何更新? 1.安全启动模式回顾 之前提到过,S32K1系列提供了Crypto Service Engine硬件加密模块(简称CSEc),大家可以通过该芯片系统寄存器SDID.FEATURES(System Device Identification Register)来判断自己的片子…

7 分布式定时任务调度框架

先简单介绍下分布式定时任务调度框架的使用场景和功能和架构&#xff0c;然后再介绍世面上常见的产品 我们在大型的复杂的系统下&#xff0c;会有大量的跑批&#xff0c;定时任务的功能&#xff0c;如果在独立的子项目中单独去处理这些任务&#xff0c;随着业务的复杂度的提高…