软件漏洞分析技术第13章智能灰盒测试读书笔记。

  • 智能灰盒测试
    • 基本原理
    • 方法实现
      • 动态符号执行
      • 路径控制与定向遍历
      • 路径约束求解
      • 漏洞触发数据生成
    • 实例分析
    • 典型工具
      • Dart
      • Smart fuzzing
      • BitBlaze

基本原理

二进制漏洞分析中应用最普遍的方法是模糊测试(fuzzing),但是存在着明显的缺陷,测试用例的生成存在盲目性。
该盲目性产生与两个方面:

  1. 没有结合系统具体代码实现(没有系统的先验知识)
  2. 测试用例独立

针对这些问题,测试方法转向智能模糊测试(smart fuzzing),通过先验知识提高测试用例的有效率。具体的方法有:

  1. 符号执行,增加覆盖率
  2. 路径控制,去除冗余无效用例

智能灰盒测试基本步骤:

  1. 静态分析,将二进制程序反汇编然后转化成为中间语言表示
  2. 符号执行收集路径条件
  3. 利用约束求解工具,求解能够执行的路径
  4. 针对此类路径生成测试用例

方法实现

动态符号执行获取程序可能的执行路径。

路径控制与定向遍历增强漏洞分析的针对性,采用模式匹配等静态分析的方法,识别出漏洞相关路径,并重点对漏洞相关路径进行遍历,提高漏洞分析的准确率。

漏洞触发数据可以分为漏洞触发条件建模、触发条件与路径条件求解和漏洞触发的输入数据三步。

实例分析

智能灰盒测试技术力图避免盲目地对路径进行搜索遍历。
智能灰盒测试的基本步骤为:

  1. 静态分析技术识别出待测试代码区域
  2. 动态二进制插桩技术跟踪目标程序执行路径
  3. 设计动态污点分析方案对路径进行分析,并使用覆盖关键路径的策略进行代码敏感区域逼近
  4. 约束求解方法计算覆盖敏感区域的执行路径相对应的程序输入
  5. 自动化测试

典型工具

Dart使用导向性随即测试金属进行漏洞检测。
Smart fuzzing采用动静结合的方式,将程序的执行流程导向最容易触发漏洞的状态空间,提升 fuzzing 效率。
BitBlaze同样采用动静结合的方式对二进制程序进行分析。