Fuzz进阶教学——人工智能在模糊测试中的应用

【参考文献】白海波.人工智能技术在模糊测试中的应用[J].数字技术与应用,2023,41(08):16-18.DOI:10.19695/j.cnki.cn12-1369.2023.08.05.


目录

摘要

一、模糊测试简介

1、原理

2、工作流程

3、分类

4、应用领域

二、人工智能在模糊测试中的应用

1、人工智能技术

2、人工智能技术指导模糊测试过程

3、人工智能技术在模糊测试中的应用案例


摘要

  • 模糊测试作为一种简单、易用、低成本的技术,已经被广泛应用于软件系统的漏洞检测,它的基本原理是通过模拟随机输入数据来探测软件系统中的潜在漏洞。
  • 虽然模糊测试方法简单,但由于数据的随机性往往比较高,导致测试效率和准确性不能得到保 证。
  • 随着人工智能技术的不断发展,将人工智能技术应用于模糊测试中,可以帮助测试人员在更短的时间内发现更多的漏洞。

一、模糊测试简介

1、原理

  • 模糊测试 (Fuzzing)也称为随机测试,是一种软件测试技术,它通过产生随机的测试用例,并将其输入到目标程序中执行,观察程序的反应,进而发现程序中的漏洞和异常行为。

2、工作流程

  • 确定测试目标
    • 首先要确定测试的目标。例如,测试一个应用程序的某个特定功能或对程序的全部模块 进行测试。
    • 确定测试目标后,需要了解程序的特点。例如,程序的输入参数、限制、响应机制等。
  • 生成测试用例
    • 首先需要收集一些输入数据作为种子,然后通过对种子进行变异操作(如修改、插入、删除、替换等)来生成大量的测试用例,并将这些测试用例提供给被测软件进行执行,以尽可能地触发潜在漏洞。
  • 执行测试用例
    • 将生成的测试用例输入到程序中,并记录程序输出结果和异常情况。
  • 分析和处理结果
    • 整理并分析测试结果,筛选出能够让程序产生错误的测试用例,找出Bug所在位置。通过分析和处理结果,可以进一步调整测试用例生成方式(反馈),提高下次迭代的测试效率和覆盖率。
  • ​​​​​​​

3、分类

  • 根据模糊测试过程中生成测试用例的方式,模糊测试技术可以分为:
    • 基于变异的模糊测试
      • 在原始测试用例的基础上进行随机变异,生成新的测试用例。
      • 这些变异可以是针对单个字节、一组字节、整行或整个文件进行的,以生成具有各种不同变化的测试用例。
    • 基于生成的模糊测试
      • 通过学习和模拟程序输入数据的规则,以生成符合输入规则的测试用例。
      • 这种方式需要提前了解程序输入数据的规则和结构,针对不同的程序类型,需要考虑的输入数据结构和规则也会有所不同,如输入必须满足通信协议、格式、长度限制 等。
  • ​​​​​​​

4、应用领域

  • 二进制的漏洞挖掘
    • 模糊测试可以在二进制程序中产生随机输入并执行,发现程序中的漏洞,进而提高软件安全性。
  • 网络协议的漏洞挖掘
    • 模糊测试可以模拟各种网络数据包,产生随机数据对网络协议进行测试,发现协议的漏洞和异常情况,从而提高网络协议的安全性。
  • Web应用的漏洞挖掘
    • 模糊测试可以生成随机的HTTP请求和表单提交,发现Web应用程序的漏洞和错误。例如,SQL 注入、跨站脚本攻击和文件包含漏洞等。
  • 操作系统和系统调用的漏洞挖掘
    • 模糊测试可以在操作系统中模拟各种异常事件和输入(例如,系统调用、文件输入和设备驱动程序等),以检测操作系统和系统调用的漏洞和错误,提高操作系统的稳定性和安全性。

二、人工智能在模糊测试中的应用

1、人工智能技术

  • 人工智能技术主要应用在模糊测试中的测试用例生成和筛选,涉及的技术主要是遗传算法和神经网络
    • 遗传算法:一种基于自然选择和遗传学理论的优化算法,它主要应用于解决优化问题。
    • 神经网络:一种模拟生物神经系统的数学模型,可以通过学习和适应各种数据集来进行复杂的预测和分类任务。
  • 测试用例生成
    • 使用遗传算法中的适应度函数,通过某些标准(例如覆盖率或风险值)来评价每个测试用例的质量,然后修改测试用例并生成新的测试用例, 直到找到漏洞或达到覆盖率要求。
    • 也可以使用循环神经网络 (RNN)生成对抗网络 (GAN)来产生高质量的测试用例。
  • 测试用例筛选
    • 应用遗传算法从海量测试用例中筛选出能够触发漏洞或异常行为的有效测试用例, 从而使测试用例的数量减少至较少且更有代表性的用例集合,可以节省计算资源并提高模糊测试的效率。
    • 也可以通过神经网络的分类模型,对测试用例进行筛选和分类,将其划分为不同的类别或者标记为异常情况,从而辅助质量测试人员在测试用例分析和维护时提供参考。

2、人工智能技术指导模糊测试过程

  • 预测漏洞位置
    • 通过对已知漏洞的分类和识别,预测、发现潜在的未知漏洞。主要通过使用神经网络等 技术提取目标程序特征,训练目标程序分析模型,并使用已知的漏洞样本进行模型优化,最后分析并预测程序中的漏洞位置。
  • 测试用例生成
    • 在模糊测试过程中,测试用例的生成通常是随机的。利用人工智能生成测试用例,可以提高测试用例的覆盖率和测试效果,也可以降低测试工作的人力成本和时间成本。
    • 主要通过使用神经网络等技术提取目标程序特征(包括函数参数、函数 调用序列、变量名、API 调用序列等)。根据提取的特征,训练测试用例生成模型,使模型能够从大量的程序信息中学习有效地测试用例生成规律。最后根据输入数据生成具有代表性的测试用例。
  • 测试用例筛选
    • 在模糊测试过程中,利用人工智能筛选测试用例,可以过滤掉重复、无效或低优先级地测试用例,提高测试效率和测试覆盖率,降低测试工作的人力成本和时间成本。
    • 主要通过使用神经网络等技术提取目标程序特征,训练测试用例筛选模型,使模型能够从大量的程序信息中学习有效地测试用例筛选规律。最后根据生成的特征和筛选模型等信息,对测试用例进行筛选和优化,筛选出具有更高覆盖率、更高可检测性的测试用例。
  • 变异算子的选择
    • 在模糊测试中,变异算子的选择对测试结果的质量和效率有着重要的影响。利用人工智能选择变异算子,可以更加深入地了解被测试的程序,使得变异后生成的测试用例能够覆盖更多的程序路径、更快地触发漏洞。
    • 例如,在某些场景中可采取针对特定漏洞的变异算子以增加测试覆盖率。
  • 漏洞分类和识别
    • 在模糊测试过程中,利用人工智能分析测试结果,可以快速准确地定位检测结果中的漏洞或异常现象,进而有效地辅助漏洞挖掘和修复,提高程序的安全性和可靠性,同时也可以降低测试工作的人力成本和时间成本。
    • 在应用过程中,可以使用神经网络来训练分析模型,分析模型可以根据不同的学习算法和特征提取技术,将结果划分为不同的类别,如内存泄漏、权限提升、代码注入等。

3、人工智能技术在模糊测试中的应用案例

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

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

相关文章

AIGC系列之:GroundingDNIO原理解读及在Stable Diffusion中使用

目录 1.前言 2.方法概括 3.算法介绍 3.1图像-文本特征提取与增强 3.2基于文本引导的目标检测 3.3跨模态解码器 3.4文本prompt特征提取 4.应用场景 4.1结合生成模型完成目标区域生成 4.2结合stable diffusion完成图像编辑 4.3结合分割模型完成任意图像分割 1.前言 …

前馈式神经网络与反馈式神经网络的区别,联系,各自的应用范围和场景!!!

文章目录 前言一、前馈式神经网络是什么?二、前馈式神经网络包括:三、反馈式神经网络是什么?四、反馈式神经网络包括:总结 前言 前馈式神经网络和反馈式神经网络是两种主要的神经网络架构,它们在网络结构和应用场景上…

Python接口自动化测试 ---Allure报告使用详解

这一节主要是记录allure的内容以及用法,怎么让他生成一个完整的想要的报告。 allure生成的报告和其他五花八门的报告对比了一下,它的可读性是最好、最直观的。这不仅仅是我想要的效果,也是很多小伙伴想要的结果,毕竟这是给领导看…

使用Prometheus监控Synology(群辉)

1、简介 在现代的IT环境中,对于服务器和网络设备的监控是至关重要的。Synology(群辉)作为一种流行的网络存储解决方案,为用户提供了高性能和可靠的存储服务。然而,了解Synology设备的运行状况和性能指标对于确保其正常…

有权图的最短路径算法

目录 单源最短路径问题 Dijkstra算法 原理 ​ 获得最短路径长度的Dijkstra代码实现 时间复杂度 算法优化 优先队列优化后的代码实现 时间复杂度 可以具体获得最短路径的Dijkstra代码实现 Bellman-Ford算法 原理 代码实现 Floyed算法 原理 代码实现 单源最短路…

TLS、对称/非对称加密、CA认证

1. SSL与TLS SSL/TLS是一种密码通信框架,他是世界上使用最广泛的密码通信方法。SSL/TLS综合运用了密码学中的对称密码,消息认证码,公钥密码,数字签名,伪随机数生成器等,可以说是密码学中的集大成者。 TLS…

flask web开发学习之初识flask(一)

一、概念 flask是一个使用python编写的轻量级web框架,作者为Armin Ronacher(中文名:阿尔敏罗纳彻),它广泛被应用于web开发和API。flask提供了简洁而灵活地方式来构建web应用,它不会强加太多约束&#xff0…

父进程隐藏——ConsoleApplication903项目

首先我发现用calc来做进程隐藏实验是失败的,父进程一直都是svhost.exe 那么我用我自己生成的cs木马beacon903.exe试试 试试explorer.exe 再试试cmd.exe 可以看到成功变成cmd.exe 可以看到我们可以通过这种方式虚假父进程 以上我们是直接获得的pid,那…

Opencv | 直方图均衡化

import cv2 #opencv 读取的格式是BGR import numpy as np import matplotlib.pyplot as plt #Matplotlib是RGB %matplotlib inline def cv_show(img,name):cv2.imshow(name,img)cv2.waitKey()cv2.destroyAllWindows() cv2.calcHist(images,channels,mask,histSize,ranges) - …

Swift下如何使用#if条件编译

一、OC使用条件编译 OC中可以使用宏定义,再使用条件编译 #define USER_CUSTOM使用 #if USER_CUSTOM //其他代码 #endif二、Swift使用条件编译 Swift 不像ObjectC一样,通过定义一个变量,然后使用**#if #endif** 方法。swift需要设置一下才能…

群晖NAS配置之自有服务器frp实现内网穿透

什么是frp frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。今天跟大家分享一下frp实现内网穿透 为什么使用 frp &a…

实战Flask+BootstrapTable最简动态表头及数据(ajax方法)

话不多说,有图有源码 1.实现原理:通过ajax从后端获取表头及数据 前端页面内容 <!DOCTYPE html> {% from "common/_macro.html" import static %} <html> <meta charset"utf-8"> <head> <!-- 引入bootstrap样式 --> <l…

解读向量数据库

不论是RAG&#xff0c;还是Agent&#xff0c;几乎每个LLM 驱动的应用程序都可能会用到向量数据库。那么&#xff0c;向量数据库是什么&#xff1f;与传统数据库有何不同&#xff1f; 又如何选择向量数据库呢&#xff1f; 本文是老码农关于向量数据库的学习笔记。 1. 什么是向量…

鸿蒙4.0开发笔记之ArkTS语法的基础数据类型[DevEco Studio开发](七)

文章目录 一、基本数据类型的定义1、变量声明2、数字类型3、字符串类型4、布尔类型5、数组类型6、元组类型7、枚举类型8、联合类型&#xff08;少用&#xff09;9、未知Unkown类型10、未定义和空值类型 二、数据类型的使用1、组件内部声明变量不需要使用let关键字2、使用Divide…

基于U2-Net如何训练一个一键抠图模型

1. 前言 抠图是图像编辑的基础功能之一&#xff0c;在抠图的基础上可以发展出很多有意思的玩法和特效。比如一键更换背景、一键任务卡通化、一键人物素描化等。正是因为这些有意思的玩法。 最近也是对此模型背后的网络很感兴趣&#xff0c;收集数据训练了人脸素描化模型&…

Docker基本操作---镜像与容器操作

Docker基本操作---镜像与容器操作 1. 操作镜像1.1 查看镜像1.2 删除镜像1.2.1 删除镜像1.2.2 强制删除镜像1.2.3 删除所有镜像 1.3 启动镜像1.4 常见错误1.4.1 image is being used by stopped container e3b9df6dc6ae 2 操作容器2.1 新建启动容器2.2 查看正在运行的容器2.3 退…

电脑如何录音?适合初学者的详细教程

“电脑怎么录音呀&#xff1f;参加了一个学校举办的短视频大赛&#xff0c;视频拍摄都很顺利&#xff0c;音乐却出了问题&#xff0c;朋友说可以用电脑录制一段音乐应付一下&#xff0c;可是我不会操作&#xff0c;有哪位大佬教教我&#xff01;” 声音是一种强大的媒介&#…

汽车电子 -- 车载ADAS之LCA(变道辅助系统)

相关法规文件: LCA: ISO 17387-2008 Intelligent transport systems — Lane change decision aid systems 一、变道辅助系统 LCA &#xff08;Lane Change Assist&#xff09; LCA 系统&#xff08;变道辅助系统&#xff09;监测后方相邻车道区域&#xff0c;如果有车辆在后…

RK3568平台开发系列讲解(Linux系统篇)通过OF函数获取设备树中断信息实验

** 🚀返回专栏总目录 文章目录 一、获取中断资源API详解二、设备树三、驱动程序沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍通过OF函数获取设备树中断信息 。 一、获取中断资源API详解 ① irq_of_parse_and_map 函数 该函数的主要功能是解析设备节点…

[SaaS] 广告创意中stable-diffusion的应用

深度对谈&#xff1a;广告创意领域中 AIGC 的应用这个领域非常快速发展&#xff0c;所以你应该保持好奇心&#xff0c;不断尝试新事物&#xff0c;不断挑战自己。https://mp.weixin.qq.com/s/ux9iEABNois3y4wwyaDzAQ我对AIGC领域应用调研&#xff0c;除了MaaS服务之外&#xff…