软件漏洞分析技术:基于二进制代码对比的漏洞分析
软件漏洞分析技术第12章基于二进制代码对比的漏洞分析。
- 基于二进制代码对比的漏洞分析
- 基本原理
- 方法实现
- 文本
- 图同构
- 结构化
- 软件补丁
- 实例分析
- 典型工具
- Bindiff
- Eye Binary Diffing Suite
基本原理
补丁对比技术是一种通过对比打补丁前后的目标代码,分析发现两个版本的程序之间差异的技术。
二进制代码对比最终目的是寻找打补丁前后程序的差异。有以下几种方法:
- 基于文本的对比,输出结果范围大,漏洞定位精度差,误报率高
- 基于图同构的对比,指令级和函数级图同构对比,受编译器优化影响大
- 基于结构化对比,受编译器影响大,存在局部影响全局的问题
- 综合对比技术
实例分析
以CNNVD-201112-203为例,进行实例分析流程如下:
- 漏洞信息搜集
- 搭建测试环境
- 补丁对比(获取汇编代码差异,明确分析对象到具体的目标函数和子函数)
- 静态分析(定位发生问题的代码)
- 动态调试(验证猜想)
典型工具
Bindiff是针对二进制文件差异型对比工具,协助安全人员迅速找到反汇编代码的差异之处和相似之处。
Eye Binary Diffing Suite 使用了基于结构化签名的对比算法,并且使用其他方法作为辅助。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.