一种基于错误处理代码导向的虚拟设备模糊测试方法与装置

未命名 08-29 阅读:126 评论:0


1.本发明属于网络安全技术领域,涉及虚拟化安全领域,具体地涉及一种基于错误处理代码导向的虚拟设备模糊测试方与装置。


背景技术:

2.虚拟设备是hypervisor里最大的攻击面,因此非常有必要对其做模糊测试。在虚拟机监视器的虚拟设备里存在一类特殊的漏洞,其存在于错误异常处理中,此类漏洞通常危害性非常大,因为错误异常处理通常涉及到资源释放等系统敏感操作。如果资源释放逻辑一旦没有处理好,将大概率会产生可被利用的高危漏洞,导致虚拟机系统被攻击者逃逸入侵,危及整个云平台的安全性。
3.然而传统的测试方法难以对此类异常处理问题进行全面的覆盖测试,这是因为传统方法缺乏对错误异常处理的导向性,而是均匀地测试程序中的每个代码片段。这就使得导致潜在的错误处理逻辑问题难以被发现和解决。因此,需要一种新的虚拟设备测试方法,能够有针对性地测试错误异常处理的逻辑问题,从而提高虚拟机监视器的安全性。


技术实现要素:

4.针对现有技术不足,提供了一种基于错误处理代码导向的虚拟设备模糊测试方法与装置。
5.为实现上述发明目的,本发明的技术方案为:
6.本发明实施例的第一方面提供了一种基于错误处理代码导向的虚拟设备模糊测试方法,所述方法包括:
7.步骤s1,采用静态分析技术对虚拟设备代码进行分析,以识别其中的错误处理代码块;
8.步骤s2,收集错误处理代码块,并构建对应的代码库;
9.步骤s3,基于代码库通过变异和随机生成的方式生成测试用例;
10.步骤s4,将测试用例输入到虚拟设备中进行模糊测试迭代。
11.进一步地,错误处理代码块为存在释放内存对象的描述符、释放锁的api、调试报告操作的位置。
12.进一步地,所述步骤s2还包括对错误处理代码块进行分类;所述错误处理代码块的类别包括资源释放类、调试报告类。
13.进一步地,所述步骤s4还包括:
14.观察虚拟设备的运行状态,以检测是否出现崩溃情况。
15.进一步地,如果出现崩溃情况时,记录相应的输入和输出信息;
16.如果未出现崩溃情况,则计算当前路径与目标错误处理代码块的路径的距离,若当前距离最小,则作为新的测试用例加入语料集中,为下一轮定向模糊测试提供反馈。
17.本发明实施例的第二方面提供了一种基于错误处理代码导向的虚拟设备模糊测
试装置,包括一个或多个处理器,用于上述的基于错误处理代码导向的虚拟设备模糊测试方法。
18.本发明实施例的第三方面提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,用于实现上述的基于错误处理代码导向的虚拟设备模糊测试方法。
19.与现有技术相比,本发明的有益效果为:本发明公开了一种基于错误处理代码导向的虚拟设备模糊测试方法,通过静态分析技术识别错误处理代码块,并以此构建代码库,将测试用例输入到虚拟设备中进行模糊测试迭代,并以识别到的错误处理代码块为目标来实施定向模糊测试fuzzing,能够有效地提高测试用例的覆盖率,发现更多的深层次安全问题。与传统的测试方法相比,本发明方法具有测试效率高、测试效果好等优点。
附图说明
20.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
21.图1是本发明方法的流程图;
22.图2是本发明实施例提供的模糊测试的架构图;
23.图3是本发明实施例提供的基于错误处理代码导向的虚拟设备模糊测试装置的示意图。
具体实施方式
24.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
25.需要说明的是,在不冲突的情况下,下述的实施例及实施方式中的特征可以相互组合。
26.如图1和图2所示,本发明实施例提供了一种基于错误处理代码导向的虚拟设备模糊测试方法,在预处理阶段通过静态分析技术收集虚拟设备代码中的错误处理逻辑,包括资源释放类、调试报告类的代码。然后以这些错误处理代码块为目标来实施定向模糊测试fuzzing,使得测试能够发现深藏于异常处理不当导致的安全问题。所述方法具体包括以下步骤:
27.步骤s1,采用静态分析技术对虚拟设备代码进行分析,以识别其中的错误处理代码块。
28.需要说明的是,错误处理代码块为存在释放内存对象的描述符、释放锁的api、调试报告操作的位置。
29.步骤s2,收集错误处理代码块,并构建对应的代码库。
30.进一步地,所述步骤s2还包括对错误处理代码块进行分类;所述错误处理代码块的类别包括资源释放类、调试报告类。
31.步骤s3,基于代码库通过变异和随机生成的方式生成测试用例。
32.步骤s4,将测试用例输入到虚拟设备中进行模糊测试迭代,直至虚拟设备代码的分支覆盖率稳定。
33.进一步地,所述步骤s4还包括:观察虚拟设备的运行状态,以检测是否出现崩溃情况。
34.如果出现崩溃情况就代表找到了漏洞,则记录相应的输入和输出信息,以供后续的分析和修复。
35.如果未出现崩溃则计算当前路径与目标错误处理代码块的路径间的距离,若当前距离最小,则作为新的有趣种子加入语料集中,为下一轮定向模糊测试提供反馈。
36.实施例1:
37.步骤s1,采用codeql静态分析工具对qemu中hw目录下的所有虚拟设备代码进行分析,包括音频设备、显卡设备、网卡设备、存储设备等等。以识别其中的错误处理代码块,如存在释放内存对象的描述符(如free,fclose)、释放锁的api(如kvm_slot_unlock)、调试报告(如error_report)等操作的位置,这些都是存在于错误处理上下文中的,例如通过代码中某条件判断后直接通过goto跳转到错误处理位置。
38.步骤s2,收集识别出来的错误处理代码块,包括资源释放类、调试报告类的代码,并构建相应的代码规则库并保存至本地。
39.步骤s3,基于代码规则库作为目标点,结合aflgo定向fuzzing引擎,通过变异和随机生成的方式生成测试用例,以测试程序中的代码块并逐渐靠近这些错误处理代码的位置,尽可能赋予更多的权重去测试错误异常处理部分。
40.步骤s4,将生成的测试用例输入到虚拟设备中,并观察其运行状态,以检测是否出现崩溃情况。
41.如果出现崩溃情况就代表找到了漏洞,则记录相应的输入和输出信息,以供后续的分析和修复。
42.如果未出现崩溃则计算当前路径与目标错误处理代码块的路径,距离衡量标准采用欧拉距离算法,若当前距离最小,则作为新的有趣种子加入语料集中,为下一轮定向模糊测试提供反馈。
43.步骤s5,重复步骤s3-s4,直至虚拟设备相关代码的分支覆盖率趋于稳定。
44.综上所述,本发明公开了一种基于错误处理代码导向的虚拟设备模糊测试方法,通过静态分析技术识别错误处理代码块,并以此构建代码库,将测试用例输入到虚拟设备中进行模糊测试迭代,并以识别到的错误处理代码块为目标来实施定向模糊测试fuzzing,能够有效地提高测试用例的覆盖率,发现更多的深层次安全问题。与传统的测试方法相比,本发明方法具有测试效率高、测试效果好等优点。
45.与前述基于错误处理代码导向的虚拟设备模糊测试方法的实施例相对应,本发明还提供了基于错误处理代码导向的虚拟设备模糊测试装置的实施例。
46.参见图3,本发明实施例提供的一种基于错误处理代码导向的虚拟设备模糊测试装置,包括一个或多个处理器,用于实现上述实施例中的基于错误处理代码导向的虚拟设备模糊测试方法。
47.本发明基于错误处理代码导向的虚拟设备模糊测试装置的实施例可以应用在任
意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图3所示,为本发明基于错误处理代码导向的虚拟设备模糊测试装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
48.上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
49.对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
50.本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的基于错误处理代码导向的虚拟设备模糊测试方法。
51.所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备,例如所述设备上配备的插接式硬盘、智能存储卡(smart media card,smc)、sd卡、闪存卡(flash card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
52.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

技术特征:
1.一种基于错误处理代码导向的虚拟设备模糊测试方法,其特征在于,所述方法包括:步骤s1,采用静态分析技术对虚拟设备代码进行分析,以识别其中的错误处理代码块;步骤s2,收集错误处理代码块,并构建对应的代码库;步骤s3,基于代码库通过变异和随机生成的方式生成测试用例;步骤s4,将测试用例输入到虚拟设备中进行模糊测试迭代,直至虚拟设备代码的分支覆盖率稳定。2.根据权利要求1所述的基于错误处理代码导向的虚拟设备模糊测试方法,其特征在于,错误处理代码块为存在释放内存对象的描述符、释放锁的api、调试报告操作的位置。3.根据权利要求1或2所述的基于错误处理代码导向的虚拟设备模糊测试方法,其特征在于,所述步骤s2还包括对错误处理代码块进行分类;所述错误处理代码块的类别包括资源释放类、调试报告类。4.根据权利要求1所述的基于错误处理代码导向的虚拟设备模糊测试方法,其特征在于,所述步骤s4还包括:观察虚拟设备的运行状态,以检测是否出现崩溃情况。5.根据权利要求4所述的基于错误处理代码导向的虚拟设备模糊测试方法,其特征在于,如果出现崩溃情况时,记录相应的输入和输出信息;如果未出现崩溃情况,则计算当前路径与目标错误处理代码块的路径的距离,若当前距离最小,则作为新的测试用例加入语料集中,为下一轮定向模糊测试提供反馈。6.一种基于错误处理代码导向的虚拟设备模糊测试装置,其特征在于,包括一个或多个处理器,用于实现权利要求1-5中任一项所述的基于错误处理代码导向的虚拟设备模糊测试方法。7.一种计算机可读存储介质,其上存储有程序,其特征在于,该程序被处理器执行时,用于实现权利要求1-5中任一项所述的基于错误处理代码导向的虚拟设备模糊测试方法。

技术总结
本发明公开了一种基于错误处理代码导向的虚拟设备模糊测试方法与装置,属于虚拟化安全领域。本发明方法采用静态分析技术对虚拟设备代码进行分析,以识别其中的错误处理代码块;收集错误处理代码块,并构建对应的代码库;基于代码库通过变异和随机生成的方式生成测试用例;将测试用例输入到虚拟设备中进行模糊测试迭代,并以这些错误处理代码块为目标来实施定向模糊测试,从而实现对异常处理不当导致的安全问题的检测。的安全问题的检测。的安全问题的检测。


技术研发人员:潘高宁 陈双喜 吴春明
受保护的技术使用者:嘉兴职业技术学院
技术研发日:2023.05.22
技术公布日:2023/8/28
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐