[发明专利]一种基于深度特征的细粒度漏洞检测方法有效
申请号: | 201811340404.X | 申请日: | 2018-11-12 |
公开(公告)号: | CN109657473B | 公开(公告)日: | 2020-09-18 |
发明(设计)人: | 邹德清;王苏娟;金海;李珍 | 申请(专利权)人: | 华中科技大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06F40/211;G06F16/35;G06N3/04 |
代理公司: | 华中科技大学专利中心 42201 | 代理人: | 曹葆青;李智 |
地址: | 430074 湖北*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 深度 特征 细粒度 漏洞 检测 方法 | ||
本发明公开了一种基于深度特征的细粒度漏洞检测方法,其步骤包括以下两个阶段:训练阶段和检测阶段。训练阶段包含:收集大量的有漏洞和无漏洞的程序;对这些程序进行预处理,并从程序依赖图中提取出程序切片;对生成的程序切片按照漏洞类型打上标签;按照安全分析规则,从程序切片中提取出程序关注点;将程序切片和程序关注点转化成向量;搭建基于深度学习的漏洞检测模型,用向量训练模型参数至最优;最终得到一个训练完备的基于深度学习的漏洞检测模型。检测阶段包含:按照训练阶段的源码处理方式,从待测程序中提取程序切片和程序关注点并分别将其转化为向量;利用训练好的漏洞检测模型对向量进行分类,最后根据分类结果生成漏洞检测报告。
技术领域
本发明属于网络空间安全领域,更具体地,涉及一种基于深度特征的细粒度漏洞检测方法。
背景技术
大多数网络攻击都是由于某些软件漏洞引起的,尽管现在已经出现了很多的安全技术来避免软件漏洞。但是由于存在诸多原因,例如,软件的复杂性使得软件漏洞是不可避免的。鉴于无法避免软件漏洞,所以另一种防御方法是尽快检测并修补它们。检测软件源代码中的漏洞是解决软件漏洞问题的一个不可或缺的方法。在这种方法下,许多解决方案使用手动定义的漏洞模式来检测漏洞。但是,手动定义漏洞模式是一项主观且繁琐的任务,通常不能保证漏洞检测结果的误报率和漏报率。
发明内容
针对现有技术的以上缺陷或改进需求,本发明的目的在于解决现有手动定义检测漏洞的模式是一项主观且繁琐的任务,通常不能保证漏洞检测结果的误报率和漏报率的技术问题。
为实现上述目的,本发明提供一种基于深度特征的细粒度漏洞检测方法,包括如下步骤:
S1,训练阶段:
收集训练程序,从训练程序中提取出程序切片,并给程序切片打上对应的标签,所述标签包括:该程序切片有无漏洞、如有漏洞其对应的漏洞属性;
遍历所述训练程序中的所有语句,根据当前遍历到的语句在所述程序切片中对应的语句类型从所述程序切片中提取程序关注点,根据所述程序切片和程序关注点得到最终的训练数据;
初步搭建基于深度学习的漏洞检测模型,以通过融合程序切片和程序关注点中的特征来检测漏洞,将所述训练数据和训练数据包括的程序切片对应的标签输入初步搭建的基于深度学习的漏洞检测模型,根据输出的训练数据对应的检测结果和程序切片对应的标签调整漏洞检测模型的参数,以使得漏洞检测模型的检测结果达到最优,基于调整好的漏洞检测模型的参数得到训练完备的基于深度学习的漏洞检测模型;
S2,检测阶段:
按照训练阶段中源代码的处理方式,从待测程序中提取对应的程序切片和程序关注点,得到检测数据;
将检测数据输入所述训练完备的基于深度学习的漏洞检测模型进行检测,根据检测结果生成对应的漏洞检测报告,所述漏洞检测报告包括待检测程序是否包含漏洞以及若包含漏洞其对应的漏洞属性。
在一个可选的实例中,步骤S1包括以下步骤:
S1.1,收集训练程序,对所述训练程序进行预处理,将所述训练程序的源代码解析成程序依赖图的格式,再从程序依赖图中提取出程序切片;
S1.2,按照程序切片有无漏洞和漏洞的属性给程序切片打上标签;
S1.3,遍历训练程序中的所有语句,根据当前遍历到的语句在所述程序切片中对应的语句类型从所述程序切片中提取程序关注点;
S1.4,解析程序切片和程序关注点中每条语句的成分,提取出其中的变量名和函数名,规范这些变量名和函数名的命名格式,消除不一致的代码命名规范;
S1.5,将程序切片和程序关注点分别转化为数字化表征对应的向量;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811340404.X/2.html,转载请声明来源钻瓜专利网。