【技术实现步骤摘要】
一种基于浮点格式感知模糊测试的浮点异常检测方法
[0001]本专利技术主要涉及到软件系统的安全检测
,特指一种基于浮点格式感知模糊测试的浮点异常检测方法。
技术介绍
[0002]随着信息化的发展,计算机应用日益广泛与深入,软件系统的安全性和可靠性也越来越受到重视。在现代计算机系统中,浮点运算普遍存在,在一些涉及大量科学和工程计算的软件中都存在着浮点运算,由于浮点数是实数的近似,是实数的一个有限真子集,它的精度和表示范围有限,这就导致浮点运算过程中可能会产生异常。
[0003]根据IEEE
‑
754浮点标准,浮点运算中所出现的浮点异常被分为五种类型,分别是上溢出、下溢出、被零除、无效运算和不精确异常。在涉及国防、航空航天、金融、交通、医疗等安全攸关领域的系统控制软件中,一旦在浮点运算中出现浮点异常,将会导致计算程序故障,进而引起灾难性的后果。
[0004]例如,在1996年6月,由欧洲航天局所研发的一架“阿丽亚娜5号
”ꢀ
(Ariane5)一次性无人运载火箭在发射后约40秒时发生了爆炸,造成了数亿美元的损失。经调查显示,造成火箭爆炸的原因在于助推系统的软件错误,在该系统中将一个64位浮点数转化为一个16位有符号整数时引起了数据精度的丢失,导致运算结果出错,最终致使火箭发射不久后发生爆炸。从该案例可以看出,浮点运算的可信性很大程度上影响着软件系统的可靠性。因此,在软件真正运行之前检测程序中潜在的浮点异常对于保证软件系统的可靠性至关重要。
[0005]数值程 ...
【技术保护点】
【技术特征摘要】
1.一种基于浮点格式感知模糊测试的浮点异常检测方法,其特征在于,包括:步骤S1:静态分析和插桩;利用静态分析技术识别并得到程序中所有的浮点操作以及程序的控制流图信息,定义并插桩相应的检测函数;为每个浮点操作插入了ErrBits函数,所述ErrBits函数用于度量一个测试输入距离触发潜在浮点异常的距离;步骤S2:浮点格式感知的模糊测试;针对步骤S1插桩后的代码,对其进行结合浮点异常距离极小化和分支覆盖信息为指导的模糊测试来检测程序中潜在的浮点异常。2.根据权利要求1所述的基于浮点格式感知模糊测试的浮点异常检测方法,其特征在于,所述步骤S1的流程包括:步骤S11:识别浮点操作;通过静态分析识别目标程序中所有浮点操作;步骤S12:进行代码插桩;基于LLVM框架,将异常检测函数和ErrBits函数插桩到原始程序中的浮点操作后,根据不同类型的浮点操作插桩相应的异常检测函数。3.根据权利要求2所述的基于浮点格式感知模糊测试的浮点异常检测方法,其特征在于,所述步骤S1中,基于程序的控制流信息,对程序进行插桩以记录运行时的分支覆盖信息。4.根据权利要求1或2或3中任意一项所述的基于浮点格式感知模糊测试的浮点异常检测方法,其特征在于,所述步骤S2的流程包括:步骤S21:输入为步骤S1插桩后的程序和初始测试输入,输出为BuggyS,是触发目标程序中浮点异常的测试用例集;步骤S22:当模糊测试运行时间没有超过预定义阈值时限时,首先,从种子队列中选择一个输入s,对其进行变异并生成变异后的输入s
’
;然后,运行该变异后的输入s
’
并监控其执行状态,收集距离浮点异常信息以及程序分支覆盖信息;步骤S23:如果所述变异的输入s
’
距离触发浮点异常更近,即本次执行距离浮点异常信息CurSet_ErrBits中存在潜在异常位置的ErrBits值比目前最新的距离浮点异常信息Set_ErrBits中相应的潜在异常位置的ErrBits值小,则利用CurSet_ErrBits的信息更新映射表Set_ErrBits,同时将该变异输入s
’
视为有趣的种子,并将其添加到种子队列中以供后续进一步变异来生成更多可能有趣的测试输入;或者,在所述变异的输入s
’
的执行过程中,覆盖了之前没有覆盖到的程序位置,该输入s
’
也将被视为有趣的种子并添加到种子队列中;步骤S24:如果发现此次输入的执行导致目标程序崩溃,那么该输入会被添加到收集触发浮点异常用例集BuggyS中;最后当以浮点格式感知的模糊测试的运行时间达到预定义的时限阈值时,则结束运行过程并输出触发浮点异常测试用例集BuggyS。5.根据权利要求4所述的基于浮点格式感知模糊测试的浮点异常检测方法,其特征在于,所述步骤S21中,在开始阶段,将BuggyS和CurSet_ErrBits初始化为空集,模糊测试种子池初始化为由初始测试输入组成的队列;所述CurSet_ErrBits表示在当前测试输入运行中从所有异常位置到对应的ErrBits的映射。6.根据权利要求4所述的基于浮点格式感知模糊测试的浮点异常检测方法,其特征在于,所述步骤S2...
【专利技术属性】
技术研发人员:陈立前,马成虎,王戟,易昕,范广生,毛晓光,陈振邦,董威,
申请(专利权)人:中国人民解放军国防科技大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。