[发明专利]程序漏洞检测方法、终端设备及存储介质在审
申请号: | 202210741646.X | 申请日: | 2022-06-28 |
公开(公告)号: | CN115146279A | 公开(公告)日: | 2022-10-04 |
发明(设计)人: | 胡玉鹏;关翔予;温杰凌;辛钰雯;齐园 | 申请(专利权)人: | 湖南大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06F8/75;G06F8/41;G06F16/36;G06N3/04 |
代理公司: | 长沙正奇专利事务所有限责任公司 43113 | 代理人: | 王娟;马强 |
地址: | 410083 湖*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序 漏洞 检测 方法 终端设备 存储 介质 | ||
本发明公开了一种程序漏洞检测方法、终端设备及存储介质,将源程序转化为中间代码LLVM IR,具有细粒度、容纳语义信息丰富、易于扩展的优势。本发明通过添加控制信息弥补原有代码切片算法的语义不足问题,对中间代码进行切片。使用基于IR的词嵌入方式,依据不同指令之间的依赖性与指令上下文的特征,尽可能地保留指令相关的信息,丢弃非指令的信息,解决了传统词嵌入方式数据处理繁杂、容易丢失语义的问题,大大提高了漏洞检测率。
技术领域
本发明涉及软件系统漏洞检测技术,特别是一种程序漏洞检测方法、终端设备及存储介质。
背景技术
许多网络攻击源于软件漏洞。尽管在追求安全编程方面已经投入了很多努力,但也产生了各种类型的漏洞检测系统,软件漏洞仍然不可能被根本性解决。
现有的漏洞检测方案存在两个主要缺陷:路径不敏感的代码切片、代码转化为词向量后语义丢失造成误报率高等问题。
一方面,现有的漏洞检测解决方案大多都依赖代码切片,代码切片处理是为了全面提取漏洞模式的语义,帮助网络识别关键代码,降低神经网络模型学习难度,提升学习效果。程序切片是一种程序分解技术,它能从程序中抽象出必要的语法和语义。现有方法通过预处理将源代码处理成几个片段,例如文件、函数、相互依赖的语句组成的切片,但目前大多数切片算法存在一个关键问题:路径不敏感。使用现有的切片生成方法可能会在正确代码和漏洞代码提取出相同的代码切片,无论检测结果是有漏洞还是无漏洞,准确率都保持在0.5,这对漏洞检测是无用的,这就是数据预处理过程中的语义损失。数据预处理过程中的语义损失是现有漏洞检测框架的主要缺点。主要原因就是因为语句的路径改变会导致语句所在的控制范围发生变化,但现有框架中的代码切片捕获不到这些变化。原因有以下两个方面:(1)控制依赖是对两个语句之间关系的粗略描述(即是否存在依赖关系),并不指明语句的路径(即依赖于合法还是非法值);(2)对语句顺序进行重组的过程,其中粗暴堆叠可能会导致不在同一控制范围内的语句彼此直接相邻,从而造成路径不敏感。语义信息在漏洞检测中至关重要,更多的语义信息帮助神经网络检测以前无法发现的漏洞。现有的代码切片方法缺乏从控制依赖的角度提取语义信息,仍停留在对代码语法层面,使模型在训练阶段训练不正确,可能导致检测阶段检测结果的准确性下降,进而导致对漏洞检测的误报率大大增加。
另一方面,更为关键的是目前基于深度学习的漏洞检测系统大多数都忽略了对语义丢失的问题,Li等人([1]Li Z,Zou D,Xu S,et al.VulDeeLocator:A Deep Learning-based Fine-grained Vulnerability Detector[J].2020.)首次提出使用深度学习技术构建基于LLVM IR的细粒度漏洞检测模型,该模型利用word2vec词向量转化技术将处理好的漏洞代码块转化为深度学习可以识别的词向量,再将其放入深度学习网络训练模型,word2vec方法是基于上下文窗口的嵌入,对于程序表示,本发明认为重要的是考虑语义关系,而不是考虑周围的上下文。发明专利申请《一种基于Bert模型与BiLSTM的C源代码漏洞检测》(CN113420296A)提出的源代码漏洞检测方法的词向量转换过程依赖于Bert模型,众所周知Bert模型是当今处理自然语言任务效果最好的模型。但把程序代码当作自然语言任务去处理显然是不合适。可见目前绝大多数漏洞检测器尝试直接处理代码或使用语法树表示,或将其视为自然语言,进行向量表示。然而,由于代码中存在函数调用、分支和语句的可互换顺序等结构特性,现有的基于自然语言处理的方法都不足以充分地理解程序语义。
发明内容
本发明所要解决的技术问题是,针对现有技术不足,提供一种程序漏洞检测方法、终端设备及存储介质,提高漏洞检测的效率和准确率。
为解决上述技术问题,本发明所采用的技术方案是:一种程序漏洞检测方法,包括以下步骤:
对源程序进行静态分析,获取源程序的中间代码;
提取可能造成漏洞的关键点,生成切片标准,利用所述切片标准对所述中间代码进行切片,合并前向切片和后向切片,得到程序的代码片段;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于湖南大学,未经湖南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210741646.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:读出电路及图像传感器
- 下一篇:可适配眼镜架的调节式骨传导助听器