学位论文 > 优秀研究生学位论文题录展示

二进制代码安全性分析

作 者: 李朝君
导 师: 蒋凡
学 校: 中国科学技术大学
专 业: 计算机软件与理论
关键词: 二进制分析 符号执行 代码安全 软件安全
分类号: TP311.1
类 型: 硕士论文
年 份: 2010年
下 载: 225次
引 用: 1次
阅 读: 论文下载
 

内容摘要


代码安全在计算机系统中占有重要的地位,针对软件源代码进行安全性分析的工具和方法大量出现,对加强软件的代码安全起到了很好的作用。然而大量使用的商业软件是以二进制代码形式存在的,这使得以源代码为分析对象的软件代码安全分析技术无能为力。二进制代码作为软件的最终表现形式,在现阶段也是很多软件的唯一表现形式。研究针对二进制代码进行安全性分析的方法和技术是有意义的。源代码安全性分析以静态分析为主,而二进制代码安全性分析以动态分析为主。本文比较全面地分析了以二进制代码为分析对象的代码安全性分析技术面临的挑战和迎接这些挑战所做的努力和可行的技术方法,介绍了pin和valgrind所使用的二进制动态插装的动态分析技术以及BitBlaze采用的动静结合的动态fuzzing技术,着重分析了动态fuzzing技术的不足,讨论了常见的语义结构及漏洞模式在二进制代码上的表现形式。在此基础上,将源代码安全性分析中广泛使用的符号执行技术用于二进制代码的安全性分析,提出了动态分析和符号执行相结合的二进制代码安全性分析技术。二进制代码分析具有很大的困难,常见的漏洞模式在二进制代码上的表现形式难以确定,尤其是难以精确判断栈上缓冲区的边界;二进制代码提升过程中一些指令无法解析,甚至会出现跳转地址不合法之类的结构性的错误,使得后续的分析精确性降低。本文实现了一个动态符号执行的二进制代码安全性分析的原型工具bats,实验结果表明将动态分析和符号执行技术结合起来对二进制代码进行安全性分析是可行的,在符号执行时对潜在漏洞进行充分分析的前提下,可以防止动态fuzzing技术由于测试不充分造成的漏报。

全文目录


摘要  3-4
Abstract  4-8
第1章 绪论  8-11
  1.1 本文的研究内容和意义  9-10
  1.2 本文的章节组织结构  10
  1.3 本章小结  10-11
第2章 常见的代码安全性分析技术及工具  11-23
  2.1 源代码分析  11-16
    2.1.1 源代码静态分析技术及常见工具  11-13
    2.1.2 符号执行和约束求解技术  13-16
  2.2 二进制代码分析技术及常见工具  16-23
    2.2.1 二进制程序静态分析  17-18
    2.2.2 二进制代码插装技术及动态分析  18-20
    2.2.3 动静结合的二进制分析技术  20-23
第3章 二进制静态分析面临的挑战及可行技术  23-44
  3.1 二进制代码分析及所面临的挑战  23-26
  3.2 常见的安全性漏洞在二进制代码中的表现  26-32
    3.2.1 缓冲区溢出在二进制上的表现  26-29
    3.2.2 格式化字符串在二进制上的表现  29-31
    3.2.3 指针识别及空指针  31-32
    3.2.4 整数溢出  32
  3.3 动静结合的二进制代码安全分析技术  32-44
    3.3.1 静态分析技术在二进制分析中的应用  33-39
    3.3.2 动态符号执行技术  39-40
    3.3.3 解决路径爆炸问题的尝试  40-44
第4章 二进制代码安全性分析原型工具bats  44-53
  4.1 二进制分析中间语言VINE IR  44-46
    4.1.1 VINE IR 语言类型及语义  44-45
    4.1.2 用Vine IR 作为分析语言的好处  45-46
  4.2 bats 的架构设计  46-48
  4.3 bats 的详细设计及所采用的技术  48-53
    4.3.1 系统内存的模拟  48-49
    4.3.2 符号执行器的设计及与STP 的结合  49-50
    4.3.3 解析库函数的调用及漏洞模式的使用  50-53
第5章 bats 实验及结果  53-59
  5.1 实验环境及过程  53-57
    5.1.1 格式化字符串及除零错误  53-55
    5.1.2 堆栈溢出  55-57
  5.2 试验结果分析  57-59
第6章 结论,不足及展望  59-61
参考文献  61-63
附录  63-67
  1.实验所用的源代码—格式化字符串和除零错误  63-64
  2.实验例子反汇编后的汇编代码—格式化字符串和除零错误  64-66
  3.实验所用的源代码—堆栈溢出  66
  4.实验例子反汇编后的汇编代码—堆栈溢出  66-67
致谢  67-68
在读期间发表的学术论文与取得的研究成果  68

相似论文

  1. 基于有限自动机的软件行为建模方法的研究,TP301.1
  2. 基于二进制代码的动态符号执行工具,TP309
  3. 基于动态符号执行的代码分析工具的研究,TP309
  4. 基于性能计数器的攻击检测,防御与分析,TP311.53
  5. 混合加密算法在软件安全中的应用,TP309.7
  6. 基于Z规格的软件缺陷形式化方法,TP311.53
  7. 基于形式化方法的统一软件模型及其应用,TP311.52
  8. 基于动态污点分析的状态协议实现软件模糊测试方法研究,TP311.52
  9. Windows下可执行文件的指令级跟踪与回放技术研究,TP309
  10. 验证带有线程动态创建和退出多线程程序,TP311.53
  11. 面向符号执行的内存模型研究,TP333.1
  12. 基于静态源码分析的软件安全测试技术研究与实现,TP311.52
  13. 恶意代码动态二进制分析平台设计与实现,TP393.08
  14. 基于虚拟机的关键信息提取与分析,TP316.7
  15. 基于符号执行与遗传算法的单元测试研究与应用,TP311.52
  16. 基于二进制可执行文件的控制流分析研究,TP309
  17. Web服务编排语言的分析与测试,TP393.09
  18. 基于动态符号执行的二进制代码漏洞挖掘系统研究与设计,TP309
  19. 基于二进制程序的软件缺陷分析及其测试数据生成系统的设计与实现,TP311.52
  20. 基于函数摘要的二进制漏洞挖掘技术研究,TP309

中图分类: > 工业技术 > 自动化技术、计算机技术 > 计算技术、计算机技术 > 计算机软件 > 程序设计、软件工程 > 程序设计
© 2012 www.xueweilunwen.com