C代码内存安全漏洞检测研究与实现
摘要 | 第5-6页 |
ABSTRACT | 第6-7页 |
符号对照表 | 第12-13页 |
缩略语对照表 | 第13-17页 |
第一章 绪论 | 第17-21页 |
1.1 选题背景与意义 | 第17页 |
1.2 国内外研究现状与分析 | 第17-19页 |
1.3 论文主要工作 | 第19页 |
1.4 论文组织结构 | 第19-21页 |
第二章 相关技术 | 第21-27页 |
2.1 软件分析技术 | 第21-22页 |
2.1.1 静态分析技术 | 第21页 |
2.1.2 动态分析技术 | 第21-22页 |
2.2 静态分析相关概念 | 第22-24页 |
2.2.1 ANTLR | 第22页 |
2.2.2 抽象语法树 | 第22页 |
2.2.3 控制流图 | 第22-23页 |
2.2.4 二叉决策图 | 第23-24页 |
2.3 安全分析检测工具总体框架 | 第24-25页 |
2.4 本章小结 | 第25-27页 |
第三章 内存安全漏洞检测的需求分析与设计 | 第27-35页 |
3.1 常见内存安全漏洞 | 第27-28页 |
3.2 项目整体需求 | 第28-29页 |
3.3 总体设计和详细需求 | 第29-33页 |
3.3.1 内存安全漏洞检测总体设计 | 第29-30页 |
3.3.2 内存安全规则 | 第30-31页 |
3.3.3 静态整型值估计 | 第31-33页 |
3.4 本章小结 | 第33-35页 |
第四章 内存安全规则模型的设计与实现 | 第35-75页 |
4.1 内存安全规则概述 | 第35-36页 |
4.2 危险函数安全规则 | 第36-45页 |
4.2.1 C语言中相关危险函数漏洞分析 | 第36-37页 |
4.2.2 危险函数规则分析与设计 | 第37-38页 |
4.2.3 初始规则收集 | 第38-40页 |
4.2.4 危险函数子规则实现 | 第40-45页 |
4.3 内存库函数安全规则 | 第45-58页 |
4.3.1 内存库函数常见漏洞分析 | 第45页 |
4.3.2 内存库函数规则的设计 | 第45-47页 |
4.3.3 库函数信息收集 | 第47-51页 |
4.3.4 内存库函数子规则实现 | 第51-58页 |
4.4 基于内存安全规则的漏洞检测 | 第58-74页 |
4.4.1 内存安全规则检测的实现 | 第58-64页 |
4.4.2 常见危险函数检测 | 第64-68页 |
4.4.3 内存泄漏检测 | 第68-71页 |
4.4.4 内存管理函数匹配检测 | 第71-73页 |
4.4.5 指针非法操作检测 | 第73-74页 |
4.5 本章小结 | 第74-75页 |
第五章 静态整型值估计模型的设计与实现 | 第75-95页 |
5.1 数据流分析技术 | 第75页 |
5.2 静态整型值估计的概述与设计 | 第75-82页 |
5.2.1 基于CFG的数据流分析设计方案 | 第76页 |
5.2.2 AST遍历框架的改进 | 第76-77页 |
5.2.3 静态整型值估计的数据结构设计 | 第77-82页 |
5.3 静态整型值估计的实现 | 第82-89页 |
5.3.1 整型值信息收集 | 第82-83页 |
5.3.2 整型值信息传递 | 第83-85页 |
5.3.3 基本表达式求值 | 第85-87页 |
5.3.4 整型值信息更新 | 第87-89页 |
5.4 基于静态整型值估计的漏洞检测 | 第89-92页 |
5.4.1 危险函数检测 | 第89-91页 |
5.4.2 数组越界检测 | 第91-92页 |
5.5 本章小结 | 第92-95页 |
第六章 内存安全漏洞检查与测试 | 第95-113页 |
6.1 常见危险函数测试 | 第98-101页 |
6.2 内存泄漏测试 | 第101-105页 |
6.3 内存管理函数匹配测试 | 第105-107页 |
6.4 指针非法操作测试 | 第107-108页 |
6.5 数组越界测试 | 第108-109页 |
6.6 内存安全漏洞检测准确性测试 | 第109-111页 |
6.7 本章小结 | 第111-113页 |
第七章 总结与展望 | 第113-115页 |
参考文献 | 第115-117页 |
致谢 | 第117-119页 |
作者简介 | 第119-120页 |