[发明专利]一种针对云计算系统虚拟设备的模糊测试方法及系统有效
申请号: | 201910439189.7 | 申请日: | 2019-05-24 |
公开(公告)号: | CN110348216B | 公开(公告)日: | 2021-04-06 |
发明(设计)人: | 向浩;刘剑;霍玮;朴爱花;曹明昊 | 申请(专利权)人: | 中国科学院信息工程研究所 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06F9/455;G06F11/36;H04L29/06 |
代理公司: | 北京君尚知识产权代理有限公司 11200 | 代理人: | 邱晓锋 |
地址: | 100093 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 针对 计算 系统 虚拟 设备 模糊 测试 方法 | ||
1.一种针对云计算系统虚拟设备的模糊测试方法,其特征在于,包括以下步骤:
(1)遍历目标虚拟设备的系统函数列表,正则匹配目标虚拟设备的回调函数接口;
(2)静态分析回调函数接口,提取地址偏移参数的约束取值范围;
(3)依据地址偏移参数的约束取值范围和目标虚拟设备的测试用例输入数据结构,生成测试用例;
(4)插桩目标虚拟设备的QEMU的Qtest执行引擎,驱动PCI总线初始化,获取PCI总线的初始化序列;
(5)插桩目标虚拟设备的回调函数接口,获取启动客户机时指定的目标虚拟设备的内存寄存器的初始化序列;
(6)以步骤(3)生成的测试用例为种子数据,对目标虚拟设备的QEMU进程进行测试,QEMU进程重放步骤(4)和步骤(5)获取的初始化序列,使设备达到初始化状态,然后重放测试用例;
(7)测试进程监控QEMU进程,如果QEMU进程产生异常,则记录产生异常的测试用例,然后通过测试用例最小化进程缩减测试用例,并自动生成POC程序代码来验证发现的异常。
2.根据权利要求1所述的方法,其特征在于,所述测试用例包含多个I/O元测试数据;所述I/O元测试数据的数据结构包含三个字段域:元数据头字段域、寄存器地址偏移字段域、寄存器值字段域;根据设备的类型和寄存器的类型设计三个字段域的大小。
3.根据权利要求2所述的方法,其特征在于,所述元数据头字段域只有1个字节,元数据头字段域的第1个比特位是读写位,第2~4个比特位表示寄存器值的大小,第5~7个比特位表示寄存器组类型,最后1个比特位表示设备输入输出映射类型,即MMIO/PIO;所述寄存器地址偏移字段域的大小与设备的寄存器组的地址范围有关,不同设备的寄存器组的地址范围不同;所述寄存器值字段域的大小范围是1~4字节,所述寄存器值字段域当且仅当所述元数据头字段域的第1个bit位标记为写时才有效。
4.根据权利要求1所述的方法,其特征在于,步骤(6)使用模糊测试工具AFL来驱动QEMU进程,实现自动化的模糊测试,包括:首先通过AFL启动QEMU进程,然后QEMU进程中的模糊测试执行引擎依次执行初始化集和种子集中的数据,分别实现设备的初始化和设备测试用例的重放,通过对目标设备的内存或I/O地址空间进行读写,来完成对目标设备代码的测试。
5.根据权利要求1所述的方法,其特征在于,步骤(6)中获得被选择性插桩的目标虚拟设备代码分支的覆盖信息,并基于覆盖信息的反馈变异种子数据生成新的测试用例,然后启动新的QEMU进程,重放新的测试用例。
6.根据权利要求1所述的方法,其特征在于,步骤(7)所述通过测试用例最小化进程缩减测试用例,包括:将测试用例依次等划分为序列块,第一轮按照划分的序列块依次缩减测试用例,若缩减后的测试用例依然能够造成虚拟机崩溃或者挂起,则表示此次序列块缩减有效,修改该序列块的序列标志位为1;若无效,暂时保留该序列块,修改该序列块的序列标志位为0;第二轮,将保留的序列块再依次等划分为较小的序列块,并按照较小序列块逐步缩减测试用例;依次类推,直至按照单个序列缩减测试用例得到最小的测试用例。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院信息工程研究所,未经中国科学院信息工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910439189.7/1.html,转载请声明来源钻瓜专利网。