软件安全分析与应用第6章模糊测试读书笔记。

  • 模糊测试
    • 基本原理与组成
    • 基础方法与技术
    • 模糊测试优化方法
      • 灰盒
      • 白盒
      • 基于反馈的模糊测试
    • 分布式模糊测试
      • 分布式控制结构
      • 分布式模糊测试策略
      • 动态适应机制
    • 典型工具与案例
      • Peach
      • Sulley

系统组成

  1. 数据生成模块

    负责批量生成测试用例,策略包含数据的语法格式与数据生成方法。数据生成方法包括字段数据的生成策略和字段数据的组合策略。

    • 字段生成
    • 约束字段计算
    • 复合字段组装
    • 文件生成
  2. 环境控制模块

    负责测试对象的控制和运行环境的维护。测试对象控制的目标包含测试目标软件的启动、暂停、终止以及数据交互过程,此外还有测试服务目标网络连接的创建、传输、断开等。

    • 进程管理
    • 环境管理
    • 测试数据交互
    • 残余信息清理
  3. 状态监控模块

    检测对象的运行状态,捕获程序执行过程中出现的异常,记录触发该异常的测试用例。

    • 异常捕获
    • 异常现场保存
    • 流量捕获
    • 进程监控

优化方法

灰盒

通过逆向分析程序二进制代码和输入数据的标准格式,生成有针对性的违背数据格式规范的测试数据,从而提高模糊测试的效率。

白盒

结合符号执行可以有效提高模糊测试的效率。分析程序指令,将程序中内存于寄存器的值表示为输入变量的表达式,然后联立每个分支语句所代表的约束表达式,再用符号执行技术求出程序执行各路径分支的一个满足条件的测试用例。通过这些测试用例,可以覆盖更多的分支,实现在减少测试用例的同时提高代码覆盖率。

基于反馈的模糊测试

模糊测试过程是一个循环的反复测试过程,通过统计分析前序测试用例特征于测试结果特征,可以指导后续测试数据的生成,这称为基于反馈的模糊测试方法。

分布式模糊测试

软件功能复杂性的增加使得通过硬件性能增长提高的模糊测试的效率变得微不足道,为了解决这个问题,使用分布式计算的方式,同时对多个程序进行测试,提高模糊测试效率。