【论文总结】V-Shuttle:可扩展和语义感知的 Hypervisor 虚拟设备模糊测试

news/2024/5/19 22:28:39/

介绍

这是来自2021 CCS的一篇论文,作者有GaoningPan, Xingwei Lin, Xuhong Zhang, Yongkang Jia, Shouling Ji, Chunming Wu, Xinlei Ying, Jiashui Wang, Yanjun Wu。该论文提出V-shuttle的新框架来执行管控程序的模糊测试,该框架执行可扩展和语义感知的管理程序模糊测试。

该论文的贡献:

1.因为由DMA传输的数据结构是根据协议规范以嵌套的形式构建的。如果不能理解虚拟设备的协议,就会使模糊过程停留在初始模糊阶段,导致模糊效率低下,因此应对这种挑战,作者提出了新的框架V-Shuttle。

2.对世界上两个流行的管理程序平台QEMU和VirtualBox评估,发现35个bug并分配了17个CVE。

前置知识

1.云计算的核心是虚拟机管理程序,也称为虚拟机监视器(VMM),对虚拟机监视器的攻击可能导致虚拟机越权或权限提升。云计算中的Hypervisor(虚拟化管理程序)是一种软件或固件层,它允许在物理计算机上运行多个虚拟机实例。

Hypervisor使得多个虚拟机之间可以相互隔离,以便它们可以独立运行,就像它们运行在物理计算机上一样。云计算中的Hypervisor通常分为两种类型:类型1和类型2。类型1 Hypervisor(也称为“裸金属” Hypervisor)直接安装在物理计算机上,而类型2 Hypervisor则在操作系统之上运行。Hypervisor在云计算中起着至关重要的作用,因为它允许将计算资源动态分配给多个虚拟机实例,以便满足不断变化的计算需求。同时,它还提供了额外的安全性,通过在虚拟机之间建立隔离层来防止恶意软件和攻击。

2.MMIO(Memory-Mapped I/O)是一种在计算机系统中用于实现输入/输出(I/O)的机制。它使用计算机的内存地址空间来寻址和访问I/O设备,使得I/O设备的数据可以像内存一样被处理和操作。

MMIO通常通过将I/O设备的寄存器映射到计算机的物理内存空间来实现。当程序需要读取或写入I/O设备的数据时,它可以像读取或写入内存一样访问相应的内存地址。此时,MMIO机制会将访问请求转换为对相应I/O设备寄存器的读取或写入操作。MMIO相比于另一种常见的I/O机制DMA(Direct Memory Access)具有更低的延迟和更高的灵活性,因为它不需要额外的硬件支持,且能够提供更好的隔离性和安全性。但是,MMIO也可能会对系统性能产生一定的影响,因为它需要与其他系统资源共享内存带宽和处理器时间。

3.QEMU 是一个快捷的跨平台开源计算机模拟器,可以模拟许多硬件体系结构。 QEMU 可让您在现有系统(VM 主机服务器)之上运行未经修改的完整操作系统(VM Guest)。

4.常规虚拟设备传输:

从总体上说,虚拟设备向客户机开放了3个重要的交互接口:内存映射I/O(MMIO)、端口I/O(PIO)和直接存储器存取(DMA)。大多数设备遵循通用操作模式,首先通过MMIO对设备进行初始化,然后通过DMA完成复杂数据传输。通常直观的方法就是使用模糊测试技术将随机数据写入这些接口,但通过DMA传输的数据是高度嵌套的,这严重阻碍了传统的模糊测试扩展其代码覆盖率。

具体来说,设备规范中定义的数据结构通常采用树状结构,其中每个节点包含指向下一个节点的链接指针。某些DMA操作会从客户机的空间获取大量输入,并在输入结构中使用嵌套结构,即一个结构中的字段成员指向另一个结构。从随机模糊测试的角度来看,这种嵌套结构是很难构建的,因为它必须正确推测整个组织(层次嵌套模式)的语义和每个节点(即指向另一个节点的指针字段)的内部语义。

虚拟机一般工作流:在设备执行的初始阶段,客户机驱动程序通常会将数据写入MMIO或PIO区域,让设备完成一些初始化工作,例如设置设备状态和初始化针对客户机中预分配缓冲区的地址寄存器。初始化阶段完成后,设备将进入准备处理数据的状态。设备开始完成一些特定的工作(如传输USB数据和发送网络包)。上述数据处理阶段的主要交互机制是DMA,它支持设备向客户机传输大型和复杂的数据。由于数据处理部分是设备的主要功能,包含大多数代码路径,因此它比其他部分更有可能引入安全风险。
在这里插入图片描述

驱动程序与设备交互

作者首先证明了DMA在虚拟机管理器设备的广泛使用,对QEMU设备统计分析。证明DMA在虚拟机管理器中被广泛使用。
在这里插入图片描述
虚拟机管理器可用于客户机内存之间的传输数据,通过DMA和特定API,达到设备和驱动程序通信。比如在QEMU中有pci_dma_readpci_dma_write,前者将数据块从客户机的内存复制到主机缓冲区中,后者将主机缓冲区的数据块写入客户机。

由于DMA机制传输的数据对象通常构造为嵌套结构(即结构A包含一个指向结构B的指针),这种特性对虚拟机管理器的模糊测试产生了影响。
在这里插入图片描述

虚拟机管理器处理嵌套结构的方式如下

1.从根节点开始,虚拟机管理器首先会获取一个指向数据结构A的指针

2.虚拟机管理器通过动态分配缓冲区来存储A的副本

3.虚拟机管理器使用pci_dma_read将A从客户机内存复制到已分配的缓冲区

4.根据A中的指针字段,即子节点B,虚拟机管理器分配另一个缓冲区来存储B的副本;虚拟机管理器再次执行pci_dma_read将B从客户机内存复制到已分配的缓冲区

5.根据B中的指针,虚拟机管理器再次执行pci_dma_read来复制下一个结构C

综上所述,虚拟机管理器以递归的方式遍历树状结构并向下移动,直至抵达终止节点,并在每个节点处储存了用户提供结构的副本。由于复杂的结构嵌套形式,传统的模糊测试方法就无法正确地对整个数据结构进行处理。

威胁模型

假设攻击者是一个对虚拟机之内的内存拥有完全访问权限的客户机用户,因此可向其设备发送任意数据。这种假设是合理的,因为在公有云场景中,每个用户对自己的虚拟机都享有root权限。如果虚拟机管理器不小心处理来自客户机用户的不可信数据,就会出现拒绝服务(DoS)、信息泄露或权限提升等安全问题。一旦攻击者利用虚拟机管理器中的漏洞进行虚拟机逃逸,就可以接管同一主机上的其他虚拟机,从而进一步访问存储在被利用虚拟机以外的敏感数据。

V-shuttle设计

从总体上说,V-SHUTTLE旨在将由覆盖率引导的模糊测试和静态分析技术相结合,形成一个可规模化、语义感知和轻量级的虚拟机管理器模糊测试框架。此外,为了应对模糊测试中与虚拟机管理器有关的特殊挑战,V-SHUTTLE设计了两种不同的方案。重定向与DMA相关的函数和通过种子池执行语义感知模糊测试。

利用集成到虚拟机管理器中的模糊测试代理将随机输入反馈送到虚拟设备(即模糊测试目标)中。模糊测试代理在虚拟机管理器中运行,持续向被测试的虚拟设备发送读/写请求。

作者首先重定向DMA数据的传输,将指针索引的DMA内存访问拦截并定位到我们可控的Fuzzing输入中,从而消除hypervisor对数据结构的寻址,以确保每个DMA请求都能获取到Fuzzing输入。然后,作者通过将不同DMA对象类型的结构组织到不同的类别中,并使用seedpool来维护这些不同类别的种子队列,从而执行细粒度语义感知Fuzzing。该方法能够为每个DMA请求都能提供语义有效的Fuzzing种子,这进一步提高了模糊化的效率。
在这里插入图片描述

实验结果

作者在16个QEMU设备上验证了V-SHUTTLE的可扩展性。实验结果表明V-SHUTTLE确实能有效提高代码覆盖率,具有规模化的优势,能够自动化探索hypervisor的深层代码,避免了根据文档构建测试用例的繁琐工作,覆盖率相较于state-of-the-art的Fuzzing工具有着明显提升。
在这里插入图片描述
此外,V-SHUTTLE也优于纯随机的Dumb Fuzzing以及结构化感知Fuzzing。
在这里插入图片描述
在漏洞挖掘方面,V-SHUTTLE在QEMU和VirtualBox中共找到了35个未知漏洞,其中17个授予了CVE编号。


http://www.ppmy.cn/news/46959.html

相关文章

AVL树(C++实现)

文章目录 AVL树的概念AVL树结点定义AVL树的插入AVL树的旋转左单旋右单旋左右单旋右左双旋 AVL树的验证AVL树的性能AVL树及测试完整代码 AVL树的概念 二叉搜索树虽然可以缩短查找的效率,但如果数据有序或接近有序,那么二叉搜索树将退化为单支树,查找元素则相当于在顺序表中搜索…

WHOIS查询参考:域名注册信息的含义

以下详细说明了域名的域名所有者、管理联系人、技术联系人、付费联系人等信息的中英文含义。为注册域名和whois查询提供参考。 域名所有者注册信息含义 域名所有者(Registrant)是指域名属于谁,用于判定域名所有权。域名所有者可以是单位企业…

C语言实现顺序表--数据结构

魔王的介绍:😶‍🌫️一名双非本科大一小白。魔王的目标:🤯努力赶上周围卷王的脚步。魔王的主页:🔥🔥🔥大魔王.🔥🔥🔥 ❤️‍&#x1…

如何使用Tensorflow神经网络模型来完成兰州房价预测分析?

兰州房价预测是一个非常热门的话题,许多人都对如何预测兰州房价感兴趣。在本文中,我将介绍如何使用TensorFlow来预测兰州房价,并提供Python源代码。 首先,我们需要收集兰州的房价数据。我们可以从房地产网站或政府统计数据中获取。在本文中,我们将使用Kaggle上提供的兰州…

收音机知识,调谐(选频/滤波),调制(升频)

参考:https://www.bilibili.com/video/BV1d14y1N7nm/?spm_id_from333.999.0.0&vd_source00bd76f9d6dc090461cddd9f0deb2d51 有关知识提纲 整个信号的传输变化调谐人耳听到声音的频率范围(20~20000Hz)天线和传送信号的波长关系波长和天线…

RHCE第一次作业at和cront两个任务管理程序的区别

1.at 单一执行的例行性工作:仅处理执行一次就结束了 -m 当任务完成之后,即使没有标准输出,将给用户发送邮件 -l atq的别名,可列出目前系统上面的所有该用户的at调度 -d atrm的别名,可以取消一个在at调度中的工作 -v 使用较明显的…

pandas中df.groupby详解?

df.groupby 是 pandas 库用于实现按照某些列进行拆分,应用函数和组合的一个功能。步骤如下: 1. 按照指定的一列或多列进行分组 (grouping) 2. 对每个分组应用一个聚合函数 (aggregation) 3. 将每个分组的聚合结果合并成一个数据结构 语法: df…

Session详解(重点)

类似于去服务器注册账号,只要服务器不停机,自己注册的账号一直会存在服务器。 什么是Session: 1.服务器会给每一个用户(浏览器)创建一个对象; 2.一个Session独占一个浏览器,只要浏览器没有关…

***大论文中插入Visio不失真方法:word插入viso图片方法

***大论文中插入Visio不失真方法:word插入viso图片方法 1、可以直接导出emf2、如果利用emf导致字符间距过大,可以选择下面方式 1、可以直接导出emf 导出emf方法: 打开visio --> 另存为 --> 选择emf格式文件 打开word --> 插入图片…

[API]ListList方法集合排序Lambda表达式(四)

List接口: 继承自Collection接口,List集合是可重复集合,并且有序,还提供了一套可以通过下标来操作元素的方法 常见的实现类: ArrayList:内部使用数组实现,查询性能更好(直接下标找到物理地址)、…

开源GPT-4小羊驼(Vicuna)快速上手指南

小羊驼(Vicuna)是什么 Vicuna: 一个开源的GPT,宣称实现了GPT-4 90%的功能。 UC伯克利学者联手CMU、斯坦福等,再次推出一个全新模型70亿/130亿参数的Vicuna,俗称「小羊驼」(骆马)。 并且和其他以往不同的是…

2023红明谷杯部分WP

0x00 签到 一直点就能得到flag 0x01 Dreamer 拿到题感觉有点儿懵 先下发靶机看一眼 梦想家CMS,好嘛,我直接一手查找官网 直接一手演示中心碰运气 哎嘿嘿,运气不错进去了,突然想起之前有位大佬写的关于Dreamer CMS的代码审…

基于ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升环境、生态、水文、土地、土壤、农业、大气等领域的数据分析能力与项目科研水平

【原文链接】:基于ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升环境、生态、水文、土壤、农业、大气等领域的数据分析https://mp.weixin.qq.com/s?__bizMzU5NTkyMzcxNw&mid2247537467&idx4&sn10c4c12897282daf5320efae05caf3a4&chksmfe689551…

​​2021遥感应用组二等奖:基于机器学习回归算法的鄱阳湖水质遥感定量反演及时序变化监测研究

作品介绍 一、作品背景 鄱阳湖是中国第一大淡水湖,也是中国第二大湖,它在调节长江水位、涵养水源、改善当地气候等方面起着重大的作用。但近年来受围垦、环境污染等人类活动影响,鄱阳湖湿地退化严重,同时使鄱阳湖的容量减少&…

Kafka的历史版本对应SpringBoot版本

截至目前(2023年),Kafka的最新版本是2.9.0,发布于2022年11月30日。Kafka的历史版本可以在Kafka官方网站的下载页面中找到。Kafka从0.8版本开始发布,经历了多个版本的迭代和升级。以下是一些比较重要的Kafka版本及其发布…

US News退榜风波后,发布最新美国最佳法学院和医学院排名

从2022年11月开始,美国权威排名机构US News不断陷入风波。耶鲁大学法学院率先宣布退出US News法学院排名,先是法学院,后是医学院,包括哈佛大学大学、斯坦福大学、哥伦比亚大学和加州大学伯克利分校等名校也纷纷宣布退出。 这些老…

The 1st Universal Cup Stage 12: ̄Ookayama, April 15-16, 2023 题解

A XOR Tree Path 给一颗树&#xff0c;树上点有黑白两色&#xff0c;每次可以选一个叶子节点&#xff0c;翻转其到根路径上所有点的颜色&#xff0c;问最大黑色点数。 树dp #include<bits/stdc.h> using namespace std; #define MAXN (10000010) #define ll long long…

【社区图书馆】启迪后人——GPT 与读书的奇妙之旅

随着科技的发展和人工智能的不断进步&#xff0c;我们的阅读方式也在逐渐改变。作为一个热爱读书的人&#xff0c;我深感好奇与惊讶地发现&#xff0c;GPT&#xff08;即生成预训练 Transformer&#xff09;正以前所未有的方式拓展我们的阅读视野。在这篇博客中&#xff0c;我将…

RabbitMQ-整合mqtt

用 springboot rabbitmq可以搭建物联网&#xff08;IOT&#xff09;平台&#xff0c;rabbitmq 不是消息队列吗&#xff0c;原来rabbitmq有两种协议&#xff0c;消息队列是用的AMQP协议&#xff0c;而用在智能硬件中的是MQTT协议。 一、rabbitmq是什么&#xff1f; RabbitMQ就…

Windows 自带环境变量

目录 Windows自带环境变量说明Windows自带环境变量总结 所谓 Windows 环境变量&#xff0c;指的是 Windows 指定操作系统工作环境的一些设置选项或属性参数&#xff0c;比方说指定系统文件夹或临时文件夹的位置等。与常量相比&#xff0c;一个环境变量往往由变量名称和变量值组…