一种基于人机协同的软件漏洞模糊测试方法与流程

文档序号:21362270发布日期:2020-07-04 04:36阅读:559来源:国知局
一种基于人机协同的软件漏洞模糊测试方法与流程

本发明涉及软件漏洞模糊测试技术领域,尤其涉及一种基于人机协同的软件漏洞模糊测试方法。



背景技术:

新的信息环境下,软件规模越来越大,软件复杂度越来越高,软件相关的安全问题对个人、组织和社会的影响与日俱增。软件漏洞挖掘作为软件安全问题的核心越来越受到研究者们的重视。与此同时,人们面临的漏洞挖掘问题也越来越复杂。传统漏洞挖掘方法的局限性与漏洞挖掘效能需求之间的矛盾日益凸显。这引起了我们对传统漏洞挖掘方法与系统效能的思考。这也对传统漏洞挖掘技术的发展提出了新挑战。

模糊测试是软件漏洞挖掘的一种重要方法,它是在软件系统的输入中插入非预期数据,用来检测系统的安全性。在测试方法分类中,可归于黑盒测试和灰盒测试领域。模糊测试一般是自动的或者是半自动的过程,该过程是控制测试目标并反复的为其提供所需处理的数据,当然,这些数据是经过处理的,与测试目标的预期输入有或多或少的差别,观察是否能引发测试目标的未定义的或者不安全的行为。

模糊测试是一种强制性的发掘漏洞的方法,它只关注测试目标对测试用例是否做出了不当的反应,或者引发了异常,崩溃等状况。模糊测试使用的测试用例相对传统测试方法较多,而且测试用例多数都是无效或者是半有效的。这样在实际测试过程中,即使测试对象在处理这些测试用例(特别是半有效的测试用例)时产生了和正常数据一样的反应,那么对测试对象来说,也是一种不正确的反应,是一种错误。模糊测试中随机生成的测试用例只占很小的一部分,大部分的测试用例需要靠人的分析与经验进行有导向的生成,这种导向是宏观的,具体的测试用例由模糊器来生成。

目前,较为成熟的软件漏洞模糊测试方法大部分是数据驱动的,面对半结构化和非结构化的问题缺乏有效的解决途径。这些方法没有有效的刻画出人在模糊测试过程中的认知能力。传统软件模糊测试方法主要依靠数据从技术层面进行问题求解,忽略了不能完全模型化(定量化)的非技术因素(人的认知)。而作为非技术因素的人又是软件模糊测试任务的一个重要组成因素,其高级思维以及模糊测试经验和艺术不能由软件服务来代替。这些存在的问题严重影响了软件模糊测试系统的使用价值和用户的使用热情。



技术实现要素:

为了解决上述问题,本发明将人的认知作为提升软件漏洞模糊测试效能的核心要素,从技术角度改进软件漏洞模糊测试系统的结构,以期将人的真实参与作用刻画出来并融入系统且获得用户的认可。基于此,本发明以软件漏洞模糊测试任务求解为驱动,根据人机协同的思想与基本原理,将参与软件漏洞模糊测试的人的认知能力作为系统的组件即认知服务,“浸入”到整个软件漏洞模糊测试任务求解中。本发明将软件服务和认知服务融合于一个统一的框架中来实现人机协同机制,该框架能实现软件服务和认知服务的灵活切换,同时屏蔽认知服务和软件服务在求解软件漏洞模糊测试任务方式上的差异,可解决软件漏洞模糊测试过程中的人机协同策略规划问题。

本发明提供的一种基于人机协同的软件漏洞模糊测试方法,利用服务自动匹配与组装技术,将软件安全分析人员的认知能力作为认知服务提供给软件漏洞模糊测试过程,包括以下步骤:

s11.将软件漏洞模糊测试过程组件化为一系列细粒度的服务,在软件漏洞模糊测试过程的某一阶段,输入任务信息,经过子任务a完成软件服务匹配,并输出结果,如果输出结果满足阶段性需求,再把任务信息输入子任务b;否则,执行步骤s12;

s12.子任务a通过认知服务触发器判断要执行的操作是否匹配认知服务,如果匹配,则执行步骤s13;如果不匹配,则转到步骤s14;

s13.调用认知服务库里的资源进行操作或由直接人机交互给予响应完成操作,再执行子任务b;

s14.把子任务a分解为软件任务a1和认知任务a2,认知任务a2通过认知服务触发器从认知服务库里获取认知服务,并基于软件任务a1和认知任务a2,在服务资源执行达到阶段性需求后,继续执行子任务b。

进一步的,软件漏洞模糊测试过程包括以下阶段:

第一阶段:解析输入数据的数据格式;

第二阶段:根据数据格式制定变异策略;

第三阶段:确定输入数据是否到达变异策略的结尾,如果未达到,根据变异策略继续进行变异;如果到达,则测试过程结束;

第四阶段:根据变异策略对输入数据进行变异后,输入到待测试的程序;

第五阶段:观察程序是否异常或崩溃;

第六阶段:如果程序异常或崩溃,收集并记录程序崩溃或异常数据,然后转到第三阶段;

第七阶段:如果程序未显示异常或崩溃,直接转到第三阶段。

进一步的,对于软件漏洞模糊测试过程的每个操作阶段,划分为若干子任务:

在输入数据格式解析阶段,子任务包括:文件数据解析、二进制数据解析、协议数据解析和平台数据解析;

在变异策略制定阶段,子任务包括:加、乘、字节翻转和字节设置;

在数据生成阶段,子任务包括:数字类型生成、字符类型生成、十六进制类型生成和未知类型生成;

在数据输入阶段,子任务包括:网络输入、文本输入、命令行输入、窗口输入和参数输入;

在异常信息的观察、收集和记录阶段,子任务包括:调试器信息收集、内存异常信息收集、堆栈异常信息收集、文件记录和崩溃点信息收集。

进一步的,对于划分形成的若干子任务再进行分类,分别为软件服务、认知服务、混合服务和直接人机交互服务,并形成相应的软件服务库、认知服务库、混合服务库和直接人机交互服务库。

进一步的,所述软件服务包括:文件数据解析、协议数据解析、加、乘、网络输入、文本输入和文件记录。

进一步的,所述认知服务包括:二进制数据解析、字节翻转、字节设置、数字类型生成、字符类型生成、十六进制类型生成和调试器信息收集。

进一步的,所述混合服务包括:平台数据解析、参数输入、崩溃点信息收集、内存异常信息收集和堆栈异常信息收集。

进一步的,所述直接人机交互服务是:未知类型生成、命令行输入和窗口输入。

进一步的,基于所述软件服务、认知服务、混合服务和直接人机交互服务,设计人机协同策略规划机制,包括如下步骤:

步骤s21.初始化软件漏洞模糊测试任务ft;

步骤s22.令ft={ph1,ph2,...,phi},其中phi是软件漏洞模糊测试过程的每个阶段,故i的最大值为7;

步骤s23.从i=1开始,判断phi中包含的子任务集是否与所述软件服务库中的软件服务匹配;如果匹配,将其存储在缓冲区中,然后执行步骤s24;否则,转到步骤s25;

步骤s24.判断i=7是否成立,如果是,转到步骤s28;否则,令i=i+1,并转到步骤s23;

步骤s25.判断phi中包含的子任务集是否与所述认知服务库中的认知服务匹配;如果是,将其存储在缓冲区中,转到步骤s24;否则,执行步骤s26;

步骤s26.判断phi中包含的子任务集是否与所述混合服务库中的混合服务匹配,如果是,将其存储在缓冲区中,转到步骤s24;否则,执行步骤s27;

步骤s27.将phi中包含的子任务集提交到直接人机交互服务接口,直接人机交互服务接口向子任务返回确认消息后,将其存储在缓冲区中,然后转到步骤s24;

步骤s28.整个模糊测试人机协同策略规划完成,对结果进行整理,并输出人机协同策略。

进一步的,在软件漏洞模糊测试过程中,操作者能够随时修正乃至中断测试过程,且能够用直接人机交互服务代替测试过程中的部分或全部未执行的子任务,相关子任务的结果由直接人机交互服务给出;测试过程完成后,提供测试过程的回溯选项,操作者能够了解测试过程的详情,并能够对不满意的测试环节进行修改,以再次生成人机协同策略。

本发明的有益效果在于:本发明以软件漏洞模糊测试任务求解为驱动,基于功能服务化的设计思想,将参与软件漏洞模糊测试的人的认知能力作为系统的组件即认知服务,“浸入”到整个软件漏洞模糊测试任务求解中。本发明将软件服务和认知服务融合于一个统一的框架中来实现人机协同,该方法可实现软件服务和认知服务的灵活切换,能达到提升软件漏洞模糊测试效能的目的。本发明的主要优点在于:

1、在测试样本生成环节将人的经验作为一种服务形式固化下来,在一定程度上克服了以往模糊测试过程中人为生成测试用例极其费时的问题,极大的提升了整个模糊测试的效率;

2、在测试过程中可以灵活的调用认知服务进行程序异常情况的鉴别,可以很好的解决以往程序出现异常后需要人工对程序是否出现异常、这些异常是否代表发现漏洞进行判断的问题,从而极大的提升整个测试过程的效率;

3、通过本发明提出的人机协同框架和协同策略规划机制,可以很好的将安全分析人员的认知能力作为知识服务提供给模糊测试过程,并且做到自动化程序求解和人工干预的高效协同。

附图说明

图1标准的模糊测试过程;

图2基于人机协同的模糊测试执行过程;

图3人机协同策略规划过程。

具体实施方式

为了对本发明的技术特征、目的和效果有更加清楚的理解,现说明本发明的具体实施方式。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明通过将软件服务和人服务融合于一个统一的框架中来实现人机协同机制,该框架可实现人服务和软件服务的灵活切换,同时屏蔽人服务和软件服务在求解软件漏洞挖掘任务方式上的差异,可解决软件漏洞模糊测试过程中的人机协同策略规划问题。

一、软件漏洞模糊测试过程

标准的软件漏洞模糊测试过程可以分为七个阶段,如图1所示。

阶段1:解析输入数据的数据格式,其中数据格式包括文本、协议和二进制;

阶段2:根据数据格式制定变异策略;

阶段3:确定输入数据是否到达变异策略的结尾,如果未达到变异策略的结尾,则根据变异策略继续进行变异;如果到达变异策略的结尾,则过程结束;

阶段4:根据变异策略对数据进行变异后,输入到待测试的程序;

阶段5:观察程序是否异常或崩溃;

阶段6:如果程序异常或崩溃,收集并记录程序崩溃或异常数据,然后转到阶段3;

阶段7:如果程序未显示异常或崩溃,转到阶段3。

对于软件漏洞模糊测试过程的每个操作阶段,可以划分为若干子任务:

(1)在输入数据格式解析阶段,子任务包括:文件数据解析,二进制数据解析,协议数据解析和平台数据解析;

(2)在变异策略制定阶段,子任务包括:加,乘,字节翻转和字节设置;

(3)在数据生成阶段,子任务包括:数字类型生成,字符类型生成,十六进制类型生成和未知类型生成;

(4)在数据输入阶段,子任务包括:网络输入,文本输入,命令行输入,窗口输入和参数输入;

(5)在异常信息的观察、收集和记录阶段,子任务包括:调试器信息收集,内存异常信息收集,堆栈异常信息收集,文件记录和崩溃点信息收集。

划分完子任务之后,可以将模糊测试过程中的这些子任务分成4类,分别是软件服务、认知服务、混合服务、直接人机交互服务,其中:

软件服务包括:文件数据解析,协议数据解析,加,乘,网络输入,文本输入和文件记录;

认知服务包括:二进制数据解析,字节翻转,字节设置,数字类型生成,字符类型生成,十六进制类型生成和调试器信息收集;

混合服务包括:平台数据解析,参数输入,崩溃点信息收集,内存异常信息收集和堆栈异常信息收集;

直接人机交互服务包括:未知类型生成,命令行输入和窗口输入。

二、人机协同的模糊测试执行过程

在基于人机协同的软件漏洞模糊测试任务流程中,认知服务的作用体现在复杂软件漏洞模糊测试任务求解过程中,将认知服务和软件服务视为服务实体。充分利用现有的服务自动匹配与组装技术,将安全分析人员的认知能力作为认知服务提供给模糊测试过程。

基于功能服务化的设计思想,软件漏洞模糊测试过程被组件化为一系列细粒度的服务。在软件漏洞模糊测试流程的某一阶段,输入任务信息,经过子任务a完成相关软件服务匹配,并输出结果,假设结果满足阶段性要求。依流程再把任务信息输入子任务b。子任务b先要判断适配的软件服务及执行结果是否能够满足任务的阶段性需求。如果满足需求,则流程继续,执行子任务c。如果未满足阶段性需求,子任务b经过认知服务触发器(cognition-servicetrigger,cst)判断要执行的操作是否匹配认知服务。如果匹配,则调用认知服务库里的资源进行操作或由直接人机交互给予响应完成该操作,流程继续进行。如果不匹配,则子任务b需由软件服务和认知服务的联合服务完成。把子任务b分解为b1(软件任务)和b2(认知任务)。b2通过触发cst从认知服务库里获取认知服务,并基于b1(软件服务)和b2(认知服务),在服务资源执行达到子任务阶段需求后,继续执行子任务c,如图2所示。

三、人机协同策略规划机制

有效规划人机协同策略是快速实现软件漏洞模糊测试的前提。可以在规划协同策略的同时执行模糊测试任务,也可以在生成协同策略后执行任务。基于软件服务,认知服务,混合服务和直接人机交互服务,设计人机协同策略规划机制,细节如下:

步骤1:初始化模糊测试任务ft;

步骤2:令ft={ph1,ph2,...,phi}是软件模糊测试任务,其中phi是模糊测试的每个阶段,i的最大值取n;这里,n=7;

步骤3:从i=1开始,确定phi中包含的子任务集是否与软件服务库中的服务匹配;如果匹配,将其存储在缓冲区中,然后转到步骤4;否则,转到步骤5;

步骤4:确定i=n是否为真,如果是,转到步骤8;否则,i++(即令i=i+1),转到步骤3;

步骤5:确定phi中包含的子任务集是否可以与认知服务库的认知服务匹配;如果可以,将其存储在缓冲区中,转到步骤4;否则,转到步骤6;

步骤6:判断phi中包含的子任务集是否可以与混合服务库的混合服务匹配,如果是,然后将其存储在缓冲区中,转到步骤4;否则,转到步骤7;

步骤7:将子任务提交到直接人机交互服务接口,接口向子任务返回确认消息后,将其存储在缓冲区中,然后转到步骤4;

步骤8:整个模糊测试人机协同策略规划完成。对结果进行整理,并输出人机协同策略。人机协同策略规划过程如图3所示。

在随后的软件漏洞模糊测试过程中,操作者可以随时修正乃至中断整个测试过程。操作者能够用直接人机交互服务代替测试过程中的部分或全部未执行的子任务。相关子任务的结果由直接人机交互服务给出。整个测试过程完成后,提供测试过程的回溯选项,操作者可以了解整个测试过程的详情,并能够对不满意的测试环节进行修改,从而可以再次生成人机协同策略。

以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

在本发明的描述中,需要说明的是,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1