一种基于深度学习的自动化漏洞挖掘方法与流程

文档序号:23718146发布日期:2021-01-24 06:27阅读:231来源:国知局
一种基于深度学习的自动化漏洞挖掘方法与流程

[0001]
本发明涉及漏洞挖掘技术领域,尤其涉及一种基于深度学习的自动化漏洞挖掘方法。


背景技术:

[0002]
随着社会信息技术的迅猛发展,市场上各种应用软件应运而生,大部分软件都没有经过规范的审查和严格的测试就被投入使用,从而导致这些软件中存在着大量可被攻击和利用的软件漏洞;目前对系统安全性存在威胁的主要因素是应用软件、各种通信安全协议和构成信息系统的操作系统等存在未知的漏洞。由于各种原因,漏洞的存在无法避免,如果某些比较严重的未知漏洞被攻击者发现,这些未知漏洞就很有可能被攻击者利用,攻击者可以在未经授权的情况下对计算机系统进行访问或者破坏。先于攻击者发现并及时修复漏洞能够有效的降低潜在漏洞对于信息系统安全性的威胁;漏洞挖掘技术是指对未知漏洞的探索,综合应用各种技术和工具,尽可能地找出软件中的隐藏的漏洞,并对已发现漏洞的细节进行深入分析,为漏洞利用、补救等处理措施作铺垫;
[0003]
随着人工智能产业的兴起,大量基于机器学习的漏洞挖掘研究应运而生,也开发了大量漏洞挖掘方法或工具,由于挖掘漏洞是一个长期的过程,但由于设备、系统、协议、应用、网络、信号等类型繁多,这些领域的漏洞挖掘就成为非常繁杂、困难的问题,即便挖掘到漏洞也很难形成持续高效的挖掘与防御生态,目前主要基于“浅层”机器学习算法来进行恶意软件检测,静态分析仍然是当前分析软件漏洞的主要手段,挖掘效率低,挖掘效果差,静态分析的漏报率高,“浅层”机器学习算法的性能不佳,有待进行改善。


技术实现要素:

[0004]
(一)发明目的
[0005]
为解决背景技术中存在的技术问题,本发明提出一种基于深度学习的自动化漏洞挖掘方法,基于深度学习来对软件和应用程序中的漏洞进行自动挖掘,挖掘效率高,挖掘效果好,解决了静态分析的高漏报率问题和动态分析的低代码覆盖率问题,漏洞挖掘方面的性能显著提高,使用效果极佳。
[0006]
(二)技术方案
[0007]
本发明提出了一种基于深度学习的自动化漏洞挖掘方法,包括以下步骤:
[0008]
s1、获取漏洞信息并对漏洞信息进行整理,基于漏洞信息生成漏洞数据库,漏洞数据库中包含通用漏洞cve编号、通用漏洞评分系统cvss评分和漏洞描述字段;
[0009]
s2、引入深度学习方法,基于深度学习方法对漏洞数据库进行分析,以生成深度学习模型;
[0010]
s3、获取应用程序信息并明确待检测的应用程序,继而确定该应用程序所包括的待检测对象;以待检测对象为目标设置测试参数,得到测试对象;
[0011]
s4、向应用程序发送针对测试对象的测试请求,测试请求用于指示应用程序基于
测试参数运行测试对象,得到应用程序对于测试参数的响应结果,并依据响应结果来进行测试;
[0012]
s5、通过自动化代码模式识别测试对象的源代码数据,依据识别结果来确定源代码数据类型,根据源代码数据类型进行关联分析与启发搜索并从漏洞数据库中找出同源同宗的威胁问题;
[0013]
s6、接收应用程序发送的测试结果和源代码分析信息,基于相应结果并通过机器学习方法对代码的静态特征进行静态分析和学习;其中,静态特征包括代码的词法、语法、控制流和数据流;
[0014]
s7、通过动态分析来对静态分析的分析结果进行校正,综合代码分析得到的静态特征以及动态执行得到的动态特征,以解决静态分析的高漏报率问题和动态分析的低代码覆盖率问题;
[0015]
s8、发送相关信息到深度学习模型中进行识别,利用深度学习模型进行漏洞特征的自动化选择,将深度学习与语法语义特征结合以进行漏洞挖掘;
[0016]
s9、根据挖掘结果判断是否存在漏洞,若漏洞挖掘结果为存在漏洞,则将漏洞挖掘结果中包括的漏洞确定为该应用程序的漏洞;
[0017]
s10、漏洞数据库对识别出的漏洞进行分类储存,基于深度学习方法继续对漏洞数据库进行分析,以不断完善深度学习模型。
[0018]
优选的,在s1中,漏洞信息来源于国家漏洞数据库,即通过以国家漏洞数据库nvd作为数据源来构建自己的漏洞数据库。
[0019]
优选的,在s1中,漏洞数据库中还包括获取容易程度、机密性影响、是否需要认证、完整性影响、前提特权集、可用性影响、结果特权集、是否需要网络。
[0020]
优选的,在s1中,漏洞描述字段字段是指用于描述漏洞特征的自然语言。
[0021]
优选的,在s2中,还包括基于现有静态和动态漏洞挖掘方法,构建自适应的漏洞挖掘运行环境。
[0022]
优选的,在s3中,确定该应用程序所包括的待检测对象的过程具体如下:
[0023]
获取待检测应用程序的目标url并爬取该目标url,得到爬取响应结果;基于目标url和爬取响应结果来获取应用程序包括的待检测对象。
[0024]
优选的,在s4中,测试过程具体如下:
[0025]
为应用程序建立配置文件,配置文件中包括污点分析策略;通过动态二进制插桩框架pin启动该应用程序,并初始化动态插桩分析工具;通过动态插桩分析工具来分析应用程序的条件转移指令,生成控制流图以及控制依赖信息数据,并完成污点信息流的标记和传播。
[0026]
优选的,在s5中,关联分析与启发搜索包括从编写方式、框架结构、模块资源和同源代码多个维度验证威胁问题。
[0027]
优选的,在s8中,还包括如下步骤:
[0028]
利用深度学习模型中的漏洞响应特征和正常响应特征与相关信息对应的响应特征进行对比,以获取漏洞识别结果。
[0029]
优选的,还需要基于深度学习模型来设计集成测试平台,集成测试平台用于验证深度学习模型的可行性和有效性。
[0030]
本发明的上述技术方案具有如下有益的技术效果:
[0031]
首先获取漏洞信息并对漏洞信息进行整理,基于漏洞信息生成漏洞数据库;然后引入深度学习方法,生成深度学习模型;之后获取应用程序信息并明确待检测的应用程序,以待检测对象为目标设置测试参数,得到测试对象;然后向应用程序发送针对测试对象的测试请求,得到应用程序对于测试参数的响应结果,并依据响应结果来进行测试;之后确定源代码数据类型,根据源代码数据类型进行关联分析与启发搜索并从漏洞数据库中找出同源同宗的威胁问题;然后接收应用程序发送的测试结果和源代码分析信息,基于相应结果并通过机器学习方法对代码的静态特征进行静态分析和学习;之后通过动态分析来对静态分析的分析结果进行校正,综合代码分析得到的静态特征以及动态执行得到的动态特征;然后发送相关信息到深度学习模型中进行识别,利用深度学习模型进行漏洞特征的自动化选择,将深度学习与语法语义特征结合以进行漏洞挖掘;之后根据挖掘结果判断是否存在漏洞;漏洞数据库对识别出的漏洞进行分类储存,基于深度学习方法继续对漏洞数据库进行分析,以不断完善深度学习模型;
[0032]
本发明基于深度学习来对软件和应用程序中的漏洞进行自动挖掘,挖掘效率高,挖掘效果好,解决了静态分析的高漏报率问题和动态分析的低代码覆盖率问题,漏洞挖掘方面的性能显著提高,使用效果极佳。
附图说明
[0033]
图1为本发明提出的一种基于深度学习的自动化漏洞挖掘方法的流程图。
具体实施方式
[0034]
为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
[0035]
如图1所示,本发明提出的一种基于深度学习的自动化漏洞挖掘方法,包括以下步骤:
[0036]
s1、获取漏洞信息并对漏洞信息进行整理,基于漏洞信息生成漏洞数据库,漏洞数据库中包含通用漏洞cve编号、通用漏洞评分系统cvss评分和漏洞描述字段;
[0037]
s2、引入深度学习方法,基于深度学习方法对漏洞数据库进行分析,以生成深度学习模型;
[0038]
s3、获取应用程序信息并明确待检测的应用程序,继而确定该应用程序所包括的待检测对象;以待检测对象为目标设置测试参数,得到测试对象;
[0039]
s4、向应用程序发送针对测试对象的测试请求,测试请求用于指示应用程序基于测试参数运行测试对象,得到应用程序对于测试参数的响应结果,并依据响应结果来进行测试;
[0040]
s5、通过自动化代码模式识别测试对象的源代码数据,依据识别结果来确定源代码数据类型,根据源代码数据类型进行关联分析与启发搜索并从漏洞数据库中找出同源同宗的威胁问题;
[0041]
s6、接收应用程序发送的测试结果和源代码分析信息,基于相应结果并通过机器学习方法对代码的静态特征进行静态分析和学习;其中,静态特征包括代码的词法、语法、控制流和数据流;
[0042]
s7、通过动态分析来对静态分析的分析结果进行校正,综合代码分析得到的静态特征以及动态执行得到的动态特征,以解决静态分析的高漏报率问题和动态分析的低代码覆盖率问题;
[0043]
s8、发送相关信息到深度学习模型中进行识别,利用深度学习模型进行漏洞特征的自动化选择,将深度学习与语法语义特征结合以进行漏洞挖掘;
[0044]
s9、根据挖掘结果判断是否存在漏洞,若漏洞挖掘结果为存在漏洞,则将漏洞挖掘结果中包括的漏洞确定为该应用程序的漏洞;
[0045]
s10、漏洞数据库对识别出的漏洞进行分类储存,基于深度学习方法继续对漏洞数据库进行分析,以不断完善深度学习模型。
[0046]
在一个可选的实施例中,在s1中,漏洞信息来源于国家漏洞数据库,即通过以国家漏洞数据库nvd作为数据源来构建自己的漏洞数据库;漏洞数据库中还包括获取容易程度、机密性影响、是否需要认证、完整性影响、前提特权集、可用性影响、结果特权集、是否需要网络;漏洞描述字段字段是指用于描述漏洞特征的自然语言。
[0047]
在一个可选的实施例中,在s2中,还包括基于现有静态和动态漏洞挖掘方法,构建自适应的漏洞挖掘运行环境。
[0048]
在一个可选的实施例中,在s3中,确定该应用程序所包括的待检测对象的过程具体如下:获取待检测应用程序的目标url并爬取该目标url,得到爬取响应结果;基于目标url和爬取响应结果来获取应用程序包括的待检测对象。
[0049]
在一个可选的实施例中,在s4中,测试过程具体如下:为应用程序建立配置文件,配置文件中包括污点分析策略;通过动态二进制插桩框架pin启动该应用程序,并初始化动态插桩分析工具;通过动态插桩分析工具来分析应用程序的条件转移指令,生成控制流图以及控制依赖信息数据,并完成污点信息流的标记和传播。
[0050]
在一个可选的实施例中,在s5中,关联分析与启发搜索包括从编写方式、框架结构、模块资源和同源代码多个维度验证威胁问题。
[0051]
在一个可选的实施例中,在s8中,还包括如下步骤:利用深度学习模型中的漏洞响应特征和正常响应特征与相关信息对应的响应特征进行对比,以获取漏洞识别结果。
[0052]
在一个可选的实施例中,还需要基于深度学习模型来设计集成测试平台,集成测试平台用于验证深度学习模型的可行性和有效性。
[0053]
本发明中,使用时,首先获取漏洞信息并对漏洞信息进行整理,基于漏洞信息生成漏洞数据库;然后引入深度学习方法,基于深度学习方法对漏洞数据库进行分析,以生成深度学习模型;之后获取应用程序信息并明确待检测的应用程序,继而确定该应用程序所包括的待检测对象;以待检测对象为目标设置测试参数,得到测试对象;然后向应用程序发送针对测试对象的测试请求,测试请求用于指示应用程序基于测试参数运行测试对象,得到应用程序对于测试参数的响应结果,并依据响应结果来进行测试;之后通过自动化代码模式识别测试对象的源代码数据,依据识别结果来确定源代码数据类型,根据源代码数据类型进行关联分析与启发搜索并从漏洞数据库中找出同源同宗的威胁问题;然后接收应用程
序发送的测试结果和源代码分析信息,基于相应结果并通过机器学习方法对代码的静态特征进行静态分析和学习;其中,静态特征包括代码的词法、语法、控制流和数据流;之后通过动态分析来对静态分析的分析结果进行校正,综合代码分析得到的静态特征以及动态执行得到的动态特征,以解决静态分析的高漏报率问题和动态分析的低代码覆盖率问题;然后发送相关信息到深度学习模型中进行识别,利用深度学习模型进行漏洞特征的自动化选择,将深度学习与语法语义特征结合以进行漏洞挖掘;之后根据挖掘结果判断是否存在漏洞,若漏洞挖掘结果为存在漏洞,则将漏洞挖掘结果中包括的漏洞确定为该应用程序的漏洞;漏洞数据库对识别出的漏洞进行分类储存,基于深度学习方法继续对漏洞数据库进行分析,以不断完善深度学习模型;
[0054]
本发明基于深度学习来对软件和应用程序中的漏洞进行自动挖掘,挖掘效率高,挖掘效果好,解决了静态分析的高漏报率问题和动态分析的低代码覆盖率问题,漏洞挖掘方面的性能显著提高,使用效果极佳。
[0055]
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1