赞
踩
应用:补丁测试、崩溃重现、静态分析、信息流检测
种子能量:一个种子s产生的模糊数量也被称为s的能量。
图:函数级的调用图(CG)和基本块级的程序内控制流图(CFG)
目标函数Tf和目标基本块Tb
函数距离df (n,n′)定义为调用图CG中函数n和n′之间最短路径上的边的数量。我们把函数n和目标函数Tf之间的函数级目标距离df (n,Tf )定义为n和任何可达目标函数(tf ∈ Tf )之间的函数距离的调和平均数
R(n,Tf )是CG中从n可到达的所有目标函数的集合
BB距离db(m1,m2)定义为函数i的控制流图Gi中基本块m1和m2之间最短路径的边数。N(m)为基本块m调用的函数集合「对于N(m)中任意基本块n,都有可到达的目标函数」
T是Gi中基本块的集合「任意T中的基本块m,m调用的函数集合都不为空」
ξ(s)为种子s的执行轨迹、种子距离d(s,Tb)、归一化的种子距离˜d(s,Tb)
基于退火的功率表(APS)
图7:结构。在图形提取器从源代码中生成调用和控制流图形后,距离计算器为每个基本块计算出基本块级的目标距离,在入侵过程中被仪器化器使用。仪器化的二进制文件不仅通知模糊器关于覆盖率,而且还通知种子距离。
为了计算函数间的距离,我们给函数级的调用图(CG)和基本块级的程序内控制流图(CFG)中的每个节点分配了一个值。目标函数Tf和目标基本块Tb可以从给定的源代码引用中迅速识别出来(例如,d1_both.c:1480)。
函数级目标距离决定了一个函数到调用图中所有目标函数的距离,而函数距离决定了调用图中任何两个函数之间的距离。更正式地说,我们把函数距离df (n,n′)定义为调用图CG中函数n和n′之间最短路径上的边的数量。我们把函数n和目标函数Tf之间的函数级目标距离df (n,Tf )定义为n和任何可达目标函数(tf ∈ Tf )之间的函数距离的调和平均数
「R(n,Tf )函数n可到达的所有目标函数的集合为空:则函数级目标距离df (n,Tf )为undefined」「当函数n有到达的所有目标函数时 df为:n函数对所有可达目标函数tf的调和平均数」
其中,R(n,Tf )是CG中从n可到达的所有目标函数的集合。调和平均数可以区分 离一个目标较近的节点和离另一个目标较远的节点,以及离两个目标都等距离的节点「区别这三个点」。相比之下,算术平均数会给两个节点分配相同的目标距离。图4提供了一个例子。
基本块级的目标距离 决定了一个基本块到所有其他调用函数的基本块的距离,此外还有被调用函数的函数级目标距离的倍数。直观地说,我们根据一个基本块到调用链中任何其他调用函数的基本块的平均距离,为其分配目标距离,以达到目标位置。此外,如果该调用链较短,则分配的目标距离较小。BB距离决定了CFG中任何两个基本块之间的距离。更正式地说,我们把BB距离db(m1,m2)定义为函数i的控制流图Gi中基本块m1和m2之间最短路径的边数。让N(m)为基本块m调用的函数集合,使得∀n∈N(m).R(n,Tf ) =/ ∅「对于N(m)中任意基本块n,都有可到达的目标函数」。让T是Gi中基本块的集合,使得∀m∈T .N (m) =/ ∅「任意T中的基本块m,m调用的函数集合都不为空」.我们定义基本块m和目标基本块Tb之间的基本块级目标距离db (m,Tb)为
「目标基本块 的db=0」「函数i的控制流图Gi中的有调用函数的基本块 的db为:常数c * 基本块调用的最小的函数n和目标函数Tf之间的函数级目标距离df (n,Tf )」「其他基本块 的db:(m基本块到Gi中有调用函数的基本块的边数 + 该有调用函数的基本块的db)的调和平均数」
其中c = 10是一个常数,放大了函数级的距离。请注意,db(m,Tb )是为所有m∈Gi定义的。
最后,我们有了定义归一化种子距离的所有要素,即种子s到目标位置集合Tb的距离。让ξ(s)为种子s的执行轨迹,该轨迹包含行使的基本块。我们定义种子距离d(s,Tb)为
「种子距离d(s,Tb): 种子s的执行轨迹ξ(s)中的所有基本块的db / 种子s的执行轨迹ξ(s)中基本块的数量」
模糊器不断地维护一个种子集S来进行模糊处理。我们将归一化的种子距离˜d(s,Tb)定义为s到Tb的种子距离和之前任何种子s′∈S到Tb的最小种子距离之差除以任何种子s′∈S到Tb的最大和最小种子距离之差。
注意,归一化的种子距离 ˜d ∈ [0, 1]。还要注意的是,距离计算的重量级程序分析可以移到仪器化时间,以保持运行时的性能开销最小。首先,调用图和程序内控制流图被提取出来。这可以通过编译器本身来实现,或者当只有二进制代码可用时,可以使用位码翻译(或提升)。只有归一化的种子距离是在运行时通过收集这些预先计算的距离值计算出来的。「编译的时候先算df (n,n′)、df (n,Tf )、db(m1,m2)、df (n,Tf )等,运行的时候计算具体的种子距离d(s,Tb) 和 归一化的种子距离˜d(s,Tb)」
我们开发了一种新的基于退火的功率表(APS)。我们的基于退火的功率表为 "更接近 "目标的种子分配更多的能量,而不是为 "更远 "的种子分配更多的能量,这种能量差异随着温度的降低(即随着时间的推移)而增加。「种子能量:一个种子s产生的模糊数量也被称为s的能量。」
温度是SA算法的一个参数,用于调节对较差解决方案的接受程度,并根据冷却时间表递减。在开始时,当T=T0=1时,SA算法可能以高概率接受较差的解决方案。到了最后,当T接近0时,它就会退化为经典的梯度下降算法,只接受更好的解决方案。
冷却时间表控制着收敛的速度,是初始温度T0=1和温度周期k∈N的函数。注意,虽然能量是一个种子的局部,但温度是所有种子的整体。最流行的是指数式冷却时间表。「温度Tk/冷却时间表 会根据温度周期地增大而不断减小」
其中α<1是一个常数,通常是0.8 ≤ α ≤ 0.99。
基于退火的权力安排。在自动漏洞检测中,我们通常只有有限的时间预算。因此,我们希望指定一个时间tx,在经过足够长的 "探索 "之后,退火过程应该进入 "开发 "阶段。直观地说,在时间tx「tx是时间、Tk是温度」,模拟退火过程相当于一个经典的梯度下降算法(又称贪婪搜索)。当Tk≤0.05时,我们让冷却计划进入开发。对于0.05以外的值和不同的冷却时间表的调整是很简单的。因此,我们在时间t计算温度Texp如下「Tk=0.05相当于一个温度阈值,求解(8)得到(9):kx,将(9)代入(7)得到(10),缩写得到(11)Texp」
在下文中,我们使用指数冷却时间表来定义我们的基于退火的电源时间表(APS)。鉴于种子s和目标位置Tb,APS分配能量p为「种子能量:一个种子s产生的模糊数量也被称为s的能量。」
「(1 - 归一化种子距离) * (1 - 周期温度) + 0.5*周期温度」「距离越近,能量越高。Texp用来调整距离对分配能量的比重,温度较高时先不管距离,先注重扩张,随着周期不断进行,距离对于分配能量的占比不断提高」
图5说明了APS的行为,分别为当前时间t和归一化种子距离d以及能量变化的三个值。注意,能量p∈[0,1]。此外,当开始搜索时(t=0),APS为高种子距离的种子和低种子距离的种子分配相同的能量。随着时间的推移,一个只行使目标的种子(即˜d=0)「这里˜d=0不代表距离为0,而是距离是所有bb中最小的,˜d=1代表距离是所有bb中最大的」会被分配越来越多的能量。
图5:种子距离 ˜d(s,Tb )和当前时间对 种子s的能量p(s,Tb)的影响(对于tx=40分钟)。「体现了能量、距离、时间三者之间的变化」
实际的整合。现有的计划是根据执行时间tx和s的输入大小(sizeof)、s被发现的时间(ts)以及s有多少个祖先(|ξ(s)|)来分配能量的。我们希望将AFL原有的能量计划与我们的基于退火的能量计划进行整合,并定义最终的整合的基于退火的能量计划。假设pafl(s)是AFL通常分配给种子s的能量。给定基本块Tb作为目标,我们计算种子s的综合APS pˆ(s,Tb )为
「能量分配的综合APS 由 原始AFL的APS 与 AFL-GO的APS 进行一个加权的能量分配」
基于退火的功率因子f = 2^[10(p(s,Tb ) 0.5)] 控制AFL的功率计划分配的能量的增加或减少。图6显示了基于退火的功率因子在归一化种子距离˜d(s,Tb)的两个极端情况下的行为。让我们考虑第一个极端情况,即归一化种子距离是最大的(即˜d(s,Tb )=1;图6.a)。在开始时(t = 0),功率因子f = 1,这样,种子被分配的能量与AFL分配的能量相同(pˆ(s,Tb ) = pafl)。然而,只过了十分钟(t = 10min),同一粒种子只被分配了大约15%的原始能量。事实上,从方程(12)和(13)我们可以看到
图6:基于退火法的功率因数,它控制着AFL功率表最初分配的能量,该能量最初是由AFL的功率计划分配的。(tx = 40), (a) 与所有目标有最大距离的种子 ( ˜d = 1) 和 (b) 与所有目标的距离最小的种子 ( ˜d = 0). 注意Y轴上的不同刻度。
换句话说,一个离目标位置 "非常远 "的种子s,被分配的能量越来越少,直到只分配了原始能量pafl的三十分之一左右。现在让我们考虑第二种极端情况,即归一化种子距离最小(即˜d(s,Tb ) = 1;图6.b)。在开始时(t = 0),功率因子f = 1,就像最大距离的种子一样。然而,从公式(12)和(13)中我们可以看到
换句话说,一个 "非常接近 "到达目标位置的种子 位置,被分配到越来越多的能量,直到大约30倍的 越来越多的能量被分配,直到大约是原来能量帕夫尔的30倍。「最后d最大的趋近pafl/32,d最小的趋近pafl*32」
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。