基于图网络的源代码漏洞检测研究
发布时间:2023-03-13 07:45
计算机软件应用于各行各业,已经成为社会发展的支柱性产业之一,在国计民生中占据着重要的地位。一旦软件系统遭受到攻击,就会给社会带来巨大的损失。如何及时发现软件程序中的潜在漏洞,尽早修复,以避免造成更大的损失,这对于保护软件提供商和用户的权益至关重要。在软件生命的早期阶段,对软件源代码进行漏洞检测,就可以及早的发现潜在漏洞。目前已有的源代码漏洞检测方案主要分为基于规则的检测和基于学习的检测方法,前者由于规则覆盖不全往往导致误报率较高;而后者由于目前机器学习的编码方式对程序语义表达欠缺致使准确率结果提升有限。为了解决以上方法存在的缺陷,进一步提升源代码漏洞检测的准确率,本文提出一种基于图神经网络的源代码漏洞检测方法Graph VDS,该方法借助图结构充分表达源代码语义关系,通过训练图卷积网络模型,检测源代码图是否含有漏洞。本文的主要研究内容如下:(1)本文系统的对当前主流的源代码漏洞检测机制进行分析,详细介绍了已有方法的基本原理、技术特点和存在的缺陷。总结了目前源代码漏洞检测普遍存在的漏洞规则覆盖不全、程序语义表达欠缺的问题,并针对性提出了一种基于图神经网络的源代码漏洞检测方案。(2)针对传...
【文章页数】:83 页
【学位级别】:硕士
【文章目录】:
摘要
ABSTRACT
第一章 引言
1.1 研究背景和意义
1.2 国内外研究现状
1.2.1 静态分析漏洞检测工具
1.2.2 机器学习在漏洞检测中的应用
1.2.3 代码的图表示法
1.2.4 图神经网络
1.3 本文的研究内容
1.4 本文的组织结构
第二章 源代码漏洞检测机制
2.1 源代码漏洞检测方法
2.1.1 源代码静态分析检测工具
2.1.2 基于机器学习的源代码漏洞检测
2.1.3 基于图表示的源代码漏洞检测
2.2 基于图网络实现源代码漏洞检测
2.3 本章小结
第三章 基于图网络的源代码漏洞检测方法
3.1 Graph VDS方法概述
3.2 源代码的图表示方法设计
3.2.1 语法图
3.2.2 数据流图
3.2.3 控制流图
3.2.4 函数调用图
3.2.5 组装代码图
3.3 代码子图提取方法设计
3.3.1 Sink函数调用数据依赖关系分析
3.3.2 Sink函数调用控制依赖关系分析
3.4 图神经网络模型
3.4.1 图卷积网络
3.4.2 模型训练与漏洞检测
3.5 本章小结
第四章 Graph VDS原型系统的设计与实现
4.1 系统模块设计
4.1.1 源代码图构造模块
4.1.2 代码子图提取模块
4.1.3 图卷积网络模块
4.2 关键算法设计
4.2.1 语法图构造过程算法
4.2.2 数据流图构造过程算法
4.2.3 控制流图构造过程算法
4.2.4 Sink函数调用数据依赖分析算法
4.2.5 图卷积网络模型算法
4.3 本章小结
第五章 系统实验评估与分析
5.1 实验设计
5.1.1 实验环境和实验步骤
5.1.2 数据集和对比工具
5.2 图网络模型训练
5.2.1 模型输入
5.2.2 模型训练
5.3 性能分析
5.4 Java和 C/C++数据集的实验结果分析
5.4.1 Java数据集实验结果分析
5.4.2 C/C++数据集实验结果分析
5.5 开源代码库的漏洞检测
5.6 本章小结
总结与展望
总结
展望
参考文献
致谢
攻读硕士学位期间取得的科研成果
本文编号:3762074
【文章页数】:83 页
【学位级别】:硕士
【文章目录】:
摘要
ABSTRACT
第一章 引言
1.1 研究背景和意义
1.2 国内外研究现状
1.2.1 静态分析漏洞检测工具
1.2.2 机器学习在漏洞检测中的应用
1.2.3 代码的图表示法
1.2.4 图神经网络
1.3 本文的研究内容
1.4 本文的组织结构
第二章 源代码漏洞检测机制
2.1 源代码漏洞检测方法
2.1.1 源代码静态分析检测工具
2.1.2 基于机器学习的源代码漏洞检测
2.1.3 基于图表示的源代码漏洞检测
2.2 基于图网络实现源代码漏洞检测
2.3 本章小结
第三章 基于图网络的源代码漏洞检测方法
3.1 Graph VDS方法概述
3.2 源代码的图表示方法设计
3.2.1 语法图
3.2.2 数据流图
3.2.3 控制流图
3.2.4 函数调用图
3.2.5 组装代码图
3.3 代码子图提取方法设计
3.3.1 Sink函数调用数据依赖关系分析
3.3.2 Sink函数调用控制依赖关系分析
3.4 图神经网络模型
3.4.1 图卷积网络
3.4.2 模型训练与漏洞检测
3.5 本章小结
第四章 Graph VDS原型系统的设计与实现
4.1 系统模块设计
4.1.1 源代码图构造模块
4.1.2 代码子图提取模块
4.1.3 图卷积网络模块
4.2 关键算法设计
4.2.1 语法图构造过程算法
4.2.2 数据流图构造过程算法
4.2.3 控制流图构造过程算法
4.2.4 Sink函数调用数据依赖分析算法
4.2.5 图卷积网络模型算法
4.3 本章小结
第五章 系统实验评估与分析
5.1 实验设计
5.1.1 实验环境和实验步骤
5.1.2 数据集和对比工具
5.2 图网络模型训练
5.2.1 模型输入
5.2.2 模型训练
5.3 性能分析
5.4 Java和 C/C++数据集的实验结果分析
5.4.1 Java数据集实验结果分析
5.4.2 C/C++数据集实验结果分析
5.5 开源代码库的漏洞检测
5.6 本章小结
总结与展望
总结
展望
参考文献
致谢
攻读硕士学位期间取得的科研成果
本文编号:3762074
本文链接:https://www.wllwen.com/kejilunwen/yysx/3762074.html