基于图网络的源代码漏洞检测研究

来源 :西北大学 | 被引量 : 0次 | 上传用户:coldblast
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
计算机软件应用于各行各业,已经成为社会发展的支柱性产业之一,在国计民生中占据着重要的地位。一旦软件系统遭受到攻击,就会给社会带来巨大的损失。如何及时发现软件程序中的潜在漏洞,尽早修复,以避免造成更大的损失,这对于保护软件提供商和用户的权益至关重要。在软件生命的早期阶段,对软件源代码进行漏洞检测,就可以及早的发现潜在漏洞。目前已有的源代码漏洞检测方案主要分为基于规则的检测和基于学习的检测方法,前者由于规则覆盖不全往往导致误报率较高;而后者由于目前机器学习的编码方式对程序语义表达欠缺致使准确率结果提升有限。为了解决以上方法存在的缺陷,进一步提升源代码漏洞检测的准确率,本文提出一种基于图神经网络的源代码漏洞检测方法Graph VDS,该方法借助图结构充分表达源代码语义关系,通过训练图卷积网络模型,检测源代码图是否含有漏洞。本文的主要研究内容如下:(1)本文系统的对当前主流的源代码漏洞检测机制进行分析,详细介绍了已有方法的基本原理、技术特点和存在的缺陷。总结了目前源代码漏洞检测普遍存在的漏洞规则覆盖不全、程序语义表达欠缺的问题,并针对性提出了一种基于图神经网络的源代码漏洞检测方案。(2)针对传统机器学习中程序语义表达欠缺,致使准确率不高的问题,本文研究如何设计源代码的图表示方案。通过构造语法图、数据流图、控制流图、函数调用图,精确表达漏洞代码的语义关系,为训练模型提供准确的数据输入。(3)在准确获得漏洞代码语义表达的基础上,本文探讨了如何构造准确的图神经网络模型进行源代码漏洞检测,围绕源代码中可能导致漏洞的Sink函数调用模块,提取与Sink函数调用相关的代码子图,将代码图输入图神经网络,进行网络模型的训练或漏洞的检测。(4)针对本文提出的方法设计并实现原型系统Graph VDS,Graph VDS系统对Java和C/C++编程语言的多个数据集进行实验评估,实验结果表明,利用图网络模型,将F1值提高7.36%;为了验证系统在真实环境中的检测能力,系统在node-0.7.4-release上进行实验,发现了三个已披露漏洞和一个未披露漏洞。
其他文献
小学高年级的数学教学具有一定的难度,对学生的思维要求也更高。而高年级的学习任务负担也较之前有所加大。而创建高效的课堂可以让教师以最少的精力投入到教学之中并且获得良
内蒙古商都风力发电场系引进丹麦NTK-300kW型机组,厂方提供的吊装设计方案为平地整体起吊方案。针对安装现场为山坡,起吊牵引力比平地起吊大1.7倍的情况,并考虑今后安装500KW
质疑是探索知识,发现问题的开始。要提高学生学习数学的效率和能力,首先要注重培养学生的质疑能力。那么,怎样才能培养学生的质疑能力?笔者通过实践认为,应从下面五个方面入手
以输变电工程建设全过程造价管理理念为统筹,将后评价指标体系研究定位于四个建设阶段影响造价的主要因素。采用一种基于熵值法的多策略评价方法,将主、客观赋权法有效地结合
数感是人的一种基本的数学素养,是人主动自觉地理解和应用数学的态度和意识。具体表现为善于从现实情境中提出问题,找出数学模型;善于用数学的方法理解和解释现实问题;有意识地将
元宝山热电厂使用的原煤中常夹杂着木块,因而造成给煤机卡涩,磨煤机瞬间断煤的故障时有发生,影响机组安全、稳定、经济运行。电厂自行研制了除木设备,安装在输煤皮带上,投运几年来