[发明专利]一种基于图神经网络的细粒度源代码漏洞检测方法有效
申请号: | 202010040159.1 | 申请日: | 2020-01-15 |
公开(公告)号: | CN111259394B | 公开(公告)日: | 2022-08-05 |
发明(设计)人: | 金舒原;吴跃隆 | 申请(专利权)人: | 中山大学 |
主分类号: | G06F21/56 | 分类号: | G06F21/56;G06F21/57;G06N3/04;G06N3/08 |
代理公司: | 深圳市创富知识产权代理有限公司 44367 | 代理人: | 吴族平 |
地址: | 510275 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 神经网络 细粒度 源代码 漏洞 检测 方法 | ||
本发明公开了一种基于图神经网络的细粒度源代码漏洞检测方法,包括以下:A,对于一个软件的所有源代码,抽取源代码中函数的代码属性图,将代码属性图进行向量化表示,向量化表示包括节点属性、图结构的向量化表示;B,使用图注意力网络抽取代码特征,对所有语句进行处理得到最终的数据集;C,训练漏洞检测模型,通过测试集上的效果确定最终的模型。本发明所提的源代码漏洞检测方法具有更高的自动化程度,减少对领域专家知识的依赖,大大节约代码审计的成本,提高代码审计的效率,更好地保留源代码中地语法和语义信息,同时使用图注意网络能更有目的性地学习语句的向量化表示,实现更细粒度的语句级别的漏洞检测。
技术领域
本发明涉及网络安全技术领域,尤其涉及一种基于图神经网络的细粒度源代码漏洞检测方法。
背景技术
软件作为信息化社会中不可或缺的一部分发挥着越来越重要的作用,它不仅和个人的日常生活密不可分也和社会的发展息息相关。然而软件是一把双刃剑,它在为个人和社会提供便利的服务的同时,软件中潜在的漏洞也可能会对个人和社会造成极大的损失。软件中的漏洞往往是不可避免地,一方面是由于软件在设计、开发、部署过程中很难做到不存在问题,另一方面则是由于商业效益原因软件开发周期不能太长,进一步增加了软件存在漏洞的风险。为了减少软件中漏洞,提高软件质量,软件漏洞检测技术应运而生。漏洞检测技术就是通过检查软件的源代码或者软件的执行过程,根据经验、已知的漏洞模式、软件的执行结果等判断软件是否存在漏洞。
现有的漏洞检测技术按照是否需要执行软件分为静态的方法和动态的方法。静态的漏洞检测方法无需运行软件,通过分析软件的源代码或二进制文件,寻找软件中的漏洞,成熟的方法主要有污点分析、安全规则检查等。静态分析的方法通常需要很强的专家知识,费时费力,漏报率高。以污点分析为例,污点分析首先需要确定软件中的污点(外部输入、安全敏感的数据),通过跟踪污点在数据流和控制流中的目的地,判断污点是否会产生问题,整个过程相当依赖检测人员的领域知识,检测效率自然因人而异。动态的漏洞检测方法则需要运行软件,通过分析软件的执行结果判断软件是否存在漏洞,成熟的方法主要有模糊测试、符号执行等。模糊测试通过构造随机、非预期的程序输入,根据程序执行过程中的异常,定位可能的漏洞,但往往不能够覆盖程序的所有执行路径,漏报率较高;符号执行则通过将程序输入符号化、程序执行公式化,理论上能够计算并测试所有的执行路径,但是由于求解开销大的问题,难以在日常开发中普及。除了上述较为成熟的漏洞检测方法,基于机器学习、深度学习的检测方法也逐渐走向实际应用中。针对源代码中的漏洞检测,现有的基于机器学习的方法一方面需要依赖领域专家提取特征,另一方面则是检测漏洞通常在文件级别和函数级别,检测的粒度还需细化;而现有的基于深度学习的方法的检测粒度同样仍需细化,此外源代码还需要转化成合适的中间表示以便于使用深度学习算法进行学习。
发明内容
有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是提供一种基于图神经网络的细粒度源代码漏洞检测方法,以代码属性图作为源代码的中间表示,使用图注意力网络学习语句的向量表示,最终结合深度神经网络实现语句级别的细粒度漏洞检测,解决了现有漏洞检测方法漏报率高、严重依赖领域专家知识、检测粒度过大、源代码欠缺合适中间表示的问题。
为实现上述目的,本发明提供了一种基于图神经网络的细粒度源代码漏洞检测方法,包括以下步骤:
步骤A,对于一个软件的所有源代码,抽取源代码中函数的代码属性图,代码属性图是一种基于抽象语法树和控制流图生成的包含代码语法语义信息和控制流信息的图,将代码属性图进行向量化表示,向量化表示包括节点属性、图结构的向量化表示;
步骤B,使用图注意力网络抽取代码特征,将向量化表示的代码属性图输入到图注意力网络中,学习得到节点的抽象向量表示,从节点的抽象向量表示中提取函数中每一语句的向量表示x,根据语句是否存在漏洞,为语句添加标签y,对所有语句进行处理得到最终的数据集;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中山大学,未经中山大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010040159.1/2.html,转载请声明来源钻瓜专利网。