基于符号执行的软件污点分析研究
发布时间:2017-09-16 16:07
本文关键词:基于符号执行的软件污点分析研究
更多相关文章: 软件漏洞 符号执行 污点分析 系统开销 反汇编
【摘要】:软件安全与我们日常生活息息相关,是我们较为关注的话题。发掘软件漏洞是软件安全人员最为重要的任务。当前,研究最为火热的发掘软件漏洞的方法有两种,符号执行和污点分析。污点分析方法是把来自风险路径的信息设置为“被污染数据”,同时分析指令语句,发现与可疑数据相关的数据也设置为“被污染数据”,然后根据特定的漏洞发掘规则检测程序漏洞。这种分析方法是一种根据数据流发掘漏洞的方法。另外一种使用符号表示变量,代替实际的变量值模拟软件执行的方法称为符号执行法。存在检测盲点、无法进行位分析和路径覆盖率低是现在存在的污点分析工具比较突出的三个问题。表现在使用检测工具发掘漏洞过程中的三个方面,首先,对测试用例的改变无法得知有没有改变程序的执行路径;其次,发掘漏洞后不能进一步缩小漏洞发生条件的范围,只能定位到变量本身而不能发现触发该漏洞具体字节或位,最后,一个测试用例分析完成后没有产生路径条件的信息,不利于生成执行其他路径的测试用例。本文根据以上存在的问题,针对污点分析技术,提出了“污染”和“未污染”两种状态之后的第三种“受控污染”,扩充了检测状态,并总结已有的漏洞特征,设计了六种漏洞发掘规则,可以很好的避免上面出现的三种问题,并能够发掘软件潜在的漏洞。结合符号执行和污点分析的方法,可以对所有的内存字节都分配符号变量,记录他们的映射关系帮助跟踪分析,保存前面符号执行的路径条件,以便于指导生成执行新的路径的测试用例。本文还根据上文提出的六条规则和三种污染状态设计提出了污点分析工具STD(Software Taint Detector)和增加了符号执行的高级版本SESTD(Symbolic Execution Software Taint Detector)来验证理论的可行性及有效性。SESTD具有符号化的污点管理模型,能够对位进行分析,可以明确污点源的罪魁祸首是哪些字节。还能够利用保存的路径信息产生新的有效的测试用例。最后还提出了无关API滤除和块处理两种优化方法来提高系统的运行效率,减少开销。实验表明,STD和SESTD能够有效发掘程序漏洞,在实验中,我们利用该系统检测了市场上的五款软件,扫描出了59个漏洞,加载经过优化的STD后,软件执行时间增加3.2倍,而LIFT是3.7倍,TaintCheck是20倍左右,具有最理想的系统开销。SESTD的系统开销也只有16.89倍,也是快于TaintCheck的。
【关键词】:软件漏洞 符号执行 污点分析 系统开销 反汇编
【学位授予单位】:武汉邮电科学研究院
【学位级别】:硕士
【学位授予年份】:2016
【分类号】:TP309
【目录】:
- 摘要3-5
- Abstract5-10
- 第1章 绪论10-18
- 1.1 研究背景及意义10-11
- 1.2 相关理论和重要技术基础11-13
- 1.2.1 手动检测技术11
- 1.2.2 Fuzzing技术11
- 1.2.3 符号执行技术11-12
- 1.2.4 污点分析技术12-13
- 1.3 国内外研究现状13-16
- 1.3.1 动态二进制测试框架13
- 1.3.2 动态污点分析工具13-15
- 1.3.3 符号执行工具15-16
- 1.4 本课题主要研究内容16
- 1.5 论文组织结构16-18
- 第2章 污点分析和符号执行两大技术中现存问题与解决方法18-27
- 2.1 动态二进制污点分析技术18-22
- 2.1.1 动态二进制污点分析技术的原理18-19
- 2.1.2 存在的问题19-20
- 2.1.3 解决方案20-22
- 2.2 符号执行22-24
- 2.3 使用符号执行完善污点分析24-26
- 2.3.1 污点分析的缺陷24-25
- 2.3.2 完善污点分析的解决方案25-26
- 2.4 本章小结26-27
- 第3章 系统架构和设计实现27-39
- 3.1 系统框架结构27-33
- 3.1.1 动态二进制注入工具28
- 3.1.2 污点初始化模块28-29
- 3.1.3 数据流跟踪分析模块29-30
- 3.1.4 污点状态管理模块30-32
- 3.1.5 指令分析模块32
- 3.1.6 程序漏洞检测模块32-33
- 3.2 SESTD系统设计与实现33-36
- 3.2.1 SESTD设计方案33
- 3.2.2 符号化内存管理模块33-35
- 3.2.3 标志位记录模块35-36
- 3.2.4 符号地址映射模块36
- 3.2.5 约束求解器模块36
- 3.3 系统优化36-38
- 3.3.1 无关API滤除策略37
- 3.3.2 基本块处理优化策略37-38
- 3.4 小结38-39
- 第4章 系统实验与结果39-48
- 4.1 实验目标和实验计划39-40
- 4.2 系统功能验证实验40-44
- 4.2.1 挖掘已知漏洞实验40-43
- 4.2.2 检测未知漏洞实验43-44
- 4.3 系统功能实验44
- 4.4 系统运行效率对比及分析44-45
- 4.5 占用内存空间对比及分析45-47
- 4.6 实验小结47-48
- 第5章 总结和展望48-50
- 5.1 全文总结48
- 5.2 对未来工作的展望48-50
- 参考文献50-52
- 致谢52-53
- 附录1 攻读硕士学位期间发表的论文53-54
- 附录2 主要英文缩写语对照表54
【参考文献】
中国期刊全文数据库 前10条
1 梅宏;王千祥;张路;王戟;;软件分析技术进展[J];计算机学报;2009年09期
2 郭q,
本文编号:864039
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/864039.html