SmartSeed Smart Seed Generation for Efficient Fuzzing

SmartSeed: Smart Seed Generation for Efficient Fuzzing

摘要

模糊测试是一种自动检测应用程序漏洞的方法。对于基于遗传算法的fuzzing,它可以改变用户提供的种子文件,以获得大量输入,然后使用这些输入测试客观应用程序,以触发潜在的崩溃。已有文献表明,种子文件的选择是影响模糊处理效率的关键。然而,目前的种子选择策略似乎并不比随机选择种子文件更好。因此,在本文中,我们提出了一个新的和通用的系统,称为SmartSeed,以生成种子文件,以实现高效的模糊。具体来说,SmartSeed是基于机器学习模型设计的,用于学习和生成高值二进制种子。我们在12个输入格式为mp3、bmp或flv的开源应用程序上评估SmartSeed和American Fuzzy Lop (AFL)。我们还将SmartSeed与不同的fuzzing工具结合起来,以检查其兼容性。通过大量的实验,我们发现SmartSeed有以下优点:首先,它只需要几十秒就可以产生足够多的高价值种子。其次,它可以生成多种输入格式的种子,对于大多数具有相同输入格式的应用程序,可以显著提高模糊性能。第三,SmartSeed兼容不同的fuzzing工具。总的来说,我们的系统发现超过两倍的唯一崩溃和5040额外的唯一路径比现有的最佳种子选择策略评估12个应用程序。从SmartSeed发现的崩溃中,我们发现了16个新的漏洞,并收到了它们的CVE id。索引词- fuzzing,漏洞检测,种子生成。

I、INTRODUCTION

在这篇文章中,我们专注于为fuzzing提供一个更好的种子集,以便发现更多的崩溃。如今,现代应用程序越来越大,越来越复杂,这使得模糊工具很难根据需要进行调整。为了提高fuzzing的效率,研究人员通常会从两个方向开发改进策略:设计更好的fuzzing工具和使用更好的fuzzing种子组。根据第一个方向,有很多工作专注于设计更好的工具或改进现有的fuzzing工具。提高fuzzing工具效率的第二个方向是使用更好的种子集。

因此,为了解决在没有高度结构化输入格式的情况下如何为应用程序获得更好的种子集的问题,我们提出了以下启发式问题:

Q1:我们能否快速有效地产生有价值的种子?

正如我们前面所讨论的,许多现有的种子选择策略都是缓慢的,这不适用于模糊。更重要的是,现有的解决方案在许多情况下都不能产生有效的种子。因此,为了解决这些限制,我们的主要目标不是研究如何选择种子,而是研究如何利用最先进的机器学习技术,以快速的方式自动生成有效的种子。

Q2:我们能以一种稳健的方式产生有价值的种子吗?

基于假设我们已经找到了一个快速和有效的种子生成策略,它仍然是低效如果SmartSeed只能为一些特定的输入格式生成有价值的种子或我们必须重新培训模型每次我们想模糊的一个新的应用程序相同的输入格式。因此,我们的第二个目标是设计一个健壮的种子生成系统。它应该能够为多种输入格式生成有价值的种子。此外,对于任何类型的输入格式,我们只需要训练模型一次。然后,该模型生成的文件可以提高使用该输入格式的其他应用程序的模糊性能。

Q3:我们能以兼容的方式产生有价值的种子吗?

对于大多数fuzzing情况,如果我们的系统只能为特定的fuzzing工具生成有价值的种子,这是出乎意料的。因此,为了提高兼容性,我们的目标是设计一个种子生成策略,可以结合不同的fuzzing工具和提高它们的性能。

针对上述启发式问题,本文提出了一种名为SmartSeed的新型种子生成系统,为fuzzing工具提供较好的种子集,如图1所示。
在这里插入图片描述

基本上,SmartSeed的工作流程包括三个阶段。

(1)准备。SmartSeed是一个基于机器学习的系统。要引导SmartSeed,我们需要准备必要的训练数据。具体来说,我们收集了一些常规的文件,并利用常用的模糊工具如美国模糊扶环(AFL)对一些应用程序进行模糊处理。然后,我们收集触发唯一崩溃或新路径的输入文件作为训练数据。

(2)模型建设。为了使SmartSeed在实践中易于扩展,我们提出了一种转换机制,将原始训练数据编码为通用矩阵,然后利用这些矩阵构建生成模型,进行种子生成。利用生成模型,我们生成有效的文件作为种子。

(3)Fuzzing。利用构建的生成模型生成的种子,我们使用fuzzing工具(例如,AFL)来发现客观应用程序的崩溃。

II、SMARTSEED

A. System Architecture

SmartSeed的核心思想是构建一个生成模型。 然后,我们使用此模型快速生成有价值的文件作为模糊工具的输入种子集。

在这里插入图片描述

如图2所示,SmartSeed的整个架构可分为4个程序:

(1)训练数据收集:我们引入一个衡量输入文件值的标准,并提出一种获取SmartSeed训练集的方法(部分)II-B)。

(2)原始数据转换:为了处理具有不固定格式或不固定文件大小的文件,我们将原始训练数据的二进制文件转换为统一类型的矩阵(第II-C节)。

(3)模型构建:以矩阵作为训练数据,构建基于Wasserstein生成对抗网络的种子生成模型(第II-D节)。

(4)逆向转换:基于生成模型,我们生成新的矩阵并将它们转换为适当的输入文件,这是程序(2)(第II-E节)的逆过程。

在我们的系统中,使用的模糊测试工具可以是灵活的,即SmartSeed可以与大多数现有的基于突变的模糊测试工具结合使用。 由于AFL是现有效率最高的模糊测试工具之一,因此默认情况下,我们选择AFL作为我们实现中的模糊测试工具。

B. Training Data Collection

为了构建用于生成有价值的种子文件的机器学习模型,我们需要首先获得初始训练集。当然,我们希望确保训练集中的输入文件真正有价值。否则,SmartSeed可能无法学习“有价值的输入文件”的有用功能,并进一步生成此类文件。因此,我们首先澄清有价值的输入文件。具体来说,在我们的实现中,我们将有价值的文件定义为触发唯一崩溃或应用程序的唯一路径的输入文件。原因如下:(1)由于模糊测试的最终目标是检测更多崩溃,如果输入文件可以触发客观应用程序的独特崩溃,则认为输入文件是有价值的; (2)根据现有研究,增加模糊路径的覆盖范围和深度更有可能增加探索崩溃的次数。因此,从这个角度来看,触发新路径的文件也是有价值的。

直观地,我们可以使用现有的种子选择策略来选择一些有价值的输入文件作为训练集。然而,根据现有的研究[1]和我们的实验结果,目前的种子选择策略似乎是不可靠的。然后,我们意识到像AFL这样的模糊测试工具将存储触发独特崩溃或路径的输入文件,这些文件完全符合我们的需求。因此,我们有以下培训数据收集策略:我们可以首先使用从Internet收集的常规输入文件来使用相同的输入格式模糊应用程序。然后,我们收集有价值的输入文件,这些文件触发这些应用程序的唯一路径或独特崩溃,作为SmartSeed的训练集。

需要注意的是,上述训练集的构建并不是SmartSeed在实践中的限制。首先,确定有价值的输入文件的标准是它可以触发崩溃或新路径,这在实践中可以由AFL轻松实现。其次,对于具有相同输入格式的应用程序,例如处理mp3的应用程序,我们可以同时模糊多个应用程序以方便训练集构建过程,同时增加训练集中输入文件的多样性。第三,由于我们可以并行运行许多模糊测试程序,我们可以进一步加快训练集收集过程,例如,我们可以在一周内收集超过20,000个有价文件,用于一种输入格式。因此,我们可以在实践中轻松快速地构建SmartSeed训练集

通过这种方式收集训练集,我们还具有以下优势:

我们可以准确地评估输入文件的值。 训练集中的输入文件当然可以检测到唯一路径或触发某些应用程序的唯一崩溃。 因此,它们具有有用的学习功能。

在模糊测试过程中,我们发现触发崩溃或新路径的许多文件的格式都已损坏。 我们分析原因是文件是根据所采用的遗传算法随机变异的,并且似乎被破坏的文件更有可能触发唯一的崩溃和路径。 但是,很难从Internet收集大量损坏的文件,而SmartSeed可以训练以按预期生成许多损坏的文件。

C. Raw Data Conversion

为了构建通用种子生成模型,我们提出了一种机制,将训练集中的原始输入文件转换为统一类型的矩阵。进行这种转换的原因如下。

首先,我们的目标之一是使SmartSeed处理多种输入格式和不固定的文件大小。然而,为不同种类和不同尺寸的文件调整数据读取模式是不方便的。因此,我们应该找出一种从训练集中读取数据的统一方法。其次,训练集中许多文件的格式已损坏。诸如将bmp图片文件作为三维矩阵读取的正常读取方式可能在许多应用场景中不起作用。第三,基于机器学习算法更好地处理矩阵的定量值而不是某些随机值类型的知识,我们期望找到一种可以将多种类型的文件转换为统一类型的矩阵的方法。最后,我们期望以二进制形式的训练文件表达魔术字节。因为通过这种方式,机器学习模型将更容易学习控制代码执行路径的魔术字节的特征。因此,文件应以二进制形式读取,并期望转换为统一矩阵。

下面,我们介绍原始训练数据转换的主要步骤,如图3所示。

在这里插入图片描述

(1)由于所有文件都可以二进制形式读取,我们可以读取任何类型文件的二进制形式并获得二进制字符串。
(2)为了处理如何识别二进制字符串结束的问题,我们用Base64对字符串进行编码。因此,我们有由64种字符和“=”形成的字符串,例如图3中所示的字符串。
(3)现在,由于字符串可能有65个不同的字符,为方便起见,我们将Base64和“=”的字符转换为数字(从0到64)。因此,我们获得了一串数字,如图3所示。这种转换的编码机制如图4所示。
(4)为了节省矩阵中元素的数量,我们将数字串的每六个数字转换为大量的十进制数。然后,我们将十进制系统的数量标准化为[0,0.75418890624](因为65*6-1= 75418890624),以确保模型训练的准确性和效率。最后,如果存在空元素,则在矩阵的末尾添加0,如图3所示。

由于较大的数字将以科学记数法形式存储并失去一些准确性,因此矩阵的一个元素只能在十进制系统中存储一个数字,该数字最多从六个数字(从0到64)转换。 但是,如果文件大小在实际应用场景中较小,则用户可以选择小于6的数字。 请注意,将数字转换为一个较大的数字越少,机器学习模型就越容易学习输入文件的功能。 我们在实验中转换了6个数字,以测试机器学习模型最困难的情况。

利用上述方法,我们可以将具有损坏格式或未固定文件大小的原始文件转换为统一类型的矩阵。 这可以显着提高SmartSeed的可扩展性和兼容性。

D. Model Construction

最好的现有生成模型之一是生成性对抗网络(GAN)模型,自2014年以来已被广泛用于无监督学习。 GAN是一个由生成模型和判别模型组成的新框架。 生成模型试图生成与训练集中的实际数据类似的伪数据,而判别模型试图将伪数据与真实数据区分开。 两个模型交替地一起工作以相互训练并进一步相互改进。 结果,生成模型将生成太真实的数据,以通过判别模型来区分。 通常,GAN提供的生成模型可以生成比其他算法更真实的数据。 但是,训练GAN模型是不稳定的。 GAN还存在许多问题,例如模型崩溃。Radford等。 尝试了多种机器学习方案组合,为GAN构建更好的生成和判别模型。他们提出了深度卷积GAN(DCGAN)模型。 DCGAN可以生成比标准GAN更真实的数据,并且更容易进行培训。 然而,它仍然存在许多问题,包括模型崩溃。

2017年,Arjovsky等人。介绍了Wasserstein GAN(WGAN)模型。与其他GAN模型不同,WGAN提高了学习的稳定性。 训练WGAN模型也更容易。 此外,WGAN可以解决大多数应用场景中GAN模式崩溃的问题

因此,出于我们的目的,我们使用WGAN来学习有价值文件的特征,然后生成有价值的种子文件。我们的选择还具有以下优点。首先,WGAN可以自己学习训练集的功能。因此,我们不需要注意特征选择,这非常节省时间。另一个优点是我们可以自由选择合适的机器学习模型作为WGAN的生成模型和判别模型。我们分析了多层感知器(MLP)更多地关注矩阵中的每个定量值,而卷积神经网络(CNN)更关注矩阵的全局特征。然后,为了构建更好的模型,我们测试两个神经网络模型的性能。对于我们的应用,MLP确实比CNN更好地作为WGAN的生成和判别模型。它还需要较少的培训时间。因此,我们选择MLP作为SmartSeed中的模型。现在,基于收集的训练数据,我们可以训练有价值的种子生成的生成模型。

注意,WGAN的详细描述可以在[10]中找到。由于我们在本文中的重点是构建一个基于GAN的高效模糊测试框架并进一步证明其有效性,因此我们将开发改进的GAN模型的研究留作未来的工作。此外,SmartSeed的用户可以根据应用场景选择替代机器学习模型作为生成模型。

E. Inverse Conversion

在本小节中,我们将介绍如何使用SmartSeed的生成模型来获得有效的输入种子集。 由于SmartSeed的训练集是许多矩阵,因此训练生成模型以生成类似的矩阵。 要获取用于模糊测试的二进制输入文件,我们必须将生成的矩阵转换为二进制文件。 因此,我们与第II-C节中的上述程序相反。

具体而言,第一步是将矩阵的[0,0.75418890624]元素恢复为大量的十进制系统。 其次,将十进制系统的每个数字转换为六个数字(从0到64),即数字字符串,如图3所示。然后,将数字(从0到64)转换为Base64的字符和“= “即,如图3所示的字符串。最后,将Base64的字符串解码为二进制文件并将其存储在本地。 因此,我们获取以下模糊测试的输入文件。

III. IMPLEMENTATION & EVALUATION

A. Datasets

为了评估SmartSeed的性能,我们使用了12个开源linux应用程序,输入格式为mp3、bmp或flv,如表I所示

首先,它们可以被没有高度结构化格式的文件模糊化,这是基于遗传算法的模糊化和SmartSeed的重点。

其次,这些应用程序是流行的、重要的开源程序。

第三,这些应用程序具有不同的代码逻辑和功能,因此具有足够的代表性

在这里插入图片描述

B. SmartSeed Implementation

要实现SmartSeed,在这里插入图片描述
第一步是收集训练集。正如我们前面提到的,我们模糊一些应用程序并收集有价值的输入文件。考虑到训练的效率,如果训练文件的大小太大,我们就必须使用一个很大的矩阵来存储文件,这就会导致训练时间变长。相反,对于mp3和flv等格式的有意义的多媒体数据,很难收集小文件。更重要的是,小文件可能没有足够的功能来进行机器学习。因此,我们需要为所使用的培训文件确定一个合适的大小。

考虑到训练的效率和训练的有效性,我们倾向于使用小于17KB的文件来构建SmartSeed的生成模型。为了容纳17KB或更小的文件,64 × 64矩阵就足够了(其最大存储空间为18KB)。另一方面,SmartSeed很难从太稀疏的矩阵中学习有意义的特征,例如,一个超过35%的元素为空的矩阵,因为它们携带的信息没有那么有价值。因此,我们最终决定收集有价值的大小在12KB到17KB之间的输入文件作为我们实现中的训练数据。这种设置可以保证训练速度快,便于收集有价值的文件和表I的客观应用。目标同时确保足够的集合信息携带,即在效率和效用之间寻求平衡。

注意,易于扩展是SmartSeed的优势之一。训练集中输入文件的大小在实际应用中是可以调节的。如果用户希望使用更小的文件作为训练集,他们可以将更少的Base64字符转换为十进制数或使用更小的矩阵。另一方面,如果用户想要使用更大的文件来训练SmartSeed,他们可以使用更大的矩阵来存储Base64字符串。

现在,我们已经准备好收集训练数据了。收集过程在16台具有Intel i7 CPU、4.5GB内存和Ubuntu 16.04 LTS系统的相同虚拟机上进行,每种输入格式持续一周。对于mp3格式的应用,我们使用AFL来模糊mp3gain和ffmpeg,并收集20,646个有价值的输入文件,大小为12KB到17KB作为训练集。对于bmp,我们使用AFL来模糊magick和bmp2tiff。然后,我们收集24,101个输入文件作为训练集。对于flv格式的应用,我们使用AFL对avconv和flvmeta进行模糊。然后,我们收集21,688个12KB到17KB之间的输入文件,这些文件发现了新的路径或惟一的崩溃。

根据采集到的训练数据,构建了SmartSeed的原型。SmartSeed的核心功能在Python 2.7中实现。WGAN模型的代码在Pytorch 0.3.0中实现。我们使用Adam作为WGAN模型的优化算法。然后,我们进行多次测试以确定超参数,如生成模型训练后需要训练判别模型多少次。在训练过程中,我们将优化算法的学习率从0.5 × 10−3逐英寸降低到0.5 × 10−12英寸。我们花了大约38个小时,在一台运行2个2.40GHz Intel Xeon E5-2640 v4 cpu、64 GB内存、4TB硬盘和一个GeForce GTX 1080TI GPU卡的服务器上训练生成模型10万次。请注意,其他人可能不需要训练模型100,000次。

C. Effectiveness

**1)比较策略😗*为了比较SmartSeed与最先进的种子选择策略的性能,我们实施了以下方法:

Radom. 在这种方案下,我们从通常从互联网上下载的常规输入文件中随机选择文件。由于这是实践中最常见的种子选择策略,所以我们在实验中采用随机作为基准种子策略。

AFL-result。在该方案下,我们从保存的AFL输入文件中随机选择种子,这些文件也是用于训练SmartSeed的文件。由于这些文件肯定会在fuzzing过程中触发唯一的崩溃或新的路径,它们可能会作为fuzzing工具的种子集产生出色的性能。因为我们的系统是从这些文件中学习的,所以AFL-result可以作为SmartSeed的基线。

peachset**。**fuzzing框架Peach提供了一个名为MinSet[28]的种子选择工具,其工作流程如下:(1)MinSet检查从互联网上收集到的全集中每个文件的覆盖情况;(2) 7文件的覆盖率由高到低排序;(3) MinSet将种子集初始化为空集,用peachset表示;(4) MinSet按顺序检查文件的覆盖率。如果一个文件提高了peachset的覆盖率,那么该文件将被添加到peachset中。

hotset**。**hotset包含的文件,发现最独特的崩溃和路径在t时间[1]。要构建hotset,首先,使用从互联网上收集到的每个文件作为初始种子集,使应用程序模糊t秒。其次,按照发现的崩溃和路径的数量降序对文件进行排序。第三,选择最上面的k个文件组成热集。在我们的实验中,我们对每个文件模糊了240秒。

AFL-cmin**。**为了选择更好的种子集,AFL提供了一个名为AFL-cmin的工具。AFL-cmin的核心思想是过滤掉检查已经发现的路径的冗余文件。AFL-cmin试图找到完整集合的最小子集,它仍然具有与完整集合相同的覆盖范围。

**2)**结果

种子生成速度**.** 首先,我们评估不同策略的种子生成速度。结果见表二,我们从表二中得到以下观察结果。

(1)random是选择种子最快的,并且是可扩展的。

(2) SmartSeed使用生成模型来生成种子,这也是非常快速和可扩展的。生成100个种子文件只需要12秒,生成2000个种子文件需要240秒,时间消耗和生成的种子数量呈线性增加关系。

(3)以覆盖度为基础的种子选择策略桃树集和AFL-cmin相对较慢。

(4) hotset是非常缓慢的.

在这里插入图片描述

Fuzzing****效果。现在,我们评估不同策略获得的种子的有效性。在我们的实验中,我们使用每种种子生成/选择策略来获得一个包含100个文件的种子集,然后将种子集投给AFL。

(1) 对于发现唯一崩溃,SmartSeed是非常有效的,在几乎所有的评估场景中表现最好。

(2) 对于触发唯一路径,SmartSeed也是非常有效的。在12个被评估的应用程序中,SmartSeed在8个应用程序中发现最多的路径,在1个应用程序中发现第二多的路径,在3个应用程序中发现第三多的路径。

(3) 对于mpg123 和 magick,SmartSeed+AFL是唯一能够在评估的策略中发现崩溃的策略。

(4) 对于random, AFL-result, peachset, hotset和AFL-cmin,很难说哪个更好。总的来说,它们发现的唯一崩溃和路径分别在[340,490]和[11000,16500]左右。在更多的场景中,peachset的性能似乎比其他的要好。

总之,与最先进的种子选择策略相比,SmartSeed更稳定,产生更好的性能。

在这里插入图片描述

D. Compatibility

在本小节中,我们将研究SmartSeed的兼容性和可扩展性。具体来说,我们将SmartSeed与现有的流行fuzzing工具结合起来,评估其性能。

(1) Fuzzing工具:在本次评估中,除了AFL,我们还考虑了以下Fuzzing工具。

AFLFast

Honggfuzz

VUzzer

2)结果:为了与SmartSeed进行比较,我们还考虑将random和AFL-result与所考虑的fuzzing工具相结合。具体来说,我们首先使用每种种子策略获得100个种子文件,然后用这些种子喂食每个fuzzing工具。对于客观应用,我们使用mpg123, mpg321, magick, sam2p, ps2ts和mp42aac。所有fuzzing评估持续72小时,并在与第三- c节相同设置的相同虚拟机上进行.

在这里插入图片描述

总之,SmartSeed显示出良好的兼容性,当结合不同的fuzzing工具。同时,SmartSeed生成的种子可以显著提高现有流行的fuzzing工具的性能。

E. Vulnerability Results

在这里插入图片描述

IV. FURTHER ANALYSIS

为了找出SmartSeed优于其他种子选择策略的原因,我们使用了t-SNE[30],这是可以将类似数据聚集在一起的最好的降维算法之一,以可视化分布。我们分析了不同的种子选择策略产生的输入种子的相似分布,以及这些种子产生的变异文件,这是一个了解模糊性能的新角度(更多细节在补充文件中给出)。

A. Execution Count

以上分析引出了一个有趣的见解。认为执行速度更快的种子文件可以发现更多独特的崩溃或路径,这可能是一种误解。尽管这些种子可以生成更多的文件并测试更多的目标应用程序,但是大多数生成的文件可能会执行已知的路径,因此可能什么也没有发现。因此,有价值的种子更需要有效的绒毛,而不是快速执行的。

B. Generation Analysis

基于我们的结果和分析,我们有另一个有趣的洞见:最大实现代和种子策略的覆盖绩效之间很可能存在正相关。这可以解释为什么SmartSeed的覆盖率显著提高。请注意,许多研究人员做了大量的工作,以增加覆盖率,以发现更多的事故。现在我们知道了一个事实,一套更好的种子也可以提高覆盖率。

V. DISCUSSION

在本节中,我们从第一节中提出的三个启发式问题出发,对SmartSeed进行了一些讨论,然后,我们评述了本文的局限性和未来的工作。

Q1:我们能否快速有效地产生有价值的种子?

从表II可以看出,SmartSeed的种子生成过程是线性扩展的,并且速度很快。它只需要几十秒就可以为流行的fuzzing工具生成足够的种子文件。此外,正如我们在第三节中评估的,当模糊多种实际应用时,SmartSeed显著优于现有的最先进的种子选择策略。因此,SmartSeed可以像预期的那样,快速有效地产生有效的种子。

Q2:我们能以一种稳健的方式产生有价值的种子吗?

如第二节所示,SmartSeed被设计成一个通用系统,为应用程序生成有价值的种子,而不需要高度结构化的格式。我们还实现了这个系统来为不同格式的应用程序生成种子。如第三节所示,一旦构建了SmartSeed的生成模型,就可以用它来模糊许多相同/相似格式的应用,同时,它的性能显著优于目前最先进的种子选择技术。因此,根据我们的评估,SmartSeed可以以稳健的方式生成有价值的种子。

Q3:我们能以兼容的方式产生有价值的种子吗?

如第三节所示,SmartSeed很容易与现有流行的fuzzing工具兼容。此外,在大多数情况下,它们的模糊性能也可以得到改善。因此,SmartSeed很容易扩展和兼容。由于篇幅的限制,我们在补充文件中说明了本文的局限性和未来的工作。

VI. CONCLUSION

进的种子选择技术。因此,根据我们的评估,SmartSeed可以以稳健的方式生成有价值的种子。

Q3:我们能以兼容的方式产生有价值的种子吗?

如第三节所示,SmartSeed很容易与现有流行的fuzzing工具兼容。此外,在大多数情况下,它们的模糊性能也可以得到改善。因此,SmartSeed很容易扩展和兼容。由于篇幅的限制,我们在补充文件中说明了本文的局限性和未来的工作。

VI. CONCLUSION

在本文中,我们提出了一个新的无监督学习系统SmartSeed来生成有价值的输入种子文件用于模糊。与最先进的种子选择策略相比,当我们使用AFL模糊12个不同输入格式的开源应用程序时,SmartSeed发现了608个额外的唯一崩溃和5040个额外的唯一路径。然后,我们结合SmartSeed和不同的fuzzing工具。评价结果表明,SmartSeed具有良好的配伍性和配伍效果。为了进一步了解SmartSeed的性能,我们对SmartSeed产生的种子进行了更多的分析,并提出了一些有趣的发现,以启发我们对有效fuzzing的认识。通过SmartSeed在9个应用程序上发现了23个独特漏洞,并获得了16个未发现漏洞的CVE id。最后,我们将开放SmartSeed系统的源代码,这将有助于未来的fuzzing研究。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值