一种基于人机协同的规模化Fuzzing优化系统及方法
技术领域
本发明涉及信息安全
技术领域
,具体涉及一种基于人机协同的规模化Fuzzing优化系统及方法。背景技术
漏洞挖掘一般指安全研究人员利用各种工具对软件、系统代码进行审计,对软件执行过程进行分析来查找缺陷的过程。漏洞挖掘技术旨在充分挖掘目标网络体系中存在于硬件设计、软件程序、安全管理和网络通信协议中的漏洞。漏洞挖掘是计算密集型的工作,与软件的规模和复杂度、硬件系统性能、采用的分析技术都有非常大的关联性,在研究实践中往往需要根据以上影响因素动态调整程序分析策略,在分析效率与分析深度之间取得较好的平衡和折中。漏洞挖掘在算法、分析数据存储和处理方面都有显著特征,现有的技术对大型复杂程序分析效率低下,没有充分利用高性能硬件设备提供的并行处理能力。探索规模化、并行化漏洞挖掘技术,增强对异构化计算资源的利用率,能很好应对大型复杂软件快速分析的需求。一方面,需要研究轻量级分析技术、启发式状态空间探测技术(如脆弱路径筛选、低频路径筛选等),在较小的开销内增强漏洞挖掘的导向性;另一方面,需要研究高效的规模化、并行化分析方法。
作为漏洞挖掘的有效手段,模糊测试技术对科研和生产都具有重要的安全防护意义。由于易用性高、成本较低以及检测效果较好等优势,模糊测试技术已成为目前业界常用的安全漏洞检测技术之一,针对网络协议、门户网站、关键信息系统等目标,已经开展了众多研究和应用。但目前模糊测试技术仍存在工具执行为主、智能化程度低、人机协同程度低、机机协同程度低等问题。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何解决目前模糊测试中存在的工具执行为主、智能化程度低、人机协同程度低、机机协同程度低等问题。
(二)技术方案
为了解决上述技术问题,本发明提供了一种基于人机协同的规模化Fuzzing优化系统,包括基于知识向量空间的人机协同智能决策模块、基于注释源语的人机协同并行化Fuzz模块和人在回路的混合增强模块;
其中,所述基于知识向量空间的人机协同智能决策模块用于完成人类漏洞挖掘知识与机器漏洞挖掘能力这些要素的抽象化,映射到统一的向量空间,将人机知识作为任务规划的部分输入,为并行化Fuzz执行提供决策指导;
所述基于注释源语的人机协同并行化Fuzz模块用于完成基于人机协同的Fuzz流程构建,接收人机协同智能决策模块输出的决策结果<任务信息,初始推荐的漏洞挖掘模型,Fuzz执行策略,人机交互数据格式>,然后通过共享机制,实现计算节点之间的数据交互,以及并行策略的动态调整;
所述人在回路的混合增强模块用于通过人机交互通道,为人指导漏洞挖掘过程提供数据通路,依据基于知识向量空间的人机协同智能决策模块选择的人机交互数据格式,将专家研判和选择传递到人机协同并行化Fuzz模块,实现人的智慧与漏洞挖掘过程深度结合。
本发明还提供了一种利用所述系统实现的基于人机协同的规模化Fuzzing优化方法。
(三)有益效果
本发明基于人机协同理念,面向文本编辑类软件、音视频类软件等文件解析目标对象,设计了一种基于人机协同的规模化Fuzz优化系统,构建了基于人机协同的规模化Fuzzing技术框架,研究人机协同模式的漏洞挖掘过程,实现“人算计”和“机计算”能力的有机组合,为提升整体的漏洞挖掘能力进行探索。
附图说明
图1为本发明的基于人机协同的规模化Fuzzing优化系统原理图;
图2为本发明设计的人机协同的智能决策模型组成图;
图3为本发明设计的人机协同并行化Fuzz模块架构图;
图4为本发明设计的人在回路的混合增强模块原理图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
如图1所示,本发明提供的一种基于人机协同的规模化Fuzzing优化系统包括基于知识向量空间的人机协同智能决策模块、基于注释源语的人机协同并行化Fuzz模块和人在回路的混合增强模块。
其中,基于知识向量空间的人机协同智能决策模块用于完成人类漏洞挖掘知识与机器漏洞挖掘能力等要素的抽象化,映射到统一的向量空间,将人机知识作为任务规划的部分输入,为并行化Fuzz执行提供决策指导;
基于注释源语的人机协同并行化Fuzz模块用于完成基于人机协同的Fuzz流程构建,接收人机协同智能决策模块输出的决策结果<任务信息,初始推荐的漏洞挖掘模型,Fuzz执行策略,人机交互数据格式>,然后通过共享机制,实现大规模计算节点之间的数据交互,以及并行策略的动态调整;
人在回路的混合增强模块用于通过人机交互通道,为人指导漏洞挖掘过程提供数据通路,依据基于知识向量空间的人机协同智能决策模块选择的人机交互数据格式,将专家研判和选择传递到人机协同并行化Fuzz模块,实现人的智慧与漏洞挖掘过程深度结合。
基于知识向量空间的人机协同智能决策模块:
在漏洞挖掘的许多环节中,需要控制主体进行决策来指导下一步的任务方向。传统漏洞挖掘模式中,决策角色往往由技术人员或专家承担,技术人员或专家根据自己的经验,来针对具体的情况作出判断和决策。基于专家经验的决策方式存在的主要问题是对目标当前状态的考虑不足导致作出的决策并非最优决策。针对这一问题,本发明将人类的漏洞挖掘知识空间转换为机器可理解的人机协同漏洞挖掘知识库向量空间,利用深度强化学习的自动探索发现与关联学习能力,主动从人机协同漏洞挖掘知识库向量空间中构建适合于目标的漏洞挖掘模型,并进行相应的最优参数决策。人机协同漏洞挖掘知识库向量空间中包含机器可理解的漏洞原理及漏洞存在的行为模型、人类挖掘漏洞的相关知识以及专家知识等数据。基于现有的知识向量空间及专家经验,通过深度强化学习技术训练策略决策模型,得出漏洞挖掘的最优策略<任务信息,初始推荐的漏洞挖掘模型,Fuzz执行策略,人机交互数据格式>,并将策略结果传递给基于注释源语的人机协同并行化Fuzz模块,指导机器集群执行Fuzz任务。基于人机协同的智能决策模型组成如图2所示。
本发明中的人机协同智能决策模型采用深度强化学习框架,基于知识库向量空间与目标程序的交互,通过聚合分析与关联匹配,选择出与目标程序相契合的漏洞挖掘知识,以此自动构建挖掘模型。通过模仿人类漏洞挖掘模式,采用深度强化学习框架,基于知识库和目标信息的关联程度,生成最优参数配置。不同漏洞挖掘模型需要不同参数设置,相应参数设置好坏也直接影响漏洞挖掘的效果。
基于注释源语的人机协同并行化Fuzz模块:
本发明将人的知识和经验融合到并行化漏洞挖掘过程中,指导机器的并行化任务,为解决大规模并发场景中人工动态参与度低,人机、机机协同程度低的难题提供一个思路。目前基于Fuzz的漏洞挖掘过程人机独立,并没有将机器的高计算性能与人的经验进行有效结合。同时,现有的并行化Fuzz技术并行节点之间的工作相对独立,并没有共享各个节点间漏洞挖掘过程中的经验等高价值信息,导致并行化的效率低下,各节点的重复性工作很多。因此本发明设计了基于共享机制的人机规模化协同Fuzz方式,实现大规模节点间多维度知识和经验共享。通过共享信息的不断迭代过程,优化各个节点的参数,减少并行节点之间的重复工作,从而提高整体的挖掘效率。人机协同并行化Fuzz模块的整体框架如图3所示:
基于注释源语的人机协同并行化Fuzz模块主要由两部分组成,分别为服务器部分和机器集群部分。其中,服务器包含八个模块,分别为并行任务分配与启动模块、状态更新模块、数据库模块、crash分析模块、位图监控及任务调整模块、种子选择模块、异常分析模块、服务器端通讯模块;机器集群中每个节点地位平等,每个节点包含三个模块,分别为节点端通讯模块、状态监控模块、变异与测试模块。
具体而言,服务器部分主要负责异常分析与记录。任务分配与启动模块完成对漏洞挖掘任务的拆解和切片,使任务适用于机器集群大规模并发执行,并通过服务器端通讯模块将任务划分的结果<任务描述,切片索引,任务执行指令>下发给机器集群;种子选择模块基于本发明中的知识向量空间,结合专家的人工选择,完成Fuzz的种子用力选择;异常分析模块和Crash分析模块均针对任务执行过程中的异常进行,经专家分析判断后,若是Crash属于程序或功能异常,则将异常信息传递给状态更新模块、数据库模块、位图监控及任务调整模块,进行任务执行状态的更新、异常信息的存储和任务执行的动态调整,然后通过服务器端的通讯模块将调整后的任务执行信息和指令下发到机器集群。
机器集群部分中的每个节点的变异与测试模块负责具体执行针对目标对象的模糊测试任务,并通过状态监控模块完成对任务执行现场及Crash等信息的记录,由节点端通讯模块实现与服务器端通讯模块的信息交互。
(1)并行任务分配与启动模块:该模块负责静态分析给定的目标程序,根据静态分析结果和并行节点数量进行Fuzz任务划分,执行启动命令并通过服务器端通讯模块发送给Fuzz节点集群,各个节点接收分配到的任务和启动命令开始执行模糊测试。
(2)状态更新模块:该模块主要对服务器及节点的工作及存活状态进行监控和更新,实时检测各个节点是否发生异常或离线,并更新系统的整体运行状态。
(3)数据库模块:该模块负责保存各种系统运行数据,主要有测试用例md5校验和、各个节点位图及总位图等。
(4)Crash分析模块:该模块主要管理漏洞挖掘过程中产生的crash的分析任务,接收来自专家的反馈结果。
(5)位图监控及任务调整模块:该模块负责收集所有的并行节点的位图,并且固定时间段内更新位图,同样维护着数据库中的一张表,该表保存该模块收集到的位图,并观察各个节点的负载情况,根据负载情况调整各个节点的Fuzz策略,实现并行节点间的负载均衡。
(6)种子选择模块:该模块负责生成Fuzz任务使用的种子用例,并收集来自Fuzz节点集群的运行信息,包括目标程序覆盖率、执行时间,以及新产生的crash数量等。
(7)异常分析模块:该模块负责处理各种突发状况,例如某个节点的测试任务意外停止,根据通讯模块反馈的信息分析属于何种状况,并确定执行何种故障处理策略。
(8)服务器端通讯模块:该模块负责收集来自Fuzz节点集群的各种运行信息,包括导致crash的测试用例、探测到新路径的测试用例、每个新产生的测试用例的md5校验和、程序覆盖路径位图、导致新发现所经历的变异策略及变异方法、待选字符集等。同时该模块还负责和服务器中其余模块的交互,提交来自节点集群的共享信息,收集来自服务器其余模块的反馈信息,并将反馈信息发送给节点集群。
(9)节点端通讯模块:该模块负责收集自身节点的运行信息然后发送给服务器,同时负责接收服务器的反馈信息然后推送给自身节点的变异与测试模块。另外,该模块还负责和状态监控模块的交互,并将状态信息发送到服务器。
(10)状态监控模块:该模块负责监控Fuzz任务的运行状况,例如目标程序覆盖率,运行异常信息、运行时长、新路径、crash等,并将这些信息传送给通讯模块,由通讯模块发送到服务器进行进一步的处理和决策。
(11)变异与测试模块:该模块是整个框架的具体测试模块,基于专家提供的种子文件、变异策略、变异目标等关键信息,执行具体的变异工作以及测试工作,产生各种共享信息,报告任务执行情况等。
人在回路的混合增强模块:
基于人的经验和分析结果,不断指导深度学习模型进行优化,使“人算计”和“机计算”相互适应,协同工作,提升深度学习模型执行任务的准确性,从而构成“1+1>2”的增强智能形态。传统智能漏洞挖掘技术基于预先定义的策略或学习的模型去执行漏洞挖掘流程,人机之间并没有设计用于模型优化的交互通道。本发明中选择马尔可夫决策过程作为强化学习的基础模型,从问题的不确定性和重要性方面进行判断,选出需要人工干预的问题集合,在漏洞挖掘过程中引入更加深入的人类智能,指导强化学习模型迭代优化。其过程如图4所示:
本发明中使用马尔可夫决策过程作为强化学习的基础模型。该模型可以被表示为一个四元组<S,A,P,R>,其中,S表示当前模型所处的状态(State);A表示模型进行的行为(Action)的选择;P表示从当前状态到下一状态的概率矩阵;R表示当前状态下,进行某一个或某一系列行为选择的回报函数,回报函数是对于模型采取一系列行为的反馈值,在强化学习模型训练过程中,回报函数引导了每一次模型的行为选择。由于行为选择的次数多,并且人工难以直观判断每一步行为选择是否合理,因此本发明中以问题为粒度,将需要判断的问题抛出给人工进行处理,即询问人的过程。为了确定什么样的问题需要人介入进行判断,需要考虑问题的两个方面,即问题的不确定性和问题的重要性。
(1)不确定性:在判断两个实体之间是否存在某一个关系时,给出属于[0,1]的概率值,并且认为当概率值更接近两端时(0或1),给出的结论更加准确。在漏洞挖掘场景下,当强化学习中的模型面对行为的选择时,给出的是选择各个行为的概率分布,最终扩展成为选择路径的概率分布。模型在进行路径选择时,其概率分布应当更加有差异性,即机器对选择或不选择某一路径更加具有把握。反之,对于各个路径的概率分布趋于平均的情况,可以认为机器难以区分其中哪一条路径为更佳选择。通过计算熵的方式来评估路径选择的概率分布情况。在路径的概率分布越平均时,熵的值越大,反之则越小。熵的计算公式定义如下:
式中,p(ti)表示选择路径ti的概率。
(2)重要性:除了不确定性之外,本发明将“重要性”也作为“是否将问题抛出给人判断”的衡量维度。对于某一个关系而言,在模型的学习过程中,某一个问题可能会被选中多次,从而在类别预测时它将提供更大的推理权重。如果该问题能够提供的推理信息量并不能和上述权重相匹配,则可能对最终的推理结果造成影响,而且这种影响将会比小权重的路径发生匹配错误的后果更加严重。因此,本发明将此类重要问题抛出,交给人工判断以保证它们能够提供更加准确的推理信息量。具体来说,给定一个关系r,通过模型获得多个推理路径ti∈T,重要性的评估方式为计算其中累积概率的最大值:
tselected=max(∑p(ti))
最后,综合不确定性和重要性两个维度的考虑,选择抛出给人工判断的问题的规则为:对于每一个关系,若H(T)>c,则选择该关系推理路径中的tselected提供给人进行判断,其中c为常数。
在人工进行判断时,人更容易理解问题和类别之间的推理关系并且给出判断。人对问题的判断可以通过对问题进行评分反馈给模型,该步骤即人解答问题的过程。如模型利用路径A、B试图推理出路径C时,根据上文提到的不确定性和重要性判断出该推理需要人工进行判断,模型即可将该推理过程反馈给人进行判断。人对于当前的推理是否合理给出1~5分的评分,为保证人工判断的准确性,某一组待判断的推理路径可能分配给1~3个人进行判断,最终取其平均分并将结果反馈给计算集群模型。在获得人工判断的评分结果后,将其加入到该路径的回报函数中,并重新训练模型的参数。具体来说,对于人工判断完成的路径,需要在原始回报函数中加入人工反馈项Rturnman。人工反馈项的定义如下:
Rturnman=(Score-3)3
式中:Score表示人对于该条推理路径的评分。对于人工判断完成的路径,其回报函数的定义如下:
Rture.N=Rsturn+λ4Rturnman
式中:Rsturn=λ1Rreachability+λ2Rlength+λ3Rdiversity表示除人工反馈以外的回报函数,λ1、λ2、λ3均为预设系数,与样本特征相关。Rreachability、Rlength、Rdiversity分别表示可达性度量、长度因素、多样性评分,如果该条路径被模型重复选中,则不再抛出给人工进行判断,而直接使用前一次的人工判断结果。最后,计算该条路径综合的回报函数,并将其用于更新模型的参数。
在上述过程中,模型根据人的评分调整推理的过程。在获取人工判断的评分结果后,模型将人工评分结果加入到该路径的回报函数中,并重新训练模型的参数。通过此方法实现人在回路的混合增强智能,从而增强了人在漏洞挖掘回路中的作用。该方案通过机器抛出问题,人解答问题的方式,实现人和机器的对话,并且这种对话是基于人和机器拥有共同的知识层次的基础之上进行的。把人的作用引入智能系统的计算回路,可以把人对模糊、不确定问题分析与响应的高级认知机制与机器智能系统紧密耦合,使两者相互适应,协同工作,形成双向的信息交流与控制,使人的感知、认知能力和计算机强大的运算能力和存储能力相结合,构成“1+1>2”的智能增强智能形态。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种针对IoT设备的智能防护方法、系统