基于语义模式的源代码跨过程分析研究与实现
发布时间:2023-03-21 19:33
随着软件规模的不断增大,软件研发时间与软件中存在的漏洞也在不断增加。在软件研发过程中,使用静态分析软件对于已经开发的程序代码进行分析,可有效发现程序中存在的后期代码审查时难以发现的漏洞、提高软件代码质量并缩短研发周期。本文的工作就是为一款针对C语言的静态分析工具设计后端语义模型和基于语义模型的跨过程分析模式,使得该C语言静态分析工具能够在建检测多种目标漏洞的情况下保持软件的分析效率。本文首先对目标漏洞做了分类,把要检测的软件漏洞分类三类:内存漏洞、危险函数漏洞和污染传播漏洞。然后分析出要检测这些漏洞需要收集的程序语义信息,之后再根据这些语义信息设计语义模型,用于表示静态分析时的程序状态。具体而言,本文针对检测内存漏洞和危险函数漏洞需要收集的语义信息设计并实现了变量符号条目、内存对象、值对象的三元组模型;针对检测污染传播漏洞需要收集的语义信息设计了基于BDD的元组集合模型。将这两种模型结合使用来表示静态分析软件检测三类漏洞时的程序状态。接着根据上述语义模型设计了静态分析软件后端对目标代码控制流图进行数据流分析时的遍历框架。在这个框架下,后端进行控制流图遍历时需要将控制流图节点和分析到该节...
【文章页数】:90 页
【学位级别】:硕士
【文章目录】:
摘要
ABSTRACT
缩略语对照表
第一章 绪论
1.1 选题背景与意义
1.2 国内外研究现状与分析
1.3 论文主要工作
1.4 论文组织结构
第二章 相关技术
2.1 静态分析软件现有的语义模型
2.1.1 数组模型
2.1.2 以二叉决策图表示的内存模型
2.1.3 三元组模型
2.2 静态分析软件后端分析相关概念
2.2.1 控制流图
2.2.2 符号表
2.2.3 函数的拓扑排序
2.3 本章小结
第三章 需求分析与设计
3.1 软件漏洞分析
3.2 整体设计
3.3 详细需求与设计
3.3.1 语义模型的构建
3.3.2 语义模型跨过程遍历框架设计
3.3.3 函数跨过程分析模块设计
3.4 本章小结
第四章 语义模型模块的设计与实现
4.1 语义模型设计
4.1.1 普通变量语义模型
4.1.2 污染变量语义模型
4.2 语义模型跨过程遍历框架
4.2.1 基础遍历框架
4.2.2 语义模型使用的遍历框架
4.3 本章小结
第五章 跨过程分析模式的设计与实现
5.1 函数跨过程之前的函数检查
5.1.1 输出函数格式化字符串检查
5.1.2 危险函数参数检查
5.1.3 污染函数参数检查
5.2 函数指针模式的创建和使用
5.3 函数值模式的创建和使用
5.4 本章小结
第六章 静态分析漏洞检测能力测试
6.1 测试环境
6.2 功能测试
6.2.1 内存漏洞测试
6.2.2 危险函数漏洞测试
6.2.3 污染传播漏洞测试
6.3 效率测试
6.4 本章小结
第七章 总结与展望
参考文献
致谢
作者简介
本文编号:3767163
【文章页数】:90 页
【学位级别】:硕士
【文章目录】:
摘要
ABSTRACT
缩略语对照表
第一章 绪论
1.1 选题背景与意义
1.2 国内外研究现状与分析
1.3 论文主要工作
1.4 论文组织结构
第二章 相关技术
2.1 静态分析软件现有的语义模型
2.1.1 数组模型
2.1.2 以二叉决策图表示的内存模型
2.1.3 三元组模型
2.2 静态分析软件后端分析相关概念
2.2.1 控制流图
2.2.2 符号表
2.2.3 函数的拓扑排序
2.3 本章小结
第三章 需求分析与设计
3.1 软件漏洞分析
3.2 整体设计
3.3 详细需求与设计
3.3.1 语义模型的构建
3.3.2 语义模型跨过程遍历框架设计
3.3.3 函数跨过程分析模块设计
3.4 本章小结
第四章 语义模型模块的设计与实现
4.1 语义模型设计
4.1.1 普通变量语义模型
4.1.2 污染变量语义模型
4.2 语义模型跨过程遍历框架
4.2.1 基础遍历框架
4.2.2 语义模型使用的遍历框架
4.3 本章小结
第五章 跨过程分析模式的设计与实现
5.1 函数跨过程之前的函数检查
5.1.1 输出函数格式化字符串检查
5.1.2 危险函数参数检查
5.1.3 污染函数参数检查
5.2 函数指针模式的创建和使用
5.3 函数值模式的创建和使用
5.4 本章小结
第六章 静态分析漏洞检测能力测试
6.1 测试环境
6.2 功能测试
6.2.1 内存漏洞测试
6.2.2 危险函数漏洞测试
6.2.3 污染传播漏洞测试
6.3 效率测试
6.4 本章小结
第七章 总结与展望
参考文献
致谢
作者简介
本文编号:3767163
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/3767163.html