本系统涉及计算机软件安全领域,针对计算机软件漏洞扫描研发了一种既可以在源码也可以直接在二进制语言(即机器语言)上进行漏洞扫描系统,命名为aifuzz漏洞扫描系统。
背景技术:
近年来,计算机软件呈现了爆发式的增长,计算机软件的漏洞和计算机软件的发展呈现了正相关性。研究表明网络空间安全事件的一个主要原因是软件中难以发现的漏洞和难以实现的漏洞扫描。统计表明到2019年,网络犯罪的全球成本将达到2万亿美元,是2015年估计的5000亿美元的三倍。今年全球打击网络犯罪的支出将达到800亿美元。同时,闭源软件也给漏洞的扫描带来了很大的挑战。目前静态分析的技术主要是基于源码进行分析的,比如形式化验证,符号验证和污点分析等都需要源码来进行漏洞的挖掘,基于目前很多软件都不是开源软件,这就给目前的静态分析技术带来了很大的挑战。同时目前也有动态扫描技术可以对基于二进制语言的软件进行扫描,但是常用的系统比如fuzzing会因为输入问题导致测试崩溃,改进的fuzzing系统也面临各种问题,比如符号执行支持的fuzzing依然会面临路径爆炸问题,也就是随着软件的代码越来越多,测试的路径就会越来越多,最终导致测试崩溃。再者,虽然有商用软件可以进行漏洞分析,但是根据我们的经验,商用软件比如idapro扫描所消耗的时间比较久,一旦遇到大的软件,扫描周期太长,并且效果不是很好。idapro在美国国防部主导的cgc数据上扫描的结果很不理想。目前有基于人工智能的漏洞扫描系统,这无疑大大提高了检测的效率和速度。但是我们认识到基于人工智能的漏洞检测系统有误报的情况出现。目前也有开发的辅助的fuzzing漏洞扫描工具,但是目前开发的导向的fuzzing依然难以克服效率低的问题,比如driller和aflgo一方面入门级别特别高,另一方面这些工具依然难以克服面对大的系统和软件时效率低的问题。鉴于此,该专利研发了结合人工智能漏洞扫描系统和模糊测试的自动化漏洞扫描工具。
技术实现要素:
为克服人工智能漏洞扫描系统误报的情况,特提出以下技术方案:
第一方面,提供了一种结合人工智能和模糊测试的漏洞扫描的方法,包括:
在不同运行环境下的软件,比如linux,windows,mac,在不同的编译器上运行的软件,比如o0,o1,o2等等。
其中所包含的技术是我们研发的基于注意力模型机制的强化学习算法(reinforcementlearning)。在我们的大数据库里,利用强化学习产生模糊测试的输入数据。引导模糊测试工具针对性的扫描。
第二方面,提供了一种基于人工智能模糊测试的漏洞扫描的系统,包括:
给定任意语言的计算机软件,网页app,手机app,包括在不同运行环境下编译的软件,比如linux,windows,mac,和在不同的编译器上运行的软件,比如o0,o1,o2等等。
aifuzz能够大批量的有效的预测该软件可能存在的漏洞的类型和漏洞的具体信息。
其中所包含的技术是我们研发的基于长短记忆力模型的引导模糊测试的模型。
给定要扫描的计算机软件,我们研发的基于长短记忆力模型用来提取目标函数的特征,该特征用于下一步计算种子输入到某函数的距离,以判断模糊测试是否覆盖该函数。
第三方面,本申请提供了一种应用人工智能和模糊测试的漏洞扫描的方法,在提取的特征的基础上,利用研发的距离公式计算种子输入到某函数的距离。如果距离偏大,则调整模糊测试的输入数据。
第四方面,本申请在前三个阶段中用到了以下技术:
·利用定制的人工智能技术自动在源码或者二进制语言上快速有效的检测有漏洞的函数(图2)。
·利用定制的强化学习来产生模糊测试的输入数据(图3)。
·利用定制的长短记忆力模型来学习控制流的特征并提取特征。
·利用定制的距离公式来计算种子输入到目标函数的距离大小(图3)。
·结合各个模型调整输入数据,做到结合强化学习,长短记忆力模型和定制的距离公式,双重引导模糊测试扫描特定的函数。
·利用定制的人工智能技术和模糊测试技术定位函数的信息,从而在函数粒度准确的预报漏洞(图3)。
本发明的实施方式相对于现有技术而言,第一我们解决了结合人工智能和模糊测试在源码和二进制语言上来自动化扫描漏洞的技术瓶颈。
另外,我们的系统可以在函数级别上预报漏洞所在的位置和具体详细的信息。
另外,因为我们的系统是结合了人工智能和模糊测试的自动化扫描,所以一方面我们的系统兼容性更强,误报率更低,第二我们的系统能够通过学习变得更加智能,从而能够通过不断地迭代升级,完善和扫描的准确性。
另外,我们自主研发的基于人工智能和模糊测试的的漏洞扫描系统针对大规模的软件和计算机系统进行漏洞扫描。
另外,我们的系统在漏洞扫描上既可以在源码也可以在机器语言上进行扫描。免除了源代码敏感企业的后顾之忧,大大降低了应用门槛,拓展了应用领域。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请实施例的总体实施方法的流程示意图;
图2为本申请实施例的人工智能识别方法的流程示意图;
图3为本申请实施例的漏洞扫描模型内部结构互相合作的示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的功能。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、训练和测试,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、训练和测试。应该理解,当我们成函数识别模型训练或者漏洞扫描模型训练的时候,它可以理解为单独训练一个模型,也可以理解为把两个模型组成一个系统,先后完成整个系统模型的训练和调试。本申请说明书中所用的措辞“二进制语言”和“机器语言”为同一语言。本系统同时可以应用到汇编语言和计算机源码。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本申请提供的结合自动化人工智能和模糊测试漏洞扫描系统,旨在解决现有技术的一下问题:1)静态分析方法不能有效的针对二进制语言进行漏洞扫描分析;2)现有的动态分析不能高效的解决漏洞分析的问题,尤其是面对大规模的代码或者大的软件,现有的动态分析或遇到各种问题,比如符号执行会有路径爆炸的问题。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
本申请使用的aifuzz漏洞检测系统如图1、图2和图3所示,包括:自动化漏洞扫描整体示意图,人工智能漏洞扫描示意图和模型内部互动示意图。
图1,首先启动系统,然后上传要进行漏洞扫描的软件,利用自动化人工智能漏洞检测系统进行扫描,如果没有漏洞,结束整个扫描过程。如果有漏洞,收集检测到的存在漏洞的函数极其信息(目标函数)。利用研发的强化学习,学习目标函数在模糊测试下的输入。
图1,在强化学习完成后,一方面在目标函数上利用深度学习学习其特征,另一方面计算模糊测试的覆盖的路径和目标函数的距离,如果距离偏大则舍弃该种子输入,如果距离偏小,则反馈给强化学习,产生更多类似的输入数据。最后预报出函数的漏洞极其信息。
图2,给出了人工智能漏洞监测系统在该系统中的作用,开启系统,上传要扫描的软件。人工智能漏洞检测系统则利用预先训练好的模型进行漏洞检测,预报出有漏洞的函数及其位置,并将该信息保存至后台数据库。
图3,在人工智能漏洞检测系统检测到目标函数之后。系统启动预先训练好的长短记忆里模型对目标函数中的控制流程图进行学习,把控制流程图里面的信息转化为特征向量。
图3,在收集到目标函数之后,启动预先训练好的记忆力模型,对目标函数的模糊测试阶段的输入数据进行学习,并产生输入数据。
图3,在完成长短记忆里模型的学习和强化学习的模型的学习阶段之后。启动模糊测试,在定向研发的距离公式的引导下,定向的对目标函数进行测试。测试阶段同时和长短记忆力模型下的距离大小和强化学习产生的输入数据互动。如果距离偏大在移除种子数据,如果强化学习产生的输入数据有效,则奖励强化学习模型,使之能够产生更多帮助模糊测试定向检测目标函数的输入数据。
图3,在模糊测试完成对所有的目标函数测试之后,把第二次验证的信息存入数据库,同时把人工智能漏洞检测系统产生的漏洞信息一并存入数据库。
本申请实施例提供了一种基于人工智能和模糊测试的的自动化漏洞扫描系统,与现有技术相比,一方面利用了人工智能效率高的优势,另一方面利用研发的长短记忆力模型和强化学习可以针对性的引导模糊测试的优势对软件的源码和二进制语言进行漏洞扫描。该系统不但克服了人工智能扫描漏洞存在误报的问题,另一方面也克服了模糊测试覆盖率低的问题。做到了对软件和系统的双重检测。大大提高了效率和准确性。
本申请实施例提供了另一种可能的实现方式,其中,人工智能包括很多技术,我们的技术包括深度学习,监督学习,强化学习,特征提取,特征学习,模糊测试。我们的系统能够平移到汇编语言上上进行漏洞扫描。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对人工智能的模型,强化学习的模型,模糊测试的模型等做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
同时本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。