面向军工应用软件的源代码漏洞分析系统的研究与实现
致谢 | 第5-6页 |
摘要 | 第6-7页 |
ABSTRACT | 第7页 |
序言 | 第8-12页 |
1 引言 | 第12-16页 |
1.1 研究背景及意义 | 第12-13页 |
1.2 国内外研究现状 | 第13页 |
1.3 本人主要工作介绍 | 第13-14页 |
1.4 论文组织结构 | 第14-16页 |
2 源代码安全漏洞分析方法的研究 | 第16-21页 |
2.1 漏洞的分析方法 | 第16-17页 |
2.1.1 动态分析方法 | 第16页 |
2.1.2 静态分析方法 | 第16-17页 |
2.1.3 静态分析的优缺点 | 第17页 |
2.1.4 与动态分析方法的区别 | 第17页 |
2.4 静态检测技术 | 第17-20页 |
2.4.1 词法分析 | 第18页 |
2.4.2 规则检查 | 第18页 |
2.4.3 数据流分析 | 第18页 |
2.4.4 类型推导 | 第18-19页 |
2.4.5 符号执行 | 第19页 |
2.4.6 模型检测 | 第19页 |
2.4.7 定理证明 | 第19页 |
2.4.8 控制流分析 | 第19页 |
2.4.9 程序分片 | 第19-20页 |
2.5 小结 | 第20-21页 |
3 军工应用软件代码安全漏洞的分类 | 第21-28页 |
3.1 C++语言目前存在的一般漏洞 | 第21-24页 |
3.1.1 缓冲区溢出漏洞 | 第21-22页 |
3.1.2 与内存管理相关漏洞 | 第22-23页 |
3.1.3 指针问题 | 第23-24页 |
3.2 军工应用软件代码安全漏洞分类 | 第24-28页 |
4 军工软件源代码检测系统的设计与实现 | 第28-46页 |
4.1 针对源代码层级的漏洞挖掘系统原型 | 第28-29页 |
4.2 总体设计方案 | 第29-31页 |
4.3 编译前端子模块的设计与实现 | 第31-33页 |
4.4 控制流分析模块的构造 | 第33-40页 |
4.4.1 控制流图数据结构的设计 | 第33-34页 |
4.4.2 控制流程图的生成 | 第34-39页 |
4.4.3 控制流程图的遍历 | 第39-40页 |
4.5 源代码整体结构分析模块的设计与实现 | 第40-43页 |
4.5.1 函数调用图的生成 | 第40-42页 |
4.5.2 函数摘要信息的生成 | 第42-43页 |
4.6 代码安全漏洞检测模块的设计与实现 | 第43-46页 |
5 系统检测技术的研究实现 | 第46-57页 |
5.1 基于指针分析的数据结构的建立 | 第46-51页 |
5.1.1 作用域对于指针指向的限定 | 第46-47页 |
5.1.2 与指针变量相关联的数据结构的设计 | 第47-49页 |
5.1.3 指针属性信息的提取 | 第49-51页 |
5.2 缓冲区溢出的检测 | 第51-53页 |
5.2.1 递归求解 | 第51-52页 |
5.2.2 检测的实现 | 第52-53页 |
5.3 内存泄漏检测的实现 | 第53-57页 |
6 实验与测试 | 第57-62页 |
6.1 开发环境和工具 | 第57页 |
6.2 检测原型系统功能性测试 | 第57-61页 |
6.2.1 缓冲区溢出的检测 | 第57-59页 |
6.2.2 内存泄漏问题测试示例及测试结果 | 第59-61页 |
6.3 本章小结 | 第61-62页 |
7 总结和展望 | 第62-64页 |
7.1 总结 | 第62-63页 |
7.2 展望 | 第63-64页 |
参考文献 | 第64-66页 |
作者简历及攻读硕士学位期间取得的研究成果 | 第66-68页 |
学位论文数据集 | 第68页 |