Newtank

个人站

欢迎来到我的个人站~


模糊测试(二)

目录

按照引导方式分类

Search-based

将模糊测试过程转变为搜索问题,构造启发式算法解决问题。

启发式算法有:遗传算法-AFL、马尔科夫链-AFLFast、信息熵-Entropic、多臂老虎机问题-EcoFuzz

Gradient-based

将模糊测试过程建模为优化问题,目标是最大化缺陷挖掘数量,使用梯度下降法求最优解

目标退阶:缺陷离散分布且无法预知->替换为代码覆盖

应用DL技术-Neuzz&MTFuzz;利用梯度下降取代符号执行的约束求解过程-Angora

Neuzz

核心思路:求解无约束优化问题

挑战:

  • 如何计算反馈->如何计算梯度
  • 优化目标是不连续的,无法直接适配梯度下降->引入程序平滑技术

程序平滑:消除目标函数的不连续性

  • 黑盒程序平滑:简单易用,但会产生较大的近似错误
  • 白盒程序平滑:依赖符号执行和抽象解释技术,会产生较大开销
  • 神经程序平滑:利用NN模型模拟程序行为

按照测试目的分类

非定向模糊测试:广泛验证程序的正确性,检查潜在缺陷

定向模糊测试:针对程序的某个目标位置进行快速有效的测试

AFLGo

定向灰盒模糊测试方法。

  • 基本思路:为更靠近目标位置的种子分配更多的能量