技术分享 | 大语言模型增强灰盒模糊测试技术探索

图片

大语言模型凭借其庞大的参数规模,能够通过无监督学习从海量文本中获取知识,从而不仅能够深刻理解文本语义,还能准确识别文本的格式和结构。凭借对不同数据结构的深度理解,大语言模型已在众多领域得到广泛应用。其中,尤其是在软件测试任务中的灰盒模糊测试中,大语言模型展现出了独特的优势。本文旨在深入探讨大语言模型如何增强灰盒模糊测试技术,并展望其在未来测试领域的应用前景。

灰盒模糊测试概述

模糊测试是一种自动化测试方法,其通过向目标程序输入大量随机或变异的数据,观察程序是否发生崩溃或产生异常行为,进而检测出潜在的漏洞。模糊测试主要有三种类型:黑盒模糊测试、白盒模糊测试和灰盒模糊测试。黑盒模糊测试完全不依赖程序的内部结构,而是通过盲目生成数据进行测试;白盒模糊测试则依赖程序的源代码,结合静态分析进行测试;灰盒模糊测试则介于两者之间,通过运行时动态分析来指导测试用例生成,优化测试效果。

灰盒模糊测试通过覆盖率信息(Coverage Information)来指导输入生成,利用程序执行中的反馈信息(如代码覆盖率)调整输入数据的生成方式,以最大化程序路径的覆盖范围。尽管灰盒模糊测试在测试效率和效果上优于黑盒测试,但其仍面临一些挑战,尤其是在输入生成和变异策略方面难以触及深层次的逻辑漏洞。

大语言模型应用

近年来,随着深度学习的快速发展,大语言模型展现出强大的自然语言理解和生成能力。具体到软件测试领域,大语言模型可以帮助分析程序的输入和输出,生成更加语义化的测试数据,从而提高模糊测试的覆盖率和深度。

大语言模型的引入为灰盒模糊测试带来了全新的思路。传统的模糊测试主要依赖随机或基于启发式的输入生成和变异策略,难以有效触发复杂逻辑漏洞。而大语言模型具备对自然语言、代码语义和数据结构的深刻理解,能够在测试过程中生成更加符合上下文的输入数据,这使得其在提高测试用例的多样性和覆盖率方面具有天然优势。

1. 测试用例生成

大语言模型在模糊测试中的一个核心应用场景是测试用例生成。不同于传统的模糊测试工具依赖随机变异或固定模板生成输入数据,LLMs可以基于目标程序的API、文档和注释,智能地推断出合理的输入格式和结构。例如,针对一个需要JSON格式数据的程序,LLMs能够分析并生成符合JSON格式的输入,同时保留一定的变异性,以测试程序在处理不同输入格式时的鲁棒性。

此外,LLMs在生成输入时可以结合语义信息。例如,在处理API测试时,LLMs不仅能理解API的输入参数类型,还能根据API的功能推断出可能的输入场景,从而生成更具针对性的测试用例。这种语义化的输入生成能力,极大地提升了模糊测试的有效性。

2. 代码覆盖率优化

在灰盒模糊测试中,代码覆盖率是衡量测试质量的一个重要指标。高覆盖率意味着测试工具能够更好地探索程序的不同执行路径,从而提高发现漏洞的机会。大语言模型的引入使得灰盒模糊测试能够更有效地提升代码覆盖率,特别是在面对复杂逻辑或特定格式的输入时,大语言模型能够通过理解代码中的语义信息,生成更具针对性的输入,从而触发更多代码路径。

通过大语言模型生成的测试用例,灰盒模糊测试工具能够突破传统工具难以覆盖的深层逻辑区域。例如,针对具有复杂输入约束的函数,大语言模型可以推断出更符合逻辑的输入,从而触发隐藏的代码分支,显著提高代码覆盖率。

3. 变异策略优化

模糊测试的核心在于输入的变异,传统的模糊测试工具通常依赖随机或基于启发式的变异策略,这些策略虽然在简单场景下表现良好,但在复杂逻辑面前往往难以奏效。大语言模型凭借其对上下文语义的理解,可以生成更加智能化的变异策略。

通过分析程序的输入格式和逻辑,大语言模型能够识别出哪些部分的输入数据可以进行变异,以及如何进行变异以触发新的代码路径。例如,针对一个文件解析程序,大语言模型能够生成不同的文件格式变种,测试程序在处理不同文件结构时的行为。这种智能化的变异策略,不仅能够显著提升模糊测试的效率,还能帮助发现一些深层次的逻辑漏洞。

4. 错误检测与输入语义分析

大语言模型在模糊测试中的另一个重要应用是错误检测与输入语义分析。传统的模糊测试工具通常依赖程序的崩溃或异常输出来判断漏洞的存在,而大语言模型则能够通过对程序运行结果的语义分析,识别出潜在的错误模式。

例如,大语言模型可以通过分析程序的日志输出,推断出程序在处理某些输入时是否存在潜在的逻辑错误或安全漏洞。相比于单纯依赖程序的崩溃或异常,大语言模型的语义分析能力可以帮助测试人员更早发现问题,并提供更为详细的错误报告。这种基于语义的错误检测机制,使得模糊测试不局限于发现程序崩溃,还能捕捉到更深层次的逻辑漏洞。

5. 反馈机制智能化

灰盒模糊测试中的反馈机制是指导输入生成的关键。通过分析程序运行时的反馈信息(如代码覆盖率、执行路径等),模糊测试工具可以调整输入生成策略,以最大化测试覆盖范围。大语言模型结合这些反馈信息,可以动态优化输入生成过程。

例如,当测试工具发现某些输入类型能够触发更多的代码路径时,大语言模型可以根据这一反馈生成更多类似的输入,从而进一步提高覆盖率。通过这种智能化的反馈机制,大语言模型能够帮助模糊测试工具在测试过程中不断优化自身,提高测试效率。

模糊测试智能体

大语言模型在应用于模糊测试时,显著增强了原有技术的能力。基于此思路,云起无垠研发设计了无垠模糊测试智能体,该智能体在软件安全漏洞挖掘和修复的场景中获得了广泛应用,并且取得了十分显著的效果。

1. AI Agent赋能漏洞自动化挖掘

模糊测试是一种公认的强大软件测试技术,能够有效检测安全漏洞。然而,在实际应用中,这一技术面临测试驱动开发难度大、种子变异效率低,以及安全缺陷修复成本高等挑战。

图片

传统的测试驱动生成大多基于专家知识或语法分析,技术门槛高且使用困难。为解决这一难题,云起无垠提出了基于“微调代码模型+代码详细结构+反馈”的驱动生成方案。其核心思路如下:

· 专家模型训练:根据驱动生成训练语料,训练专用于驱动生成的代码大模型。

· 驱动生成:通过静态分析引擎提取被测函数的上下文信息,构造生成测试驱动的提示词,再通过强化学习后的代码大模型输出测试驱动代码。

· 反馈优化:运行生成的驱动,监控运行情况,获取反馈信息,优化生成驱动的提示词,最终实现更高的验证通过率。

经过Google benchmark验证,云起无垠的生成策略生成了24个测试驱动,仅有22%无效驱动,优于Google的方案,表现出更高的可编译驱动比例和更低的无效驱动比例。

图片

2. AI Agent赋能漏洞自动化修复

在漏洞修复方面,传统漏洞检测工具提供的修复建议通常呈现模板化特点,实际修复工作主要依赖专家经验和人工操作。高危漏洞的修复难度大、时间长,已成为企业的核心痛点。在这种背景下,自动化修复工具成为刚性需求。

通过模糊测试引擎与训练后的代码大模型协同,不仅能够精准定位存在漏洞的代码片段,还能够分析漏洞成因。然后,利用缺陷信息生成提示词,作为大模型的输入。大模型根据这些提示词生成修复代码。更重要的是,模糊测试作为一种动态软件测试方案,可以重新运行漏洞的真实触发用例,验证缺陷修复效果。若漏洞修复失败,则进一步分析缺陷信息,优化测试代码的生成提示词。

经过验证,这一“大模型修复+模糊测试动态验证”的方案保障了代码修复率达到85%左右。

图片

写在最后

随着大语言模型技术的不断发展,其在模糊测试中的应用前景广阔。未来,大语言模型可以与其他AI技术,如强化学习、知识图谱等相结合,进一步提升自动化漏洞检测的能力。例如,强化学习可以帮助大语言模型在模糊测试中更好地探索不同的输入策略,而知识图谱可以帮助大语言模型理解更复杂的程序逻辑,从而生成更加有效的测试用例。

此外,随着大语言模型技术的普及,其在模糊测试中的应用将更加广泛和多样化。未来,基于大语言模型的智能模糊测试有望成为自动化安全测试中的重要工具,帮助测试人员发现更多高危漏洞。

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

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

相关文章

【Vue3】第三篇

Vue3学习第三篇 01. 组件组成02. 组件嵌套关系03. 组件注册方式04. 组件传递数据Props05. 组件传递多种数据类型06. 组件传递Props校验07. 组件事件08. 组件事件配合v-model使用09. 组件数据传递10. 透传Attributes 01. 组件组成 在vue当中,组件是最重要的知识&…

移动开发(五):.NET MAUI中自定义主题设置

目录 一、.NET MAUI主题设置原理 二、.NET MAUI主题设置案例 2.1 创建主题文件 2.2 修改App.xaml 文件 2.3 设置默认主题的三种方式 2.4 通过按钮切换主题 三、.NET MAUI主题设置技巧 四、总结 今天给大家分享.NET MAUI应用中如何自定义主题,提升APP本身个性…

Redis 单机、主从、哨兵和集群架构详解和搭建

目录 前言 单机部署 检查安装 gcc 环境 下载安装 Redis 启动 Redis 关闭 Redis 配置Redis 主从部署 整体架构图 主从复制配置 重启 Redis 验证 主从复制的作⽤ 主从复制缺点 哨兵部署(Sentinel) 整体架构图 哨兵模式配置 启动哨兵 验证…

Axure简单进度条制作,原型文件可下载

1.先看效果 2.需要用到的主要元件 a动态面板遮挡进度条左侧部分 b进度条底色背景 c百分比数字 3.将进度条、背景、百分比数字设置为隐藏 4.为按钮【选择文件】添加事件,并显示相应的原件 显示进度条process向右侧滑动 5.设置百分比数字及显示时每25毫秒加1 如…

html----图片按钮,商品展示

源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>图标</title><style>.box{width:…

MFC的SendMessage与PostMessage的区别

一、SendMessage 同步操作&#xff1a; SendMessage 是一个同步函数&#xff0c;它会将消息发送到指定的窗口&#xff0c;并等待该窗口的消息处理过程完成&#xff0c;然后返回。这意味着它会阻塞当前线程&#xff0c;直到消息处理完成。 直接调用&#xff1a; SendMessage 会…

解决Redis缓存击穿(互斥锁、逻辑过期)

文章目录 背景代码实现前置实体类常量类工具类结果返回类控制层 互斥锁方案逻辑过期方案 背景 缓存击穿也叫热点 Key 问题&#xff0c;就是一个被高并发访问并且缓存重建业务较复杂的 key 突然失效了&#xff0c;无数的请求访问会在瞬间给数据库带来巨大的冲击 常见的解决方案…

详细解读 CVPR2024:VideoBooth: Diffusion-based Video Generation with Image Prompts

Diffusion Models专栏文章汇总:入门与实战 前言:今天是程序员节,先祝大家节日快乐!文本驱动的视频生成正在迅速取得进展。然而,仅仅使用文本提示并不足以准确反映用户意图,特别是对于定制内容的创建。个性化图片领域已经非常成功了,但是在视频个性化领域才刚刚起步,这篇…

10.28.2024刷华为OD C题型

文章目录 HJ9HJ10HJ11HJ13HJ17 HJ9 HJ10 HJ11 HJ13 HJ17

2024年【浙江省安全员-C证】新版试题及浙江省安全员-C证模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 浙江省安全员-C证新版试题考前必练&#xff01;安全生产模拟考试一点通每个月更新浙江省安全员-C证模拟考试题目及答案&#xff01;多做几遍&#xff0c;其实通过浙江省安全员-C证模拟考试很简单。 1、【多选题】5kW以…

《计算机网络网络层:连接虚拟世界的关键桥梁》

一、网络层概述 网络层在计算机网络中占据着至关重要的地位&#xff0c;它作为连接不同网络的关键层次&#xff0c;起着承上启下的作用。网络层的主要任务是实现网络互连&#xff0c;将数据设法从源端经过若干个中间节点传送到目的端&#xff0c;为分组交换网上的不同主机提供通…

【LeetCode每日一题】——862.和至少为 K 的最短子数组

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时空频度】九【代码实现】十【提交结果】 一【题目类别】 前缀和 二【题目难度】 困难 三【题目编号】 862.和至少为 K 的最短子数组 四【题目描述】 …

【Vue】word / excel / ppt / pdf / 视频(mp4,mov) 预览

文件预览 Vue3一. word二. excel三. ppt四. pdf4.1 vue-pdf-embed4.2 iframe 五. 视频六&#xff1a;扩展——kkFileView Vue3 一. word 安装&#xff1a;npm install docx-preview父页面 <template><div><DocPreviewv-if"filePath.includes(docx)"…

【Go-Taskflow:一个类似任务流的有向无环图(DAG)任务执行框架,集成了可视化和性能分析工具,旨在简化并行任务的复杂依赖管理】

Go-Taskflow是一个静态有向无环图&#xff08;DAG&#xff09;任务计算框架&#xff0c;它受到taskflow-cpp的启发&#xff0c;结合了Go语言的原生能力和简洁性&#xff0c;特别适合于并发任务中复杂的依赖管理。 Go-Taskflow的主要特点包括&#xff1a; 高可扩展性&#xff1…

两套环境同一个接口返回不一致的排查

最近遇到个文件下载的问题&#xff0c;在开发环境好好的&#xff0c;测试环境就不行404。查了接近两天才解决。整个思路做个记载。 问题描述&#xff1a;通过视图解析器下载项目中的静态资源文件模板。也就是sringboot的resource目录下的文件。开发环境下载正常&#xff0c;测…

PHP员工管理系统小程序

&#x1f4bc;高效管理&#xff0c;从“员工管理系统”开始&#x1f4bc; &#x1f4cb;【一键录入&#xff0c;信息整合】&#x1f4cb; 你是否还在为整理员工信息而手忙脚乱&#xff1f;纸质档案易丢失、电子表格易混乱&#xff0c;这些问题在“员工管理系统”面前都将迎刃…

MemoRAG:重新定义长期记忆的AI问答模型

MemoRAG模型是如何实现长记忆的&#xff1f; ©作者|Blaze 来源|神州问学 引言 随着人工智能的发展&#xff0c;AI问答模型在各种应用场景中表现出色&#xff0c;尤其是在信息检索和知识问答领域。传统的RAG模型通过结合外部知识库的实时检索与生成模型&#xff0c;极大地…

再次被约谈了

大家好&#xff0c;我又来了&#xff0c;从上周一开始&#xff0c;一直听到不好的传言&#xff0c;下午听说有些人被约谈了&#xff0c;看来裁员工作已经开始了 就在我坐立不安时&#xff0c;看到领导飞书发来信息&#xff1a; 看来终于轮到我了&#xff0c;虽然做好了心里准…

ELK的ElasticStack概念

目录 传送门前言一、ElasticStack是什么二、ElasticStack数据格式1、Elasticsearch的概述2、Elasticsearch核心概念&#xff08;1&#xff09;接近实时&#xff08;NRT&#xff09;&#xff08;2&#xff09;集群&#xff08;cluster&#xff09;&#xff08;3&#xff09;节点…

从零开始docker-compose入门教程,快速上手多容器管理!

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 docker-compose 📒📝 Docker Compose的作用📝 Docker Compose的安装1. 在Linux或macOS上安装2. 在Windows上安装3. 在Linux或macOS上卸载4. 在Windows上卸载📝 Docker Compose基本语法📝 示例:使用Docker Compose部署…