具体内容可看 [[The Progress, Challenges, and Perspectives of Directed Greybox Fuzzing]]

术语缩写 :

  • PUT program under test
  • DSE directed symbolic execution 定向符号执行

DGF 现在的一些研究方向(内容):

  1. 设计新的 fitness
    1. 距离
    2. 相似度(比距离有优势)![[The Progress, Challenges, and Perspectives of Directed Greybox Fuzzing#^dfb282]]
    3. 脆弱性预测模型(脆弱概率)(目前精度不高)
  2. 实现多维度的 fitness 协调(感觉这个是比较好做的方向,堆料就行)
  3. 使用启发式算法来处理能量分配(本质上是在做优化,AFLgo 里面的模拟退火)
  4. Targets 预测
    • 可以从代码位置和程序行为两方面入手
  5. 生成合法输入、或者过滤无效输入
    1. 动态污点分析
    2. 语义信息
    3. 深度学习
    4. 静态分析
  6. 变异策略
  7. 符号执行解决复杂约束
  8. 检测 bug 类型
  • 前四项应该是属于 DGF 的特定任务,1-2 希望得到更有效的 fitness,3 希望能优化 fitness 的计算算法,第四项其实和 fitness 密切相关,往往 fitness 就是 targets 确定方法的一个量化。
  • 而后几项感觉算是 fuzzing 研究通用的问题,主要是用来优化 fuzzing,提高 fuzzing 的效率

挑战

  1. Fuzzing 性能下降,因为 DGF 有一些额外的处理
    1. 预处理
    2. 并行计算
    3. 提前过滤无效输入
    4. 轻量级算法
  2. 更加细粒度的调控
    1. 等加权指标偏差种子优先级 [[The Progress, Challenges, and Perspectives of Directed Greybox Fuzzing#Equal-weighted Metrics Bias Seed Prioritization 等加权指标偏差种子优先级]]
    2. 基于距离的度量的全局最优差异
    3. 勘探阶段和开发阶段的不灵活协调(EcoFuzz 解决了该问题)
  3. 过于依赖源代码(或者说二进制层次上的测试难以开展)
    1. 硬件辅助模拟
    2. 机器学习和启发式二进制差分法来识别 targets

应用

  • patch testing
  • bug reproduction
  • knowledge integration
  • result validation
  • energy saving dgf 的另一个有趣的应用是在测试资源有限的情况下。例如,当模糊物联网设备。在这种情况下,识别关键代码区域来指导测试比以无导向的方式测试整个程序更有效,这可以节省时间和计算资源花在没有 bug 的代码区域上。GREYHOUND[12]和 RVFUZZER[33]分别为 Wi-Fi 客户端和机器人车辆设计,均适用于此场景。
  • Special bug detection.

这部分启示性不大

未来趋势

  1. 多 targets 协调
  2. 多维度 fitness
  3. 多目标优化
  4. DGF 应用到其他领域(内核、协议等等)