软件漏洞分析技术第12章基于二进制代码对比的漏洞分析。

  • 基于二进制代码对比的漏洞分析
    • 基本原理
    • 方法实现
      • 文本
      • 图同构
      • 结构化
      • 软件补丁
    • 实例分析
    • 典型工具
      • Bindiff
      • Eye Binary Diffing Suite

基本原理

补丁对比技术是一种通过对比打补丁前后的目标代码,分析发现两个版本的程序之间差异的技术。
二进制代码对比最终目的是寻找打补丁前后程序的差异。有以下几种方法:

  1. 基于文本的对比,输出结果范围大,漏洞定位精度差,误报率高
  2. 基于图同构的对比,指令级和函数级图同构对比,受编译器优化影响大
  3. 基于结构化对比,受编译器影响大,存在局部影响全局的问题
  4. 综合对比技术

实例分析

以CNNVD-201112-203为例,进行实例分析流程如下:

  1. 漏洞信息搜集
  2. 搭建测试环境
  3. 补丁对比(获取汇编代码差异,明确分析对象到具体的目标函数和子函数)
  4. 静态分析(定位发生问题的代码)
  5. 动态调试(验证猜想)

典型工具

Bindiff是针对二进制文件差异型对比工具,协助安全人员迅速找到反汇编代码的差异之处和相似之处。
Eye Binary Diffing Suite 使用了基于结构化签名的对比算法,并且使用其他方法作为辅助。