【技术实现步骤摘要】
一种针对云计算系统虚拟设备的模糊测试方法及系统
本专利技术涉及计算机系统安全领域,用于检测云计算系统虚拟设备中存在的安全漏洞,更具体地,是一种针对云计算系统虚拟设备的模糊测试方法及系统。
技术介绍
随着全球云计算市场份额的持续增长,作为云计算的基础,虚拟化技术得到了广泛的应用,同时,不可避免带来了很多安全问题,利用虚拟化平台漏洞进行攻击的恶意行为层出不穷。虚拟设备作为虚拟化平台的一个重要组成部分,是虚拟化平台安全威胁的主要来源之一。利用虚拟设备的漏洞可以在目标云计算系统中发起逃逸攻击或拒绝服务攻击,从而影响云计算系统的正常安全运行。虚拟设备主要运行在用户层,虚拟设备代码相比客户机系统,其执行权限更高,更接近于虚拟机管理程序。相比从客户层的客户机系统里测试虚拟机管理程序,利用虚拟设备的漏洞,从用户层渗透测试虚拟机管理程序更加直接。虚拟设备由很多开发者共同开发和维护,而且虚拟设备种类很多,虚拟设备代码体量庞大,每年都在增长,虚拟设备存在漏洞的概率很大。随着OpenStack成为众多行业构建云基础架构的首选,而OpenStack的重要组成部分—KVM计算资源虚拟化技术也随着OpenStack的普及而应用得越来越广泛。而且由于KVM和Xen的超级管理程序都使用QEMU来实现硬件设备的功能模拟,所以我们选取QEMU虚拟设备作为测试目标。测试虚拟设备存在困难和挑战,这与虚拟设备的特点相关。第一,虚拟设备是多状态的。在测试虚拟设备之前,虚拟设备需要先达到已知的设备初始化状态。虚拟设备与虚拟机管理程序交互,在不同的输入条件下呈现不同的设备状态。虚拟设备的异常往往需要在特定 ...
【技术保护点】
1.一种针对云计算系统虚拟设备的模糊测试方法,其特征在于,包括以下步骤:(1)遍历目标虚拟设备的系统函数列表,正则匹配目标虚拟设备的回调函数接口;(2)静态分析回调函数接口,提取地址偏移参数的约束取值范围;(3)依据地址偏移参数的约束取值范围和目标虚拟设备的测试用例输入数据结构,生成测试用例;(4)插桩目标虚拟设备的QEMU的Qtest执行引擎,驱动PCI总线初始化,获取PCI总线的初始化序列;(5)插桩目标虚拟设备的回调函数接口,获取启动客户机时指定的目标虚拟设备的内存寄存器的初始化序列。(6)以步骤(3)生成的测试用例为种子数据,对目标虚拟设备的QEMU进程进行测试,QEMU进程重放步骤(4)和步骤(5)获取的初始化序列,使设备达到初始化状态,然后重放测试用例;(7)测试进程监控QEMU进程,如果QEMU进程产生异常,则记录产生异常的测试用例,然后通过测试用例最小化进程缩减测试用例,并自动生成POC程序代码来验证发现的异常。
【技术特征摘要】
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)所述通过测试用例最小化进程缩减测试用例,包括:将测试用例依次等划分为序列块,第一轮按照划...
【专利技术属性】
技术研发人员:向浩,刘剑,霍玮,朴爱花,曹明昊,
申请(专利权)人:中国科学院信息工程研究所,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。