news 2026/10/29 2:17:45

青草莓谈fuzzing: 聊一下灰白盒模糊测试的样本进化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
青草莓谈fuzzing: 聊一下灰白盒模糊测试的样本进化

总之,样本进化的目的是提高被测程序测试的时候的代码覆盖率,毕竟低的代码覆盖率,测试效果一定好不到哪里去不是

不同于黑盒模糊测试工具通过模型变异生成用例 灰白盒模糊测试工具主要通过样本进化,然后基于样本库生成用例

灰白盒模糊测试一般基于样本库开始,甚至大多数测试之初并没有初始样本或只有工具给的简单初始样本

仅仅基于这样的样本进行变异测试很难达到理想的效果,因此灰白盒模糊测试工具引入了样本进化的概念

通过对被测程序进行插装,在运行的过程当中得到被测程序的运行状态,基于运行状态进行样本进化,然后继续循环测试

面临的问题1是插装,这个目前一般有以下几种

编译插装 一般在编译的过程中由编译器完成,比如 c,c++的gcc编译器和clang编译器都支持

编译中间文件插装 通过编译过程中生成的中间汇编文件进行插装,AFL等采用

二进制插装 这个一般是运行时结合一些动态插装工具插装,比如使用pin工具

面临的问题2是得到被测程序的运行状态

通常得到的是某一次运行被测程序代码块pc运行的顺序流

简单来说,模糊测试工具会将出现过的pc指针记录下来,当新出现一个pc值,认为被测代码运行到了一个以前没有覆盖过的代码,因此将本次变异的样本保存到样本库

实际上我们通过pc运行的顺序流得到的不仅仅是这些信息,我们可以得到的信息有

这次运行一共运行了那些代码块

运行了那些新的代码块

代码执行的顺序

循环语句执行的次数

我们可以细化我们得到的信息,来优化我们的样本进化

不仅仅通过代码覆盖,我们还可以通过其他信息来进行样本进化,比如一次运行分配了多少内存,消耗了多长时间等

各种各样的信息都可以用来进行样本进化,当然要避免样本爆炸这样的情况发生

面临的问题3是样本库的生成和选取

样本库来自用户定义,工具赋予和样本进化

每次选取新的样本进行变异,简单随机抽取显然是不够的,不同的样本应该赋予不同的权重,比如有些样本是刚刚新增的,有些样本能都到达更多的新路径,为不同的样本设置不同的权重也是要考虑的问题

除了上诉情况,还有一种,我们得到的是被测程序执行路径的完整符号表达式

当我们判断出执行路径的if语句已经被执行,但是else语句还没有被执行时,我们可以使用数学的手段通过符号表达式将能够进入 else分支的样本计算出来

这种情况就是符号执行技术与模糊测试结合

当然由于种种条件的限制,符号执行技术目前只作为灰白盒模糊测试工具的辅助被少量应用,而且效果貌似并不好

现在比较火的AI也经常被讨论用于和灰白盒模糊测试工具进行结合来优化样本进化

一种是通过代码覆盖情况给变异算法进行打分,来训练工具尽量采用那些分数高的变异算法

一种是通过代码覆盖情况给样本进行打分,来训练工具进行采用那些分数高的变异样本来调用被测程序进行测试,丢弃分数低的变异样本

还有一种是通过大量的已发现问题和对应的触发样本来进行训练,尽量让模糊测试工具变异出分数高的样本进行测试

利用AI面临的问题是,不同的测试用例和被测对象,都要进行不同的训练,真实应用中往往不现实

目前很多项目采用局部符号执行和变异结合或者局部AI训练和变异结合的手段,作为普通灰白盒模糊测试的辅助的尝试

还有一种是将静态扫描与灰白盒结合

这样可以得到那些路径还没有覆盖,这些没有覆盖的路径与那些已经变异出来的样本路径更近,优先调度这些样本

总之,样本进化的主要目的是提高被测程序测试的时候的代码覆盖率,毕竟低的代码覆盖率,测试效果一定好不到哪里去不是

青草莓科技

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/29 2:17:02

4.7 video组件弹幕

video组件弹幕本次课程作业围绕微信小程序video视频组件展开,目标是实现视频播放与自定义弹幕发送功能。按照老师PPT案例要求完成基础页面布局,同时我尝试把播放素材替换成自己上传到云开发存储中的视频,踩了不少坑,在这里记录一下…

作者头像 李华
网站建设 2026/10/29 2:17:01

SCR定义及实际Heric单相机中具体对应关系表

一、SCR核心定义SCR(短路电流比)的具体计算方法如下:其中I_sc为短路电流,I_N为额定容量。短路容量由电网阻抗决定,单相机中满足如下公式:对电网侧串联电感L_g(忽略电阻,或者X/R很大时…

作者头像 李华
网站建设 2026/10/29 2:16:41

视频片段剪辑软件怎么选:轻量裁剪还是完整编辑器?

一段四十分钟的录屏,你只想留下其中三十秒;另一段同样长的录屏,还要删掉等待、补上字幕、放大按钮。两者都要剪视频,但对软件的要求不同。 选择视频片段剪辑软件时,先确定要改什么:只截取一个时间段&#…

作者头像 李华
网站建设 2026/10/29 2:16:40

YouTube 营销怎么做?把一次产品演示变成一组 AI 短视频

用短视频做 YouTube 营销(YouTube marketing),可以从已有的产品演示、教程或答疑中选片。每条短片回答一个客户问题,再把感兴趣的观众引向完整内容。 AI 可以先生成候选片段,编辑再按客户的问题筛选、补充必要画面。发…

作者头像 李华
网站建设 2026/10/29 2:16:30

国赛避坑|AI 生成的代码再漂亮,也比不上统计软件的真实结果

转眼间又到了一年数学建模大赛。和往年相比,今年的比赛可能有一个明显变化:越来越多参赛者开始使用AI辅助建模。 不理解题目?问AI。不知道使用什么模型?问AI。不会写Python代码?让AI生成。甚至论文框架、模型解释、图…

作者头像 李华