跳到主要内容

PosFuzz:使用有效位置分布增强灰盒模糊

摘要

基于变异的灰盒模糊化是安全漏洞发现中最流行的技术之一,为了提高其效率和有效性,人们进行了大量的研究工作。基于变异的灰盒模糊化通过对输入种子进行变异来生成输入案例,即对随机选择的种子变异位置应用一系列变异算子。然而,现有的富有成果的研究工作主要集中在调度变异算子上,使得变异位置的调度成为模糊化效率的一个被忽视的方面。本文提出了一种新的灰盒模糊化方法PosFuzz,该方法基于变异位置的历史性能进行统计调度。PosFuzz使用有效位置分布的概念来表示输入的语义并指导突变。PosFuzz首先利用Good-Turing频率估计来计算每个突变算子的有效位置分布。然后,它利用不同突变阶段的两种采样方法从分布中选择位置。我们在AFL、AFLFast和MOPT之上实现了PosFuzz,分别称为Pos-AFL、-AFLFast和-MOPT,并在UNIFUZZ基准(20个广泛使用的开源程序)和LAVA-M数据集上进行了评估。结果表明,在相同的测试时间预算下,Pos-AFL、-ALFast和-MPT在代码覆盖率和漏洞发现能力方面都优于同行。与AFL、AFLFast和MOPT相比,PosFuzz的边缘覆盖率增加了21%,平均路径数增加了133%。它还平均触发275%以上的独特错误。

介绍

基于变异的灰盒模糊化(https://lcamtuf.coredump.cx/afl/;https://llvm.org/docs/LibFuzzer.html;https://honggfuzz.dev/; Li等人。2018; Liang等人。2018; Manès等人。2019; 谢列布里亚内2017)是发现现代软件漏洞的最流行方法之一。特别是,基于变异的灰盒模糊化将其模糊循环组织为三个流水线阶段。种子选择从种子测试用例池中选择一个种子,该测试用例池由用户提供的输入用例初始化,并在模糊化过程中进行相应更新。所选种子被分配给能量基于其长度、改进的覆盖范围和执行时间的因子。输入种子突变使用变异调度器。它根据能量种子。测试将生成的输入提供给目标程序,检测其异常行为,并记录适当的运行时信息,即代码覆盖率,为种子池更新和输入变异提供提示。

相关工作

为了提高模糊化的性能,即发现漏洞或获得目标程序更高的代码覆盖率的能力,已经提出了许多跨越种子选择和输入种子变异的优化方法。

种子选择卓有成效的研究集中在种子选择阶段,要么采用更好的选择策略(Böhme等人2016; Gan等人。2018; Rawat等人。2017; Böhme等人。2017; Lemieux和Sen2018; 佩齐奥斯等人。2017; Chen等人。2018; 她等人。2022; Herrera等人。2021)或利用不同的运行时信息(Xu等人。2017; Liang等人。2018; 纳吉和希克斯2019; Chen等人。2019; Zong等人。2020; Yun等人。2018). AFL公司(https://lcamtuf.coredump.x/afl/)和Libfuzzer(https://llvm.org/docs/LibFuzzer.html)利用优先级队列在模糊处理期间调度输入种子。它们都依赖边缘覆盖率作为衡量标准来确定输入种子的优先级并更新种子池。AFLFast(Böhme等人2016)使用马尔可夫链模型优化输入种子的调度,以确定能量每个种子的得分。AFLGo(Böhme等人。2017)将更多能量分配给距离目标位置更近的种子,反之亦然,这称为功率调度程序。CollAFL(Gan等人。2018)提出了一种新的路径敏感种子选择策略,该策略以精确的覆盖统计反馈为指导,能够有效地减少路径冲突。Vuzzer(Rawat等人。2017)优先考虑不太可能触发错误处理基本块的输入种子,而Angora(Chen和Chen2018)首选那些可能触发带有未探索分支的条件语句的语句。

输入种子突变高效输入案例的生成对模糊性能至关重要。这一研究方向(Rawat等人。2017; Lemieux和Sen2018; Chen和Chen2018; Li等人。2017; Aschermann等人。2019; You等人。2019; Lyu等人。2019; Wang等人。2017; Rajpal等人。2017)通过挖掘输入字节的语义,分配不同权重的变异算子。两种Vuzzer(Rawat等人。2017)和安哥拉(陈和陈2018)采用污点分析来查找输入中的“神奇”字节,即可能在分支语句中引用的字节。安哥拉(陈和陈2018)进一步提出使用基于梯度下降的搜索来解决路径约束问题。REDQUEEN(Aschermann等人。2019)标识了一种称为“输入到状态对应”的关系,这使得一些输入字节可以直接映射到程序内存。它利用这种映射关系来实现一种接近但轻量级的污点跟踪近似。GREYONE(Gan等人。2020)遵循传统的污点分析来指导模糊化过程,但提出了一种新的数据流分析来进一步调整模糊化方向。PATA(Liang等人。2022)还进行路径软件污染分析,以识别将传播到路径约束中使用的变量的输入字节,并相应地对其进行变异。总之,污点分析对于识别输入的关键字节至关重要。然而,它受到路径爆炸和开销问题的影响,很难扩展到大型程序或输入。

还存在其他进步(You等人。2019; Lyu等人。2019; Rajpal等人。2017)无需进行大量静态/动态分析。AFL包含一个简单的位置敏感策略:它跳过在轻弹8个操作员,用于下列操作员轻弹16,轻弹32和算术。然而,它仅限于AFL的确定阶段,因此不适用于处于破坏阶段的操作员。ProFuzzer(You等人。2019)预定义了六类数据字段,采用轻量级探测方法对输入字节进行分类,并根据探测到的数据类型语义进行变异。MOPT(Lyu等人。2019)通过对导致新代码覆盖的操作符进行优先级排序,重点关注变异操作符的调度,而不关注变异位置调度。Rajpal等人。(2017)还探讨了输入种子字节在触发感兴趣的情况下的有效性方面的不平等。它训练离线LSTM(Sundermeyer等人。2012)模型捕获过去模糊化中的模式并相应地指导未来的突变。

综上所述,现有研究仍会产生大量冗余输入案例。一方面,如果选择了某些突变算子,但将其应用于所有位置,如(Lyu等人。2019),在表示原始数据的输入位置不必要地执行突变,例如JPEG格式另一方面,如果根据存储在位置中的推断数据类型或突变操作符的预定义权重,选择性地将突变操作符应用于位置,例如(You等人。2019; Rajpal等人。2017),它们对未知类型的数据无效。

测试与上述两个方面正交的是程序检测(Schumilo等人。2017; Xu等人。2017; 纳吉和希克斯2019; Andronidis和Cadar2022)和测试调度(Zong等人。2020; Chen等人。2019)还建议加快测试过程。kAFL(Schumilo等人。2017)通过设计新的操作系统级原语,将硬件辅助的反馈模糊化扩展到操作系统内核。Xu等人。(2017)建议解决多核场景下的文件系统争用和fork()系统调用的可扩展性。UnTracer(纳吉和希克斯2019)只跟踪覆盖率增加的测试用例,以减少模糊开销。FuzzGuard(Zong等人。2020)在执行目标程序之前过滤掉无法访问的输入,以提高模糊化的性能。EnFuzz(Chen等人。2019)通过协作组合多个基模糊器,采用集成学习进行模糊化。

我们的方法

在本文中,我们提出了PosFuzz,它是一种增强的灰盒模糊器,具有对突变位置敏感的突变策略。PosFuzz不需要预先知道突变位置的数据类型。PosFuzz构建了一个统计模型,记录突变位置的历史表现。此外,PosFuzz根据统计模型在不同的突变位置应用突变算子,减少了冗余输入案例。具体来说,PosFuzz实时计算每个变异算子的有效位置分布。给定一个变异算子,与之相关的有效位置(缩写为有效位置)是输入种子中的一个位置,变异可能会导致新的程序覆盖。PosFuzz使用由变异算子在分布中的概率表示的权重来调度变异算子的变异位置。请注意,不管输入格式如何,都会计算每个变异操作符的有效位置分布,这使得PosFuzz输入格式不可知且更通用。

在输入种子突变阶段,PosFuzz首先记录每个突变算子的简档,如果突变产生了感兴趣的输入情况,即导致新程序覆盖的输入,则这些简档是突变算子和突变位置的对。然后,它使用在线Good-Turing频率估计来计算基于轮廓的每个变异算子的位置分布。最后,利用接受-拒绝抽样和别名抽样,这两种抽样都是在分布的指导下,在两个不同的突变阶段调度位置。

我们在三种最先进的模糊器(即AFL、AFLFast和MOPT)的基础上实现了PosFuzz,分别称为Pos-AFL、-ALFast和-MPT。使用20个真实世界的程序进行评估(UNIFUZZ Li等人。2021)LAVA-M数据集表明,在24小时测试时间预算下,PosFuzz在代码覆盖率和漏洞发现方面优于AFL、AFLFast和MOPT。与对应项相比,Pos-AFL、-AFLFast和-MOPT的平均覆盖率分别提高了22%、23%和17%,发现了131%、165%和102%的多路径,触发了243%、311%和271%的多独特错误。

总之,本文做出了以下贡献:

  • 我们引入了有效位置分布的概念来表示输入的语义,而不是输入中位置的数据类型。该分布可用于选择具有不同权重的突变位置,从而提高生成感兴趣输入案例的能力。

  • 我们提出了PosFuzz,它利用在线Good-Turing频率估计来计算每个突变算子的位置分布,并根据该分布为以后的突变调度位置。

  • 我们在AFL、AFLFast和MOPT之上实现PosFuzz。使用20个广泛使用的开源程序和LAVA-M数据集进行的评估表明,PosFuzz在代码覆盖率和错误发现能力方面优于这三种方法。

背景和动机

我们简要介绍了基于突变的灰盒模糊化及其事实标准——美国模糊Lop(AFL)(https://lcamtuf.coredump.cx/afl/). 我们利用广泛使用的开源程序exiv公司2演示现有基于突变的灰盒模糊算法的局限性和PosFuzz的思想。具体来说,我们选择类型为JPEG格式作为的输入exiv公司2来说明本节中的问题。

基于突变的灰盒模糊

与AFL及其后代一样,基于变异的灰盒模糊化利用来自先前执行的边缘覆盖或错误发现反馈来指导模糊化过程并生成更有效的输入。算法1给出了AFL的总体工作流程。基于变异的灰盒模糊化通常需要用户提供的输入语料库作为初始输入种子集(第1行)。通常,输入种子被组织到优先级队列中。核心模糊循环(第2–21行)反复从种子队列中选择一个输入种子,将其变异为一个或多个输入用例,并将生成的输入用例提供给目标程序。有趣的输入案例,即触发新代码覆盖率并添加到优先级队列的适当位置的案例。因此,基于变异的灰盒模糊化的主要工作流程可分为三个阶段:

阶段1:种子选择。从优先级队列中选择输入种子。并且基于输入种子的能量得分从输入种子生成若干输入情况。因此,关键的挑战是设计适当的优先级方案和评分方法来对输入种子进行排名/评分。以前的大量工作都探讨了不同的策略来提高这一过程的有效性。例如,AFLFast利用马尔可夫链计算每个输入种子的能量得分。

阶段2:输入种子突变。通过执行一系列预定义的操作,对给定的输入种子进行变异以生成多个输入案例变异算子在选定的上突变位置。变异操作符定义如何操作输入种子,而变异位置表示要变异的位置。AFL将此阶段划分为三个阶段:

  • 决定性阶段。从预定义的变异算子集中逐个选择具有确定性特征的变异算子,并按顺序应用于输入种子的每个字节(第4-9行)。例如,位翻转1/1运算符首先用于翻转输入种子的每一位,并且位翻转8/8运算符然后应用于翻转每个字节。

  • 浩劫阶段。从预定义的突变算子中随机选择一个适合于此阶段的突变算子,并将其应用于输入种子的随机选择位置(第10-20行)。

  • 拼接阶段。当前两个阶段没有发现所有种子的新崩溃或路径时,就会触发该阶段,这种情况很少发生。在此阶段,将两个输入种子拼接到一个新种子中,并重新执行破坏阶段。算法1不包含此阶段,因为它不执行任何变异。

图a

请注意,AFL采用统一的突变策略。以相同的概率选择不同的突变位置,即在确定性阶段明确选择的字节,或在破坏阶段以相同概率随机选择的字节。此外,变异位置也由从预先定义的算子集中以相同概率选择的变异算子进行操作。这种策略通常效率低下,导致产生冗余输入案例,这将在下一小节中具体解释。

阶段3:测试。此阶段将输入案例提供给插入指令的目标程序。如果出现任何异常行为或新的代码覆盖率,相应的输入案例将标记为有趣,并添加到优先级队列中。

关于输入种子突变的见解

我们使用exiv公司UNIFUZZ的2个项目(Li等人。2021)基准测试是一个激励人心的例子。这个出口2是一个用于操作图像元数据的跨平台库。因此,我们测试存在2使用24小时JPEG格式图像和一个最先进的模糊器AFLFast(Böhme等人。2016),与算法1所示的模糊处理过程相同。我们详细分析了突变位置/算子之间的关系,并生成了有趣的案例。我们最终获得了指导PosFuzz设计的两个关键观察结果。

观察结果1

就产生有趣输入案例的效率而言,突变位置并不相等。

算法1的第5行和第16行表明,假设所有位置具有相同的重要性。因此,在确定阶段或在破坏阶段以相同的概率逐个选择位置。然而,目标程序的输入通常是结构化的,语义丰富的,这使得AFL及其后代所持的假设在大多数情况下都不成立。

1说明了如何JPEG格式图像是有组织的。总之,输入字节可以分为四类:

  • 幻数(蓝色方框),标记图像类型([0x个00, 0x个01])或标题类型([0x个02, 0x个03]和[0x个14, 0x个15] ).

  • 大小(绿色框),确定每个标题的长度([0x个16, 0x个17]).

  • 枚举(灰色框),包含预定义的离散值,如标识符([0x个06, 0x个0A类]),它是的字符串值“JFIF\0”JPEG格式格式。

  • 原始图像数据(白框),表示图像的原始像素数据([0x个18, 0x个1F类]).

    图1
    图1

    样品JPEG格式形象

显然,前三种类型对图像元数据操纵器(如exiv公司2个原始图像数据类型。例如,值为0xFFD(xFFD)8在位置[0]x个00, 0x个01]将领先出口2调用对应的处理程序JPEG格式格式化另一个值,如0x个4D类4D类将目标程序重定向到畅通节能法处理程序,这肯定会增加目标程序的边缘覆盖范围。

样本中所有职位的有效性JPEG格式文件摘要如图所示2具体来说,我们根据算法1第24-26行收集了与突变位置相关的有趣案例。图的水平轴2表示前32个字节的突变位置(每个插槽1个字节),而垂直轴上的橙色条表示感兴趣的输入案例与在此位置上突变生成的所有输入案例之间的比率。我们可以观察到,有趣的输入案例并不是均匀分布在突变位置上。担任职位[0x个18, 0x个1F类]例如,小于\(1\%\)由于这些位置属于原始图像字段,因此在这些位置上发生变化时会生成个有趣的输入案例,这不太可能触发exiv公司2.然而,对于位置范围[0x个02, 0x个03],一个数量级更有趣的输入案例(关于\(7\%\)\(15\%\)由于这是一个Magic数字字段,需要目标exiv公司2程序对这些位置的值执行分支。因此,我们的观察表明,太多的突变被分配到较少的有效位置(例如,位置范围[0x个18, 0x个1F类]).

图2
图2

职位的有效性JPEG格式按比例

观察结果2

突变位置在生成感兴趣的输入案例中的效果对突变算子很敏感。

算法1的第4行表示决定性突变假设集合具有相同的重要性,因为它们是逐个应用的。同时,算法1的第15行表明havoc突变集合也被假定具有相同的重要性,因为它们是以相同的概率被选择的。然而,我们进一步发现,不同的突变位置通常被解释为不同的语义,这意味着突变位置的功效对突变算子是敏感的。

使用表示感兴趣的输入案例比率的直方图描述突变位置(每个插槽2个字节)相对于突变操作符的敏感性。水平轴是[0范围内输入种子的位置x个00, 0x个1E类]纵轴是变异算子生成的感兴趣输入案例的比率分布。不同颜色的条表示四个具有代表性的突变操作符:翻转1,算术8,整数32,翻转4.

图3
图3

比率突变算子的突变位置敏感性

结果表明,不同的突变算子对突变位置的影响不同。应用变异运算符时轻弹1,通过将变异算子应用于位置[0,生成了17%以上有趣的输入案例x个04, 0x个05],而只有5%有趣的输入案例是通过应用变异算子生成的算术8到这些位置。对于变异运算符算术8,超过28%的有趣输入案例是通过应用于位置[0生成的x个14, 0x个15] ,与其他位置相比,它生成了最有趣的输入案例。

PosFuzz的关键理念

基于上述观察,我们需要解决为某些突变算子选择合适位置的问题。ProFuzzer(You et al。2019),我们将选择问题视为一个在线轻量级调度问题。

给定一组变异算子,我们调度位置以最大化生成感兴趣输入案例的概率。调度决策基于该操作符的有效位置分布,该分布记录了所有位置生成感兴趣输入案例的相对概率。PosFuzz以per-program和per-operator的方式记录突变位置的历史性能,并根据记录的历史性能实时计算有效位置分布。

我们设计了PosFuzz,一种位置敏感的突变调度方法,以在不事先知道输入数据类型的情况下增强当前的模糊技术。PosFuzz利用一个统计模型,根据在线收集的运行时信息计算操作员的有效位置分布,使其更加轻量级和通用。统计模型表明,对于给定的突变算子,哪些位置应该被突变,以及应该在这些位置上花费多少能量。增强的Good-Turing频率估计基于给定操作员的突变位置历史性能学习统计模型。

构建的统计模型进一步指导岗位选择。对于给定的突变算子,PosFuzz使用两种采样方法,即确定性阶段的接受-拒绝采样和浩劫阶段的别名采样,以帮助选择合适的位置进行后续突变。采用这两种采样方法是因为它们高效,即快速选择位置和精确,即采样位置遵循计算的分布。

随着模糊化过程挖掘更多输入类型的语义,统计模型会定期更新。因此,PosFuzz将整个模糊循环划分为以下序列时代,每个都是变异调度器的时间单位。在一个历元中,PosFuzz学习一个统计模型,选择由该模型指导的突变位置,然后收集运行时信息以更新下一个历次的模型。这样,PosFuzz可以将变异算子应用到尽可能多的合适变异位置,从而提高模糊效果。

方法概述

PosFuzz利用位置敏感调度器来增强基于变异的灰盒模糊器。该调度器在典型灰盒模糊化过程的基础上,由三个主要阶段组成,即有效信息分析、位置分布估计和分布引导选择。整体方法如图所示4用粗体虚线方框突出显示三个相位。

PosFuzz将突变过程分为多个序列时代,每个纪元持续一个常量时间,其值在模糊化之前是可配置的。PosFuzz以个人方式记录有效信息。所有以前的信息时代累计以估计有效位置分布。

图4
图4

PosFuzz概述

有效的信息分析它记录了如果触发有趣的输入案例生成,则执行突变的历史性能。使用一对突变算子及其突变位置记录有效信息,表示为(操作销售时点情报系统)在测试期间生成有趣的输入案例时。每次结束时纪元将当前时代的有效信息积累到历史绩效数据中。

例如,如果一个有趣的输入身份证件 : 001451, src公司 : 000931, 操作 : 轻弹4, 销售时点情报系统:60’由源种子生成\(\#000931\)通过使用突变算子对位置60进行突变轻弹4,我们将有效信息记录为('flip4',60),并相应地更新历史性能。

位置分布估计纪元,根据历史性能重新计算每个变异算子的有效位置分布。一个算子的位置分布表示每个位置被选择进行变异的概率,它是由('flip4',60)等有效信息构建的,即生成的输入案例越多,意味着未来的选择概率越高。关键的挑战是准确预测看不见位置的有效性,因为我们面临着代码启动问题。我们不能将零概率分配给不产生有趣输入案例的位置,因为此位置可能无效或无法选择。PosFuzz利用Good-Turing频率估计来解决这个问题。好时频率估计是一种统计方法,可以对可见和不可见物体的总概率进行简单估计(Gale和Sampson1995).

正在进行模糊处理转换具有畅通节能法以格式化输入为例。25世纪初,算子的有效位置分布翻转1已根据前24个时期收集的数据,通过Good-Turing频率估计重新计算。选择54位进行突变的概率为20.83%,选择72位的概率为10.01%。

分发引导选择该分布用于指导输入种子突变阶段。由于确定性突变和破坏性突变的选择行为不同,因此采用了两种抽样方法。对于确定性阶段的变异算子,逐个处理输入位置,并使用接受-投影抽样选择每个位置,根据算子的位置分布计算概率。对于处于破坏阶段的变异算子,使用别名采样从所有输入药剂中选择一个位置,所选变异算子的概率记录在分布中。

给定操作员翻转1PosFuzz能够以特定的概率选择突变位置。对于确定性阶段突变,位置54的选择概率为100%,因为它最有可能在所有位置中生成有趣的案例,而位置72的选择概率则为48.1%。对于严重破坏阶段的突变,根据分布,位置54和位置72的选择概率分别为20.83%和10.01%。

设计和实施

在本节中,我们形式化了有效的位置分布,并解释了该分布如何帮助为给定的变异算子选择合适的位置。注意,PosFuzz将整个突变过程分为多个序列时代因此,我们讨论了纪元在典型灰盒模糊处理的基础上,我们还提出了PosFuzz算法。

有效的信息分析

首先,对于每个输入案例,\({\mathcal{C}}}\),PosFuzz记录其联动装置,即如何\({\mathcal{C}}\)直接从其父输入中变异,如\({\mathcal{L}}({\mathcal{C}})\). The联动装置一个箱子是一组对(操作销售时点情报系统). 每对(操作销售时点情报系统)代表应用变异运算符操作关于突变位置销售时点情报系统注意,没有记录应用变异运算符的顺序,因为它不会影响本工作中的分布计算。

其次,对于-第个纪元,表示为\({\mathcal{E}}_i\),将其所有感兴趣的案例放入一个输入案例集,表示为\(国际号码({\mathcal{E}}_i)\).输入案例\({\mathcal{C}}\)只要它能覆盖目标程序的新执行路径,就很有趣。

位置分布估计

在每一开始纪元,PosFuzz使用从所有之前的时代到目前为止。本节形式化了变异算子有效位置分布的定义,并引入了实时频率估计来计算它。

有效的职位分布定义

有效位置分布定义为:

定义1

给定一个变异算子操作,有效的位置分布\(f_{op}(位置)\)对于操作是一个将位置映射到概率的离散概率函数,位置的概率由有趣的输入案例的数量决定,其中的链接包含此位置。

对于-有效位置,其概率意味着被选择进行突变的可能性。概率表示为\(P_{op}(位置=位置{i})\),我们有

$$\开始{aligned}\sum_{i}P_{op}(pos=pos_{i{)=1\end{aligned}$$

直观地说,AFL及其变体使用统一的有效位置分布,这表明假设每个位置对于生成感兴趣的案例同等重要。在这项工作中,对于每个突变算子操作,\(f_{op}(位置)\)基于所有以前的有效历史信息进行计算时代并指导当前的突变位置选择纪元因此。

良好使用频率估计

估计有效位置分布的一种简单方法是使用有效历史信息直接计算它,即,所有导致有趣情况的位置均以非负概率分配,而所有其他位置均以零概率分配。然而,由于模糊的随机性,这不是一个好方法。一个没有触发任何有趣案例的位置要么无效,要么没有被选中的机会。区分这两种立场对我们来说是一个独特的挑战。为了解决这个问题,我们引入了Good-Turing频率估计0来平滑不可见位置之间的分布。

步骤1:准备有效信息首先,到目前为止生成的所有有趣的输入案例都表示为:

$$\begin{aligned}U=\text{IntC}({\mathcal{E}}_0)\cup\ldots\cup\text{IntC{({\ mathcal}}_{cur})\end{alinged}$$

哪里\({\mathcal{E}}_{cur}\)表示电流纪元.

那么,对于给定的运算符操作,所有输入案例\({\mathcal{C}}\)其链接包含操作表示为:

$$\begin{aligned}C(op)=\{\,{\mathcal{C}}\mid(op,*)\in{\mathcal{L}}({\matchcal{C})\\text{和}\{\mathcal{C}}\in \U\,\}\end{alinged}$$

哪里\((op,*)\在{\mathcal{L}}({\mathcal{C}})中\)意味着操作至少在的一个元素中\({\mathcal{L}}({\mathcal{C}}).

第二步:计算 \(f_{op}(位置)\)我们需要估计每个位置对其相应输入案例的贡献,即每个位置的权重。通常,输入案例生成于确定性阶段或中浩劫阶段,我们认为所有输入案例都具有相同的重要性。对于确定性阶段,通过应用变异操作符生成输入案例操作到一个特定的位置。对于浩劫阶段,通过对多个位置应用随机变异算子来生成输入案例。因此,我们需要将输入案例的权重分配到浩劫阶段。给定一个有趣的案例\({\mathcal{C}}_{k}\)和一对有效的\((op,pos_i)在{\mathcal{L}}({\mathcal{C}}_{k})中,有效位置的重量\(pos_i\)对于这种情况,定义为:

$$\开始{对齐}权重{k}(pos_i)=\frac{REPEAT_{max}}{|({\mathcal{L}}({\mathcal{C}}_{k}))|}\end{aligned}$$

哪里

$$\begin{aligned}REPEAT_{max}=\max(|{\mathcal{L}}({\mathcal{C}})|)\quad where\quad\forall\{\matchcal{C}{}\\in\C(op)\end{alinged}$$

在不失一般性的情况下,我们假设\(重复{max}\)可除以\(|({\mathcal{L}}({\mathcal{C}}))|\)在这里,因为它们在实践中都是二的力量。

给定操作员操作,有效位置的总重量\(位置\)定义为:

$$\begin{aligned}R_i=\sum_{k}weight_{k{(pos_i)\end{alinged}$$

有效位置的总标度重量\(位置\)称为频率\(位置\).

给定频率第页,具有该频率的位置数量表示为:

$$\begin{aligned}N_{r}=|\{pos\mid-pos=pos_{i}\\text{和}\r{i}=r\}|\end{alinged}$$

然后将样本总数定义为:

$$\begin{aligned}N=\sum_{r=0}^\infty r N_r\end{alinged}$$

根据Good-Turing频率估计,平滑后的频率为第页估计为:

$$\开始{aligned}r^*=(r+1)\frac{N_{r+1}}{N_r}\end{aligned}$$

因此,\(f_{op}(位置)\)计算如下。对于观察到的位置\(位置\),其相应概率计算为:

$$\开始{对齐}P_{op}(pos=pos_i)=\frac{r^*}{N}=\frac{(r_i+1)}{N{对齐{N_{r_{i}+1}}{N__{r{i}}}\end{对齐$$

对于一个看不见的位置\(位置\),其相应概率计算为:

$$\开始{对齐}P_{op}(pos=pos_i)=\frac{N_1}{N}\结束{对齐}$$

分发引导选择

PosFuzz在运算符之后选择突变位置操作通过分发选择\(f_{op}(位置)\)特别地,位置选择与其他工作提出的操作员选择策略正交。如“章节背景和动机“,两个不同的阶段,即。,确定性浩劫阶段存在于基于de-facto变异的灰盒模糊框架中。因此,相应地设计了两种不同的选择策略。

增强确定性阶段

确定性在这个阶段,传统的基于变异的灰盒模糊算法逐个应用所有可能的算子,每个算子在所有可能的位置上执行,从而使每个位置的选择概率相等(概率为1)。相反,给定一个操作符,PosFuzz选择具有不同概率的位置。对于一个职位\(位置\),PosFuzz杠杆验收-拒收取样(Flury公司1990)方法来决定是否以接受概率对其进行变异。概率定义为:

$$\开始{对齐}Pacc_{op}(pos=pos_i)=\frac{P_{op{(pos=pos_i$$
(1)

扩大浩劫阶段

浩劫阶段,传统的模糊器类AFL随机选择变异算子,并使用均匀分布为每个算子选择变异位置,即以相同的概率选择位置。与此不同的是,PosFuzz将别名采样(夏皮罗和西尔弗曼1960)方法,一种有效的采样方法,在输入案例中选择一些突变位置,概率记录在\(f_{op}(位置)\).别名采样是从离散概率分布中采样的通用方法。它需要(时间复杂度)或(n个)预处理时间和(1) 选择职位的时间\(f_{op}(位置)\)因此,在此阶段,选择一个位置的概率定义为:

$$\开始{对齐}Psel_{op}(pos=pos_i)=P_{op}(pos=pos_i)\结束{对齐}$$
(2)

PosFuzz实现

算法2演示了位于AFL之上的PosFuzz的典型实现。

模糊处理过程由以下循环组成时代,每个都可以持续用户配置的时间间隔,例如1小时。纪元根据有效历史信息计算出的有效位置分布,选择合适的突变位置。

图b

在开始时纪元,PosFuzz累积当前纪元的有效信息并将其更新为历史信息历史(第6行),用于计算有效分布。PosFuzz利用Good-Turing频率估计来计算有效分布距离基于有效的历史信息历史到目前为止(第7行)。然后,它借助分布选择位置。在确定性阶段,它利用验收-拒收取样方法,表示为如果接受位置,以确定是否应以以下概率选择当前位置\(Pacc_{op}(pos=pos_i)\)(第12行)。在破坏阶段,它采用别名采样方法,表示为选择PosForOp,以获得概率为的随机位置\(位置{op}(位置=pos_i)\)(第25行)。

Posfuzz记录了联动装置运算符的格式为(操作销售时点情报系统)(第15和27行)。如果生成了一个有趣的案例联动装置添加到有趣的一对\(\增量\)当前纪元(第39行)。

评价

为了证明PosFuzz的通用性和有效性,我们在三个最先进的灰盒模糊器(即AFL)之上实现了三种不同的PosFuzz、Pos-AFL、Pos-AFFast和Pos-MOPT(https://lcamtuf.coredump.x/afl/),AFLFast(Böhme等人。2016)和MOPT(Lyu等人。2019)分别是。我们选择AFL是因为它在生产中很受欢迎。选择AFLFast和MOPT是因为它们与PosFuzz正交。AFLFast提出了一种新的种子选择策略,而MOPT通过有效的变异算子调度来增强AFL。

评估数据集我们使用UNIFUZZ基准评估PosFuzz(Li等人。2021)和标准数据集LAVA-M。UNIFUZZ包含20个现实世界的程序,分为六种功能类型,即。,图像、音频、视频、文本、二进制和网络UNIFUZZ基准的设置符合(Li et al。2021)和表的第二列1列出了所有20个程序。我们报告了UNIFUZZ基准的边缘覆盖和唯一执行路径。此外,还使用UNIFUZZ和LAVA-M评估PosFuzz的错误发现能力。

实验设置我们为数据集中的每个程序运行六个模糊化工具,即AFL/Pos-AFL、AFLFast/Pos-AFLFast和MOPT/Pos-MOPT。对于每个带有模糊工具选项的程序,我们使用相同的种子运行实验五次,每次运行持续24小时。我们报告了五次跑步的平均成绩。请注意,Pos-AFL、-AFLFast和-MOPT(简称Pos-*)的测试时间包含有效的分布计算和位置采样,即包括所有运行时开销。在Pos-*的所有实验中选择1小时历元。所有实验都是在一台带有Intel Xeon Gold的双插槽80核机器上进行的6248v4@2.50GHz处理器。

增强对真实世界程序进行模糊化的有效性

我们首先报告了UNIFUZZ基准测试的结果,该基准测试包含20个真实世界的程序。

总体结果

覆盖范围和路径表格12描述所有六个模糊器的平均边缘覆盖和路径。特别是,列程序表示目标程序和列集成数字控制说明了Pos-*相对于其对应物的改进,即Pos-AFL相对于AFL。

表1 AFL、AFLFast和MOPT上PosFuzz的平均边缘覆盖率
表2 AFL、AFLFast和MOPT上PosFuzz的平均路径

Pos-*在60个案例中有58个案例的边缘覆盖率优于其对应产品。平均而言,Pos-*将AFL的边缘覆盖率提高了22%,AFLFast提高了23%,MOPT提高了17%。此外,Pos-*的平均路径数分别比AFL、AFLFast和MOPT多131%、165%和102%。注意,Pos-MOPT的结果表明,粗粒度变异算子选择之上的细粒度变异位置选择(MOPT到底做了什么)仍然可以消除冗余的输入案例,从而探索更多的路径并获得更高的覆盖率。

独特的错误我们利用发现的唯一错误的数量作为模糊化工具错误发现能力的度量。我们从ASan的输出中提取堆栈跟踪中的前三个函数(Serebryany等人。2012)消除重复错误,并将具有不同堆栈跟踪和漏洞类型的错误划分为唯一错误。显示了在20个真实世界程序中,每个模糊器在五次重复中触发的独特错误总数。Pos-*为所有程序触发了更多独特的错误。平均而言,Pos-AFL、Pos-AFFast和Pos-MOPT检测到的独特错误比对应的多243%、311%和271%。特别是,PosFuzz为命令由于边缘覆盖和路径的显著改进。

表3 AFL、AFLFast和MOPT上PosFuzz在五次重复中的独特错误总数

详细信息比较

数字56从边缘覆盖和执行路径两个方面描述了第一次模糊执行的模糊效率的详细实验结果。每个小图都与一个目标程序相关联,其中绿色虚线、绿色虚线和红色虚线、红色虚线和蓝色虚线分别表示AFL、Pos-AFL、AFLFast、Pos-AFFast、MOPT和Pos-MOPT。

图5
图5

边缘覆盖率比较

边缘覆盖率对于图中的每个小数字5,水平轴为边缘覆盖率,垂直轴为模糊持续时间。如图所示5,Pos-*在所有输入格式和目标程序中都优于其对应项,显示出良好的通用性。

图6
图6

路径比较

执行路径对于图中的每个小数字6,横轴是执行路径的数量,纵轴是模糊化持续的小时数。如图所示5在20个目标项目中,Pos-*的表现远远超过了其他对手。

具体地,Pos-*显著改善了一些图像格式的路径发现,例如。,imginfo公司jpg格式。位置的有效性因图像格式的语义规范和结构化数据布局的不同而差异很大。因此,当Pos-*从运行时评测中获得更准确、更有价值的有效位置分布信息时,PosFuzz可以获得更好的性能,例如。,imginfo公司jpg格式但是,对于某些音频和视频格式,例如。,波浪mp(最大功率)4,有效位置分布相对均匀,因此Pos-*没有探索更多的路径。

总之,PosFuzz可以自动使用统计信息来指导突变位置的选择,而不需要感知程序语义或输入格式,这可以提高边缘覆盖率并探索更多的执行路径。

LAVA-M评估

LAVA-M由4个目标程序组成,广泛用作衡量模糊器漏洞发现能力的标准基准。初始种子集和所有其他设置均符合(Rawat等人。2017),并且它们在所有六个评估的模糊器中都是相同的。对于每个程序,我们运行实验五次,每次运行持续24小时。

4列出了所有fuzzer在5次运行中累积的错误。Pos-*的表现明显优于对手。Pos-AFL比AFL多检测533个错误,Pos-AFLFast比AFLFast多检测469个错误,而Pos-MOPT比MOPT多检测126个错误。特别是,Pos-*查找中列出的所有错误,以及4个未列出的错误。此外,对于大多数bug程序,Pos-*发现与AFL、AFLFast和MOPT相比,分别多466、418、118个列出的错误和42、32、8个未列出的错误。此外,只有Pos-AFLFast才能识别医学博士5总和而所有其他模糊者都找不到。

表4 LAVA-M上触发的累计错误

案例研究:存在2

在本节中,我们利用该计划exiv公司2,一个用于操作图像元数据的跨平台库,以研究PosFuzz如何优于AFLFast等最先进的模糊化工具(Böhme et al。2016). 我们测试出口2使用AFLFast和Pos-AFLFast持续24小时,执行参数和初始种子的设置符合UNIFUZZ。

直观地说,高级语义对于提高模糊性能至关重要。以图像格式为例,包含元数据的位置,例如标题位置(“Section”中的幻数关于输入种子突变的见解“)确定图像是否JPEG格式畅通节能法与仅包含像素数据的位置相比,更有可能增加边缘覆盖率(“部分”中的原始图像数据关于输入种子突变的见解”). 然而,不是像ProFuzzer那样直接探测输入字节的类型(You等人。2019),PosFuzz选择以实用的方式进行调度:根据覆盖改进调度位置,而不是使用其语义类型调度位置。这种设计使PosFuzz具有类型识别功能,不需要预定义类型。

图c

清单1是从中提取的代码片段exiv公司2.exiv公司2首先通过查询位置0确定输入图像的类型x个具有两字节长度的00:值0xFFDB公司对于JPEG格式(第14行)和值0x个4D类4D类或0x个4949(字母“II”或“MM”的ASCII代码)畅通节能法(第21和22行)。操作位置[0x个00, 0x个01]将明显导致exiv公司2,因为每个图像类型都有自己的处理程序,例如。,是JpegType对于JPEG格式是TiffType对于畅通节能法此外,假设图像是JPEG格式格式exiv公司2进一步检查位置0x个02 (标记第31行),长度为2字节,位置为0x个04 (大小第36行)。这个exiv公司2将根据标记(从第37行到第57行),如果模糊器改变了这一点,边缘覆盖率肯定会增加标记位置。这个大小字段用于根据JPEG格式规范(第38、43、48和53行),并直接影响程序将读取多少数据,这可能会导致越界访问。因此,在大小可能会引发更多有趣的案例。相同的分析适用于位置0x个14和0x个16,这是另一个标记大小根据“章节背景和动机。此外,原始图像数据将被忽略出口2(第56行)作为exiv公司2是一个元数据操作工具,不会根据像素数据的值执行进一步的操作,从而降低了增加边缘覆盖的效率。总之,像Magic number和Size这样的位置上的突变比像Raw image data这样的位置更有效。PosFuzz通过基于统计模型的在线调度,揭开了不同职位之间功效差异的神秘面纱,并为更有效的职位分配了更多权重。

7描述了Pos-AFLFast和AFLFast的感兴趣案例的分布,x轴为位置(1字节槽),y轴为感兴趣案例绝对数。为了简单起见,我们只报告由翻转1位置范围[0的变异算子x个00, 0x个1F类],当一个有趣的案例通过在多个头寸上进行突变而产生时,将其分摊到所有头寸,例如浩劫舞台。

图7
图7

Pos-AFLFast和AFLFast的有趣案例直方图JPEG格式

总的来说,Pos AFLFast触发3.8X(X)在相同的时间预算下,比AFLFast更有趣的案例翻转1操作员。根据图7,我们可以先确认观察结果1在“章节背景和动机等待exiv公司2程序,只有一部分位置(AFLFast的32个位置中有8个,Pos-AFLFast的32个中有21个)可以触发有趣的情况。其次,与AFLFast相比,我们可以观察到Pos-AFLFast在位置范围[0x个14, 0x个17] ,如前所述,这是标记和尺寸对。AFLFast在这个位置范围内只发现了6个有趣的病例,因为它在无效位置浪费了大量突变。

8进一步描述了为AFLFast和Pos-AFLFast生成的输入案例的分布。输入案例的总数彼此相当,例如,AFLFast为188440,Pos-AFLFast为183523。然而,各职位的投入分布差异很大。AFLFast不知道位置之间的有效性差异,并采用均匀分布,从而使每个位置的输入情况几乎均匀,如图中的蓝色条所示8相反,Pos-AFLFast根据其触发有趣病例的历史表现安排位置,并为有效位置分配更多突变。例如,为位置0生成28441个输入案例x个17个,而位置0只有635个案例x个1E类总之,PosFuzz使用统计模型安排突变位置,并为Magic数字和Size等位置分配更多权重,从而避免了Raw图像数据等位置的冗余突变。

图8
图8

Pos-AFLFast和AFLFast突变病例直方图JPEG格式

讨论

在本节中,我们简要讨论了PosFuzz与文献中其他富有成果的研究工作之间的关系。

首先,PosFuzz与注重种子选择的方法正交,例如AFL(https://lcamtuf.coredump.cx/afl/)和AFLFast(Böhme等人。2016). PosFuzz可以透明地与它们结合,我们分别对AFL和AFLFast进行了增强。其次,PosFuzz旨在生成高效的输入案例,许多研究工作已经对此进行了探索(Rawat等人。2017; Li等人。2017; Chen和Chen2018; Aschermann等人。2019; Lyu等人。2019; You等人。2019; Wang等人。2017; Lemieux和Sen2018; Rajpal等人。2017). PosFuzz与其他研究工作共享相同的原则:利用输入字节的语义来生成更有效的输入案例(Rawat等人。2017; Li等人。2017; 陈和陈2018; Aschermann等人。2019; Lyu等人。2019; You等人。2019; Wang等人。2017; Lemieux和Sen2018; Rajpal等人。2017). 然而,PosFuzz是建立在对有趣的测试用例进行运行时评测的基础上的,开销可以忽略不计,而现有的工作需要静态/动态程序分析(Rawat等人。2017; 陈和陈2018; Aschermann等人。2019; Gan等人。2020; Liang等人。2022)这可能会受到离线分析开销的影响。ProFuzzer(You等人。2019)不需要静态/动态程序分析,但需要为输入字节预定义六个类,而PosFuzz是输入类型识别的,不需要事先定义数据类型。MOPT(Lyu等人。2019)根据“第节评价”. Rajpal等人。(2017)基于离线训练的LSTM模型调度变异位置,而PosFuzz不需要预模糊训练,可以动态适应新的输入,即每次更新分布纪元.

结论

我们发现了现有变异位置调度器的效率低下,并利用不同位置对不同变异操作的有效性。我们提出了一种输入变异的变异位置敏感调度器,该调度器利用统计方法来指导变异算子的变异位置选择。PosFuzz使用新颖的调度器增强了三个最先进的模糊器,并实现了三个原型:Pos-AFL、-AFLFast和-MOpt。我们在UNIFUZZ基准(20个广泛使用的开源程序)和LAVA-M数据集上对这些模糊器进行了评估,评估结果表明,Pos-*在边缘覆盖和漏洞发现方面都优于它们的同类。

数据和材料的可用性

所有公共数据集源均如本文所述。

工具书类

  • 面向安全、反馈驱动、进化、易于使用的模糊器,具有有趣的分析选项。https://honggfuzz.dev/

  • 美国Fuzzy Lop。https://lcamtuf.coredump.cx/afl/

  • Andronidis A,Cadar C(2022)Snapfuzz:网络应用程序的高通量模糊化

  • Aschermann C、Schumilo S、Blazytko T、Gawlik R、Holz T(2019)《红皇后:输入-状态对应的模糊化》。In:NDSS,第19卷,第1-15页

  • Böhme M,Pham V-T,Roychoudhury A(2016)基于覆盖的灰盒模糊作为马尔可夫链。摘自:2016年ACM SIGSAC计算机和通信安全会议记录,第1032–1043页

  • Böhme M,Pham V-T,Nguyen M-D,Roychoudhury A(2017)导演灰盒模糊。摘自:2017年ACM SIGSAC计算机和通信安全会议记录,第2329–2344页

  • Chen P,Chen H(2018)《安哥拉:通过原则搜索实现高效模糊化》。2018年IEEE安全与隐私(SP)研讨会。IEEE,第711-725页

  • Chen Y,Jiang Y,Ma F,Liang J,Wang M,Zhou C,Jiao X,Su Z(2019)Enfuzz:不同模糊者之间种子同步的模糊集合。收录于:第28届USENIX安全研讨会(USENIX-Security 19),第1967–1983页

  • Chen H,Xue Y,Li Y,Chen B,Xie X,Wu X,Liu Y(2018)Hawkeye:走向一个理想的定向灰盒模糊器。附:2018年ACM SIGSAC计算机和通信安全会议记录,第2095–2108页

  • Flury BD(1990)验收拒收抽样变得简单。SIAM版本32(3):474–476

    第条 数学科学网 数学 谷歌学者 

  • Gale WA,Sampson G(1995)良好的图灵频率估计,无撕裂。数量语言学家J 2(3):217–237

    第条 谷歌学者 

  • Gan S,Zhang C,Chen P,Zhao B,Qin X,Wu D,Chen Z(2020)《数据流敏感模糊化》。在:第29届USENIX安全研讨会(USENIX security 20),第2577–2594页

  • Gan S,Zhang C,Qin X,Tu X,Li K,Pei Z,Chen Z(2018)Collafl:路径敏感模糊化。2018年IEEE安全与隐私(SP)研讨会。IEEE,第679–696页

  • Herrera A、Gunadi H、Magrath S、Norrish M、Payer M、Hosking AL(2021)成功打毛的种子选择。摘自:第30届ACM SIGSOFT软件测试与分析国际研讨会论文集,第230–243页

  • Lemieux C,Sen K(2018)Fairfuzz:增加灰箱模糊测试覆盖率的目标突变策略。收录:第33届ACM/IEEE自动化软件工程国际会议论文集,第475–485页

  • 李杰,赵B,张C(2018)福清:一项调查。网络安全1(1):1–13

    第条 谷歌学者 

  • 梁浩,裴X,贾X,沈W,张J(2018)《模糊:现状》,IEEE Trans Reliab 67(3):1199–1218

    第条 谷歌学者 

  • Liang J,Jiang Y,Chen Y,Wang M,Zhou C,Sun J(2018)Pafl:将单一模式的模糊优化扩展到工业并行模式。附:2018年第26届ACM欧洲软件工程联合会议和软件工程基础研讨会记录,第809–814页

  • Liang J,Wang M,Zhou C,Wu Z,Jiang Y,Liu J,Liu Z,Sun J(2022)Pata:路径感知污染分析的模糊性。2022年至2022年IEEE安全与隐私研讨会(SP)。IEEE Computer Society,Los Alamitos,CA,USA,第154-170页

  • LibFuzzer-一个用于Coverage-guided Fuzz测试的库。https://llvm.org/docs/LibFuzzer.html

  • Li Y,Chen B,Chandramohan M,Lin S-W,Liu Y,Tiu A(2017)Steelix:基于程序状态的二进制模糊。附:2017年第11次软件工程基础联合会议记录,第627-637页

  • Li Y,Ji S,Chen Y,Liang S,Lee W-H,Chen Y,Lyu C,Wu C,Beyah R,Cheng P等人(2021)Unifuzz:评估模糊词的整体实用度量驱动平台。第30届USENIX安全研讨会(USENIX-security 21)。USENIX协会

  • Lyu C,Ji S,Zhang C,Li Y,Lee W-H,Song Y,Beyah R(2019)MOPT:模糊器的优化变异调度。In:第28届USENIX安全研讨会(USENIX-安全19),第1949–1966页

  • Manès VJM、Han H、Han C、Cha SK、Egele M、Schwartz EJ、Woo M(2019)《模糊化的艺术、科学和工程:一项调查》。IEEE Trans软件工程

  • Nagy S,Hicks M(2019)《全速模糊:通过覆盖引导跟踪减少模糊开销》。2019年IEEE安全与隐私研讨会(SP)。IEEE,第787–802页

  • Petsios T,Zhao J,Keromytis AD,Jana S(2017)Slowfuzz:算法复杂性漏洞的自动域依赖检测。摘自:2017年ACM SIGSAC计算机和通信安全会议记录,第2155–2168页

  • Rajpal M、Blum W、Singh R(2017)并非所有字节都相等:模糊化的神经字节筛。arXiv预印本arXiv:1711.04596

  • Rawat S,Jain V,Kumar A,Cojocar L,Giuffrida C,Bos H(2017)Vuzzer:应用程序感知进化模糊。In:NDSS,第17卷,第1-14页

  • Schumilo S,Aschermann C,Gawlik R,Schinzel S,Holz T(2017)kafl:操作系统内核的硬件辅助反馈模糊。In:第26届USENIX安全研讨会(USENIX-security 17),第167-182页

  • Serebryany K(2017)Oss-fuzz-google针对开源软件的连续模糊服务

  • Serebryany K,Bruening D,Potapenko A,Vyukov D(2012)AddressSanitizer:一种快速地址健全性检查器。2012年USENIX年度技术会议(USENIXATC 12),第309–318页

  • Shapiro HS,Silverman RA(1960),随机噪声的无Alias-free采样。J Soc工业应用数学8(2):225–248

    第条 数学科学网 数学 谷歌学者 

  • She D,Shah A,Jana S(2022)利用图中心性分析进行模糊化的有效种子调度。2022年至2022年IEEE安全与隐私(SP)研讨会。IEEE Computer Society,Los Alamitos,CA,USA,第1558–1558页

  • Sundermeyer M,Schlüter R,Ney H(2012)语言建模的LSTM神经网络。参加:国际言语交际协会第十三届年会

  • Wang J,Chen B,Wei L,Liu Y(2017)天火:用于模糊的数据驱动种子生成。2017年IEEE安全与隐私研讨会(SP)。IEEE,第579–594页

  • Xu W,Kashyap S,Min C,Kim T(2017)设计新的操作原语以提高模糊性能。摘自:2017年ACM SIGSAC计算机和通信安全会议记录,第2313–2328页

  • You W,Wang X,Ma S,Huang J,Zhang X,Wang X,Liang B(2019)Profuzzer:为更好地发现零日漏洞而进行的即时输入类型探测。2019年IEEE安全与隐私研讨会(SP)。IEEE,第769–786页

  • Yun I,Lee S,Xu M,Jang Y,Kim T(2018)Qsym:为混合模糊定制的实用混合执行引擎。第27届USENIX安全研讨会(USENIX-Security 18)。马里兰州巴尔的摩USENIX协会,第745-761页

  • Zong P,Lv T,Wang D,Deng Z,Liang R,Chen K(2020)Fuzzguard:通过深度学习过滤出定向灰盒模糊化中无法到达的输入

下载参考资料

致谢

不适用。

基金

本研究得到了国家重点研发计划(2022YFB3103900)、国家自然科学基金(6203201062202462)和中国科学院战略优先研究计划(XDC0200200)的资助。

作者信息

作者和附属机构

作者

贡献

YYZ和WH设计了这项研究。YYZ、JCZ、NYZ构建了该框架并进行了实验。YYZ和WH写了这篇论文。YZ、JS、WZ审阅并编辑了手稿。所有作者都阅读并批准了手稿。

通讯作者

与的通信魏火.

道德声明

竞争性利益

作者声明,他们没有相互竞争的利益。

其他信息

出版商备注

Springer Nature在公布的地图和机构关联中的管辖权主张方面保持中立。

权利和权限

开放式访问本文是根据Creative Commons Attribution 4.0国际许可证授权的,该许可证允许以任何媒体或格式使用、共享、改编、分发和复制,只要您对原始作者和来源给予适当的信任,提供指向Creative Commons许可证的链接,并指出是否进行了更改。本文中的图像或其他第三方材料包含在文章的Creative Commons许可证中,除非材料的信用额度中另有说明。如果文章的知识共享许可证中没有包含材料,并且您的预期用途不被法律法规允许或超出了允许的用途,则您需要直接获得版权所有者的许可。要查看此许可证的副本,请访问http://creativecommons.org/licenses/by/4.0/.

转载和许可

关于本文

检查更新。通过CrossMark验证货币和真实性

引用这篇文章

Zou,Y.、Zou,W.、Zhao,J。等。PosFuzz:使用有效的位置分布增强灰箱模糊。网络安全 6, 11 (2023). https://doi.org/10.1186/s42400-023-00143-2

下载引文

  • 收到:

  • 认可的:

  • 出版:

  • 内政部:https://doi.org/10.1186/s42400-023-00143-2

关键词