基于符号执行的二进制代码动态污点分析

基于符号执行的二进制代码动态污点分析

论文摘要

随着计算机在社会应用的日益增多,计算机安全逐渐成为关注的焦点。人们提出了许多技术来发掘软件的漏洞,污点分析和符号执行是其中两种有效的方法。污点分析是一种数据流分析方法,它将来自于可疑渠道的信息标记为“被污染”,并通过分析每条指令确定哪些数据被可疑数据影响,将这些数据也标记为“被污染”,最后通过一定的检测规则查找软件漏洞。符号执行是采用符号对变量进行表示,并用符号代替实际的数值进行程序执行的方法。目前存在的污点分析工具存在三个问题,其一是存在检测盲点,即无法检测仅仅改变了程序的某些数据,而并没有改变控制流的漏洞;其二是无法进行位分析,即无法判断输入数据的哪些字节触发了系统漏洞;其三是路径覆盖率低,仅能对一条路径进行分析,而不能指导生成可以测试其他路径的测试用例。本文根据目前污点分析技术存在的问题,提出了采用第三种污染状态“受控污染”来丰富检测手段的方案,并通过对漏洞特征的总结,提出了六种漏洞检测规则,解决了检测盲区的问题,并且可以发现潜在的漏洞。针对污点分析固有的无法进行位分析和路径覆盖率低的缺点,本文提出了借助符号执行的完善方法:为每个内存字节分配符号,并记录内存地址与符号之前的对应关系以便进行字节级的数据跟踪;记录每次执行的路径条件,根据路径条件指导可以选择其他路径的测试用例生成。为了验证所提出的针对污点分析的完善技术是否有效,本文提出了基于上文原理的动态污点分析工具DsVD(Dynamic Software Vulnerability Detector)和它的符号执行扩展版本DsVD-SE(Dynamic Software Vulnerability Detector– Symbolic Execution)。DsVD采用三种污染状态及新归纳的六条检测规则来发掘漏洞。DsVD-SE采用了符号化的内存污点管理模型,从而可以进行细粒度的分析,具体确定是输入的哪些字节触发了软件的漏洞,同时可以记录路径信息,指导测试用例生成。为了保证DsVD和DsVD-SE的运行效率,本文采用了两种优化方法,无关API过滤和基本块处理,来减少系统开销。实验表明,DsVD和DsVD-SE可以有效的检测软件漏洞,通过对五款现实存在的软件的检测,我们共发现63个漏洞。受益于两种优化方法,加载DsVD后目标软件运行时间仅增多3.1倍,相对于其他工具,如LIFT3.6倍,TaintCheck约20倍,DsVD具有最小的系统开销。DsVD-SE的系统开销为17.34倍,慢于LIFT而优于Taintcheck。

论文目录

  • 摘要
  • ABSTRACT
  • 第一章 绪论
  • 1.1 研究背景与意义
  • 1.2 相关理论与技术基础
  • 1.2.1 程序的静态与动态分析
  • 1.2.2 Fuzzing 技术
  • 1.2.3 手工检测技术
  • 1.2.4 污点分析技术
  • 1.2.5 符号执行技术
  • 1.3 国内外研究现状
  • 1.3.1 动态二进制检测框架
  • 1.3.2 动态污点分析工具
  • 1.3.3 符号执行工具
  • 1.4 本课题研究内容
  • 1.5 论文组织结构
  • 第二章 现存问题及解决方法
  • 2.1 动态二进制污点分析
  • 2.1.1 动态二进制污点分析技术的原理
  • 2.1.2 存在的问题
  • 2.1.3 本文的解决方法
  • 2.2 符号执行
  • 2.3 使用符号执行完善污点分析
  • 2.3.1 污点分析的缺陷
  • 2.3.2 完善方法
  • 2.4 小结
  • 第三章 系统设计及架构
  • 3.1 系统框架
  • 3.1.1 动态二进制注入工具
  • 3.1.2 污点初始化模块
  • 3.1.3 数据流跟踪分析
  • 3.1.4 污点状态管理模块
  • 3.1.5 指令分析模块
  • 3.1.6 漏洞检测模块
  • 3.2 DsVD-SE 的设计及实施
  • 3.2.1 改动总览
  • 3.2.2 符号化内存管理
  • 3.2.3 状态位记录
  • 3.2.4 符号地址映射
  • 3.2.5 约束求解器
  • 3.3 优化
  • 3.3.1 无关API 过滤
  • 3.3.2 基本块处理
  • 3.4 小结
  • 第四章 实验与结果
  • 4.1 实验目标及计划
  • 4.2 案例研究
  • 4.2.1 已知漏洞:缓冲区溢出
  • 4.2.2 未知漏洞:Hangul HWP 中的受控跳转
  • 4.3 发现的未知漏洞
  • 4.4 运行效率
  • 4.5 运行速度比较
  • 4.6 占用内存空间比较
  • 4.7 实验小结
  • 第五章 结论
  • 5.1 全文总结
  • 5.2 未来工作的展望
  • 参考文献
  • 致谢
  • 工程硕士期间发表论文
  • 相关论文文献

    标签:;  ;  ;  ;  

    基于符号执行的二进制代码动态污点分析
    下载Doc文档

    猜你喜欢