分享 | 一文简述模糊测试智能体技术实践

news2024/9/22 19:37:23

图片

近日,华为2012实验室中央软件院旗下的欧拉多咖创新团队成功举办了【欧拉多咖 — 操作系统研讨会】。本次研讨会以“系统安全+AI=?”为主题,探讨了大模型技术如何推动基础软件迈向大规模算力时代,并详细讨论了在这一过程中系统软件所面临的机遇与挑战。云起无垠的技术负责人周鹏先生在活动中发表了题为《大模型在模糊测试领域的探索》的演讲,深入讨论了模糊测试的发展历程、大模型与模糊测试的结合应用,以及模糊测试智能体的未来技术趋势。

周鹏的分享围绕三个核心议题展开:首先,回顾了模糊测试技术的发展历程,阐述了其在软件测试中的重要性;其次,探讨了大模型技术如何与模糊测试相结合,以及这种结合在实际应用中的优势;最后,展望了模糊测试智能体技术的未来发展方向,为行业提供了新的思路和视角。

模糊测试的发展

自1988年模糊测试技术首次被提出以来,这一技术已经经历了30多年的发展历程,逐步成熟并广泛应用于软件安全领域。模糊测试技术在多个关键发展节点上不断演变,展示了其在发现安全缺陷方面的强大能力。

图片

尤其是2020年以来,模糊测试与人工智能技术的融合为网络安全领域带来了革命性的变革,开启了自动化攻防的新篇章。在DARPA(美国国防高级研究计划局)举办的网络超级挑战赛中,卡耐基梅隆大学开发的Mayhem自动攻击系统展示了模糊测试在自动化网络攻击和防御中的巨大潜力。Mayhem系统在比赛中利用先进的模糊测试技术,通过生成大量变异的输入数据来发现软件中的漏洞,从而在决赛中以显著优势胜出,证明了将模糊测试与超级计算能力相结合的策略在网络安全领域的强大效能。

在2024年,随着人工智能技术的进一步发展,超亿元奖金的AIxCC(人工智能与网络安全交叉挑战赛)进一步推动了这一领域的创新。AIxCC比赛鼓励参赛者将大语言模型与安全引擎相结合,以解决网络安全中的实际问题。这种结合不仅提升了自动化检测和响应的能力,还能够更有效地识别和防御网络攻击,从而保护关键基础设施和数据安全。

与此同时,模糊测试技术在0Day漏洞挖掘方面的优势也日益显著,吸引了美国国防部、Google、微软、华为等大型机构逐年增加在该技术上的研发投入。这些机构通过模糊测试技术挖掘漏洞的效果显著,尽管模糊测试技术的门槛较高,市场化推广尚未全面展开。

图片

大模型与模糊测试的实践应用

模糊测试作为一种强大的测试技术,通过系统化的输入变异和执行监控,能够有效发现软件中的安全缺陷,显著提高软件安全性。然而,模糊测试技术的应用难度大,开发和维护成本高,尤其是在修复安全缺陷时,需要投入大量资源。因此,亟需找到合适的解决方案,通过持续改进和优化模糊测试流程,进一步提升测试效率和覆盖率,发现更多潜在的安全问题。

云起无垠作为国内率先提出AI安全智能体概念的企业,专注于利用大模型技术探索安全缺陷的智能检测与修复技术。公司依托自主研发的“云起AI安全大脑”,成功推出了AI安全智能体平台,该平台集成了多项安全智能体能力,显著提升了软件测试的自动化水平和代码质量。

云起AI安全大脑的安全数据基座收集了包括漏洞库、开源代码库和安全前沿论文等多种安全数据源,通过采集、清洗和标记将其存入大模型数据库。然后,通过基座模型筛选,进行模型测试数据集和模型能力评估,以选取最优模型。随后,使用开源大模型、商业大模型和SecGPT进行基础训练和开发。模型训练过程中涵盖安全知识监督学习、安全业务强化学习和安全场景知识增强等多个方面,包括漏洞信息、威胁情报、安全工具、ATT&CK、安全流量监控、偏好优化、AI反馈学习、人类反馈、提示词工程、工具调用和检索增强等。

针对不同任务,云起AI安全大脑训练细化的场景模型,如程序语言模型集和自然语言模型集,包括修复代码生成模型、代码解释模型、测试驱动生成模型等。通过数据反馈和模型能力的持续改进,软件安全智能体不断提升测试驱动生成的成功率、代码检测准确率和代码修复成功率,从而显著增强软件的整体安全性。

在技术实现上,AI安全智能体平台的核心是基于深度学习和自然语言处理技术,特别是采用了transformer架构。该架构的核心组件包括编码器和解码器,编码器负责处理输入数据,解码器则用于生成输出。AI安全智能体平台的训练过程分为预训练和微调两个阶段。预训练阶段在大量文本数据上进行,通过无监督学习任务,如掩码语言建模,使模型能够理解和生成自然语言。微调阶段则在特定任务的数据集上进行,通过有监督学习进一步优化模型在特定任务上的表现。

在处理语言能力方面,AI安全智能体平台通过词嵌入技术将文本转换为向量形式,这些向量能够反映词与词之间的关系和含义。同时,自注意力机制使模型能够理解词在不同上下文中的含义变化,从而生成或理解具有复杂依赖和语义的文本。为了优化模型性能,AI安全智能体平台采用了多种优化和训练技巧,包括损失函数的最小化、正则化技术以防止过拟合,以及使用高级优化器如Adam来提高学习效率。

实践显示,结合静态分析与大模型的语义分析能力,云起软件安全智能体的C/C++测试驱动生成率提升至70%+,代码检测准确率达到60%+,代码修复成功率达到60%+。这些技术和流程的结合,使得软件安全智能体能够高效地提升软件的整体安全性。

图片

在软件测试领域,传统的测试驱动生成方法依赖于人工编写测试用例代码和收集动态运行环境数据,这不仅耗时耗力,而且成本高昂。相比之下,基于大语言模型(LLM-Based)的测试驱动生成方法能够直接从代码和文档中提取信息,生成测试驱动,具有更强的泛化能力和适应性。

谷歌开发了一种基于“提示词与评估框架”的测试驱动生成方法。该方法首先通过OSS-Fuzz和Fuzz introspector工具接收目标代码,进行构建和评估,生成原始编译日志。评估框架从这些日志中提取编译错误信息,并据此生成提示词,然后将这些提示词发送给大语言模型(LLM)。LLM根据这些提示词生成新的Fuzz测试目标,这些目标随后被评估框架接收并进行评估。通过这个循环过程,不断优化和改进Fuzz测试目标,从而提高测试的有效性和覆盖范围。

针对C/C++代码,云起无垠则采用了“微调代码模型+代码详细结构+反馈”的策略来生成测试驱动。首先通过静态分析提取函数信息,并自动提取被测函数相关的头文件、代码、注释、路径等信息,这些信息作为输入被输入到代码安全大模型中生成Fuzz驱动,驱动编译以及测试输出、测试覆盖率等信息又反馈到大模型中,进一步指导请驱动的生成,以提高驱动编译成功率、测试效果和代码覆盖率。

在Google benchmark的31个项目上进行的实验表明,谷歌的生成策略成功生成了14个测试驱动,而云起无垠的策略则成功生成了24个测试驱动,多生成了10个。实验结果表明,基于“微调代码模型+代码详细结构+反馈”的测试驱动生成方法更为有效,能够显著提高测试的效率和质量。

图片

相比传统的静态分析测试驱动生成和代码修复方案,周鹏认为,云起无垠基于大模型的安全检测方案能够更有效地生成测试驱动,并针对安全缺陷进行智能分析与代码修复。

技术展望

除此之外,周鹏在分享中表示,模糊测试智能体的未来研究方向包括基于反馈的用例生成和基于语法的用例生成。

技术展望一:利用大模型和覆盖引导强化学习,可以提高JavaScript引擎的测试效率和覆盖率。这种方法通过不断地选择、变异、执行、评估,并将新的有趣种子文件加入到队列中,循环迭代来提升测试效果。相比传统变异器,使用大语言模型(LLM)进行变异,可以更智能地融合代码、覆盖率和种子等多维度信息,从而实现更有效的变异过程。

图片

技术展望二:利用大语言模型(LLM)直接从协议文档中学习并生成测试用例的新方法,相比传统需要手工编写模版的方法,通过模型自动生成测试用例,提高了生成的效率和覆盖率。这种新方法通过LLM直接学习协议文档生成测试用例,显著提升了协议模糊测试的效率和准确性。

图片

总结

随着模糊测试技术的发展和大模型技术的不断演进,大模型赋能模糊测试取得了显著成就,进一步提升了模糊测试的自动化和智能化水平。实践表明,模糊测试技术在网络安全领域具有巨大的潜力,为未来技术发展指明了方向。通过持续优化模糊测试技术和结合大模型的智能能力,云起无垠在前沿技术探索上不断取得突破,为提升软件安全性做出了重要贡献。

安全极客是一个致力于信息安全知识共享与交流的专业社区平台,主要围绕GPTSecurity、智能模糊测试、软件供应链安全、红蓝攻防四大主题构建内容分享生态。云起无垠作为联合发起方,欢迎广大安全专家的加入,共同探讨前沿安全技术,促进行业内的知识分享与合作。

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

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

相关文章

论文 | LEAST-TO-MOST PROMPTING ENABLES COMPLEXREASONING IN LARGE LANGUAGE MODELS

论文主题: 这篇论文提出了“从简单到复杂提示”(Least-to-Most Prompting)这一新的提示策略,旨在解决大语言模型在解决比提示示例更复杂的问题时表现不佳的难题。 核心思想: 将复杂问题分解成一系列更简单的子问题。按…

Verilog基础:操作数的位选(bit-select)和域选(part select)

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 位选 位选(bit-select)用于选择一个向量(vector)的某位,可以是线网大类(net),也可以是变量大类(variable)中的reg、integer和time&#xf…

Redis 主从复制,哨兵与集群

目录 一.redis主从复制 1.redis 主从复制架构 2.主从复制特点 3.主从复制的基本原理 4.命令行配置 5.实现主从复制 6.删除主从复制 7.主从复制故障恢复 8.主从复制完整过程 9.主从同步优化配置 二.哨兵模式(Sentinel) 1.主要组件和概念 2.哨…

半小时获得一张ESG入门证书【详细中英文笔记一】

前些日子,有朋友转发了一则小红书的笔记给我, 标题是《半小时获CFI官方高颜值免费证书 ESG认证》。这对考证狂魔的我来说,必然不能错过啊,有免费的羊毛不薅白不薅。 ESG课程的 CFI 官方网址戳这里:CFI 于是信心满满的…

Electron运行报错:Error Cannot find module ‘node_moduleselectroncli.js‘

Electron运行报错:Error: Cannot find module ‘node_modules\electron\cli.js’ 顾名思义,命令行执行Electron .时候,会优先从项目目录查找对应依赖,如果是报错显示是找不到项目目录下的依赖,我们可以从安装在全局的…

轮转数组(时间复杂度不同的三种思路)

(来源:LeetCode) 题目 分析 其实一次轮转就是将最后一个数据放到最前面,其他数据整体向后移动一位。k为几就重复这个行为几次。 思路1 我们应该很快能想到最直接的一种思路。while(k--)……循环内完成两件事,保存最…

【C++】函数重载详解

📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…

Python面试全攻略:基础知识、特性、算法与实战解析

随着Python的普及,越来越多的人开始学习Python并尝试在面试中展示自己的技能。在这篇文章中,我们将探讨Python面试需要注意的问题以及一些经典的Python算法。 一、Python面试需要注意的问题 基础知识 在Python面试中,基础知识是非常重要的。…

开源浪潮:助力未来科技的飞速发展

文章目录 开源项目有哪些机遇与挑战?开源项目的发展趋势发展现状开源社区的活跃度 我是如何参与开源项目的经验分享选择开源项目贡献代码 开源项目的挑战开源项目面临的挑战 开源项目有哪些机遇与挑战? 随着全球经济和科技环境的快速变化,开源…

设计模式 - 最简单最有趣的方式讲述

别名《我替你看Head First设计模式》 本文以故事的形式带你从0了解设计模式,在其中你仅仅是一名刚入职的实习生,在项目中摸爬滚打。(以没有一行真正代码的形式,让你无压力趣味学习) 设计模式 策略模式观察者模式装饰者…

【简历】重庆某一本大学:JAVA简历指导,中厂通过率较低

注:为保证用户信息安全,姓名和学校等信息已经进行同层次变更,内容部分细节也进行了部分隐藏 简历说明 这是一份重庆某一本大学Java同学的简历。那么因为学校是一个一本的学校,就先要确定就业层次在中厂或者大厂,但是…

Zed 编辑器发布了原生 Linux 版本

由 Rust 编写、GPU 加速的 Zed 文本编辑器终于提供了正式的 Linux 原生版本!在过去的几个月里,Zed 的 Linux 支持取得了长足的进步,现在已经进入了更正式的阶段。 今天,这款由前 Atom 开发人员创建的现代开源代码编辑器现在在 Li…

算法的几种常见形式

算法(Algorithm) 算法(Algorithm)是指解决问题或完成任务的一系列明确的步骤或规则。在计算机科学中,算法是程序的核心部分,它定义了如何执行特定的任务或解决特定的问题。算法可以用多种方式来表示和实现…

如何在小红书上面有效地种草?

文末领取小红书电商开店运营教程! 小红书是一个以内容分享为主的社交平台,大家喜欢在这里分享自己的生活体验和心得,其中就包括各种产品的使用感受。 那么我们要想在小红书上有效地种草,首先就需要了解并掌握小红书的种草文化。 …

JavaScript(8)——函数

函数 function,是被设计执行特定任务的代码块。 函数可以把具有相同或相似逻辑的代码包裹起来,通过函数调用执行这些代码,这么做的优势有利于精简代码方便复用。类似于alert(),prompt()和console.log(),这些都是js函数,不过已经…

C++学习书籍推荐

第一本:C Primer CPrimer:主要讲解语法,经典的语法书籍,前后中期都可以看,前期如果⾃学看可能会有点晦涩 难懂,能看懂多少看懂多少,就当预习,中后期作为语法字典,⾮常好⽤…

Android11 SplashScreen 的显示和退出流程

应用的启动到显示到屏幕是需要一定的时间的,为了提升用户的体验,google加入了启动窗口,也就是SplashScreen SplashScreen显示流程 在应用的启动过程中,会调用到ActivityStarter的startActivityInner方法,具体可参考&a…

STM32HAL库+ESP8266+cJSON+微信小程序_连接华为云物联网平台

STM32HAL库ESP8266cJSON微信小程序_连接华为云物联网平台 实验使用资源:正点原子F407 USART1:PA9P、A10(串口打印调试) USART3:PB10、PB11(WiFi模块) DHT11:PG9(采集数据…

【JavaEE精炼宝库】文件操作(2)——文件内容读写 | IO流

文章目录 一、输入流1.1 InputStream 概述:1.2 read 方法详解:1.3 close 方法:1.4 利用 Scanner 进行读操作:1.5 Reader: 二、输出流2.1 OutputStream 概述:2.2 write 方法详解:2.3 利用 PrintW…

【Sql Server】sql server 2019设置远程访问,外网服务器需要设置好安全组入方向规则

大家好,我是全栈小5,欢迎来到《小5讲堂》。 这是《Sql Server》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 前言1、无法链接…