一种基于WGAN模型的模糊检测种子集合生成方法及生成器与流程

文档序号:15462342发布日期:2018-09-18 18:28阅读:801来源:国知局

本发明涉及软件模糊检测技术领域,尤其涉及一种基于WGAN模型的模糊检测种子集合生成方法及生成器。



背景技术:

随着计算机技术和互联网信息技术的发展,各式各样的软件与系统被开发出来,软件的功能也变得越来越丰富。然而由于开发人员水平参差不齐、开发人员之间沟通不足、架构设计不合理等原因,软件中往往存在着会导致程序崩溃、甚至会受不法分子利用的漏洞。由于软件漏洞总是不可避免地存在,因而漏洞检测受到广泛关注。传统的漏洞检测方案是由富有经验的安全人员人工检查代码,然而该方案任务繁重,成本高,效率较低,检测漏洞的召回率也较低,大型系统难以用该方案完整测试。新兴的一种漏洞检测方案是由机器学习算法去检查代码,返回可能存在漏洞的代码位置。然而机器学习算法检测软件漏洞的方案存在着诸多限制与不足:该方案误报率较高;只能做到缩小检测范围的作用,最终仍需要安全人员人工检查是否存在漏洞;该方案的机器学习模型效果取决于训练集合是否完备、训练次数是否合理,实际过程中存在机器学习模型在训练集合上表现优良但在使用中表现不尽人意、训练过拟合欠拟合等情况。

有别于以上提到的漏洞检测方案,模糊测试是一种自动化的软件漏洞检测方法。模糊测试可以分成两大类型:(1)基于规范生成的模糊测试;(2)基于突变算法的模糊测试。基于规范生成的模糊测试根据人工提供的规范随机生成具有一定格式的种子文件,模糊测试将生成的种子输入被测软件,并监视被测软件是否出现预期外的异常情况。基于突变算法的模糊测试根据突变算法对人工输入的种子集合进行位变换、组合交叉等处理,获取到大量随机输入集合。模糊测试将集合输入被测软件,并监视软件是否出现预期外的异常情况。当模糊测试发现软件的新路径或者软件出现异常情况,它会将发现该新路径或触发该异常情况的输入文件保存在本地,并认为该输入文件为有价值的输入。模糊测试会将发现新路径或触发异常情况的输入文件加入种子集合,并以这些输入作为父代基因,基于突变算法生成后续输入。由于模糊测试的输入生成具有随机性,它并不会猜测哪个输入数据会导致程序崩溃,所以它的软件漏洞挖掘具有一定的盲目性。但是模糊检测是自动化的工具,借助当前计算机强大的计算能力,它将尽可能多的杂乱数据输入程序中,而记录下的发现新路径或触发程序崩溃的输入也为后续的漏洞挖掘提供了一定的启发性,效率高于上述提到的漏洞检测方案。其中AFL是受到广泛认可的基于突变算法的模糊测试工具之一,它漏洞挖掘速率极高。

研究表明,选择高质量的种子集合有助于提高基于突变算法的模糊测试的效率。而且高质量的种子集合具有可迁移性,对于使用同一种输入格式的程序A和B,如果某一种子集合可以提高模糊测试对于程序A的漏洞挖掘效率,那么该种子集合也能提高对于程序B的漏洞挖掘效率。然而当前并没有快速的产生高质量种子集合的方法,虽然存在一些启发式的种子选择方法,但是这些方法效果有限,并没有明显优于随机选择种子集合。所以,学术界与工业界都缺少合适的获取高质量种子集合的方法。



技术实现要素:

本发明提供了一种基于WGAN模型的模糊检测种子集合生成器,该生成器可以生成任意输入格式的模糊检测种子集合,获取的模糊检测种子集合能大大提高基于突变算法的模糊检测的漏洞挖掘效率。

本发明提供了如下技术方案:

一种基于WGAN模型的模糊检测种子集合生成器,包括:

训练集合获取模块,具有基于突变算法的模糊检测工具,所述的模糊检测工具对普通输入进行随机修改得到随机输入,再通过所述随机输入检测多个输入格式相同的程序,将发现程序新路径或触发程序异常情况的随机输入作为WGAN模型的训练集合;

二进制转矩阵模块,将训练集合由二进制形式转换成WGAN模块可以学习的矩阵形式;

WGAN模块,包含WGAN(Wasserstein GAN)模型,以转换成矩阵形式的训练集合为真实数据集,将WGAN模型训练至收敛,通过训练后的WGAN模型生成矩阵形式的模糊检测种子集合;

矩阵转二进制模块,将WGAN模块生成的模糊检测种子集合由矩阵形式转换为二进制形式。

模糊检测工具以普通输入作为种子,通过对普通输入进行位变换、组合交叉等随机修改,得到大量的随机输入,这些随机输入大多为格式损毁数据,而这些格式损毁数据容易发现程序的新路径或异常情况,提高模糊检测的漏洞挖掘效率。

优选的,所述的模糊检测工具为AFL(American Fuzzy Lop)模糊测试工具。

AFL(American Fuzzy Lop)模糊测试工具是受到广泛认可的基于突变算法的模糊测试工具之一,漏洞挖掘速率高,可以挖掘多种软件的漏洞,具有优秀的可扩展性。

所述的WGAN模型包括:

生成器,学习真实数据的特征,并生成近似的虚假数据,将真实数据和虚假数据传输给判别器;

判别器,区分真实数据和虚假数据。

WGAN模型是一种生成对抗网络模型,它主要由两个部分组成:生成器和判别器。生成器会学习真实数据的特征,并生成近似的虚假数据,然后将真实和虚假的数据传输给判别器判断。判别器判断两组数据哪组是真实的,哪组是虚假的。判别器和生成器交替训练,互相提高,最终将达到纳什平衡:生成器生成接近真实的虚假数据,判别器无法区分真实数据和虚假数据。

WGAN模型训练完成后,其生成器可以生成大量的与真实数据高度相似的虚假数据。

以WGAN模型生成的大量高质量的模糊检测种子集合作为种子,采用基于突变算法的模糊检测方法对程序进行检测,可大大提高漏洞的挖掘效率,并且生成的模糊检测种子集合具有较好的可迁移性,对相同输入格式的程序均具有较好的测试效果。

本发明还公开了采用所述的模糊检测种子集合生成器生成模糊检测种子集合的方法,包括以下步骤:

(1)通过基于突变算法的模糊检测工具对普通输入进行随机修改得到随机输入,再通过所述随机输入检测多个输入格式相同的程序,将发现程序新路径或触发程序异常情况的随机输入作为WGAN模型的训练集合;

(2)将所述的训练集合由二进制形式转换成WGAN模型可以学习的矩阵形式;

(3)以转换成矩阵形式的训练集合为真实数据集,将WGAN模型训练至收敛,通过训练后的WGAN模型生成矩阵形式的模糊检测种子集合;

(4)将所述的模糊检测种子集合由矩阵形式转换成二进制形式。

优选的,步骤(1)中,所述的模糊检测工具为AFL模糊检测工具。

以所述的普通输入作为种子,采用AFL模糊测试工具对所述程序分别进行测试,将发现程序新路径或触发程序异常情况的随机输入作为训练WGAN模型的训练集合。

优选的,步骤(2)包括:

(2-1)将所述的训练集合以二进制形式打开,按base64编码规则转换二进制文件;

(2-2)以每六个字符为一个字符串,以65进制将字符串转换成数字,最终将编码文件转换成矩阵中的数字,字符串不足时补零;

(2-3)对矩阵的元素进行归一化操作,使元素值处于[0,1)区间。

优选的,步骤(3)包括:

(3-1)以转换成矩阵形式的训练集合为真实数据集,交替训练WGAN模型的生成器和判别器,直至WGAN模型收敛;

(3-2)由训练后WGAN模型的生成器生成矩阵形式的模糊检测种子集合。

优选的,步骤(4)包括:

(4-1)对WGAN模型生成的矩阵的元素进行反归一化操作;

(4-2)根据base64编码,将矩阵的数字元素转换为字符串,以二进制形式进行保存。

与现有技术相比,本发明的有益效果为:

1)本发明的模糊检测种子集合生成器生成的虚假数据与真实数据高度近似,以生成器生成的虚假数据作为种子集合,可以提高基于突变算法模糊测试的漏洞挖掘效率;

2)本发明的模糊检测种子集合生成器生成的虚假数据具有可迁移性,可以提高相同输入类型的软件的模糊测试漏洞挖掘效率。

附图说明

图1为本发明的模糊检测种子集合生成器的架构及工作流程示意图;

图2为为训练集合获取模块的工作流程示意图;

图3为二进制转矩阵模块的工作流程示意图;

图4为WGAN模块的工作流程示意图;

图5为矩阵转二进制模块的工作流程示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步详细描述,需要指出的是,以下所述实施例旨在便于对本发明的理解,而对其不起任何限定作用。

如图1所示,模糊检测种子集合生成器包括训练集合获取模块、二进制转矩阵模块、WGAN模块和矩阵转二进制模块。

训练集合获取模块的作用是获取高质量输入作为训练WGAN模块中WGAN模型的训练集合,其工作流程如图2所示,具体步骤如下:

(1)收集同一输入格式的程序A、B等,收集符合程序A、B等输入格式要求的普通输入;

(2)以收集的普通输入作为种子集合,采用AFL模糊测试工具测试程序A、B等,将发现程序新路径或触发程序异常情况的高质量输入作为WGAN模型的训练集合。

二进制转矩阵模块的作用是将训练集合转换成WGAN模型可以学习的矩阵数据,其工作流程如图3所示,具体步骤如下:

(1)将训练集合以二进制形式打开,按base64编码规则转换二进制文件;

(2)以每六个字符为一个字符串,以65进制将字符串转换成数字,最终编码文件转换成矩阵中的数字,字符串不足时补零;

(3)对矩阵的元素进行归一化操作,使元素值处于[0,1)区间。

WGAN模块的作用是根据提供的训练集合的矩阵数据对WGAN模型进行训练,由训练后的WGAN模型生成高质量虚假矩阵数据,作为模糊测试种子集合,其工作流程如图4所示,具体步骤如下:

(1)以矩阵形式的训练集合为真实数据集,交替训练WGAN模型的生成器和判别器,直至WGAN模型收敛;

(2)由训练后WGAN模型的生成器生成矩阵形式的模糊检测种子集合。

矩阵转二进制模块的作用是将WGAN模型生成的矩阵数据,转换成可以作为模糊测试输入的二进制文件,其工作流程如图5所示,具体步骤如下:

(1)对矩阵的元素进行反归一化操作;

(2)根据base64编码,对矩阵的数字元素转换为字符串,以二进制形式保存在本地。

以上所述的实施例对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的具体实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。

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