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

news2024/11/15 8:58:09

介绍

这是来自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.coloradmin.cn/o/443058.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LDR6328 PD诱骗(取电)芯片概述,支持定制化取电

PD充电需要在供电端(充电器)和受电端(产品上)都要有协议通信,一般充电器内有PD供电协议芯片,产品上有PD协议受电芯片,两者连接后会进行通信握手,连接成功后充电器才会输出需要的电压…

银行数字化转型导师坚鹏:商业银行对公业务数字化风控

商业银行对公业务数字化风控 课程背景: 数字化背景下,很多银行存在以下问题: 不清楚商业银行数字化风控发展现状? 不清楚对公业务数字化风控工作如何开展? 不知道零售业务数字化风控工作如何开展? …

探索五大机器学习技术及其应用

没有一种机器学习算法可以解决所有类型的机器学习问题。机器学习任务可能千差万别,算法的选择将取决于数据的大小、维数和稀疏性等因素。目标变量、数据的质量以及特征内部以及特征与目标变量之间存在的相互作用和统计关系。 在本文中,我将提供机器学习…

【NPM】npm上传包

必须使用npm镜像,不能使用淘宝镜像 查看当前的镜像 npm config get registry切换镜像为npm (不能使用淘宝镜像) npm config set registry https://registry.npmjs.org在要发布的包文件目录执行 发布为公共包 npm publish --access publi…

【基于准交叉双边滤波:医学图像】

Medical image fusion based on quasi-cross bilateral filtering (基于准交叉双边滤波的医学图像融合) 图像融合技术是利用特定的算法从多幅图像中提取并融合特征,然后将它们组合成一幅图像的方法。然而,目前的图像融合方法大多…

学生管理系统【GUI/Swing+MySQL】(Java课设)

系统类型 Swing窗口类型Mysql数据库存储数据 使用范围 适合作为Java课设!!! 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址:​​​​​​​https://download.csdn.net/download/qq_50954361/87700422 …

react-9 函数式写法rsf,配合HOOKS基础钩子函数

函数组件和类组件区别: 1.函数组件中没有this 2.函数组件无需继承 3.函数组件默认没有状态,想要使用组件状态必须通过 HOOK 函数引入 4.函数组件默认没有生命周期函数 5.函数组件的渲染,只需要一次函数调用即可 useState :用…

广联转债上市价格预测

广联转债 基本信息 转债名称:广联转债,评级:A,发行规模:7.0亿元。 正股名称:广联航空,今日收盘价:31.09元,转股价格:32.32元。 当前转股价值 转债面值 / 转股…

软件测试之测试分类

文章目录 按测试对象分界面测试可靠性测试容错性测试文档测试兼容性测试易用性测试安装卸载测试安全测试性能测试内存泄露测试弱网测试 按代码的查看情况黑盒测试白盒测试灰盒测试 按开发阶段单元测试集成测试系统测试回归测试冒烟测试验收测试 测试的大致分类: 下…

【从零开始学Skynet】实战篇《球球大作战》(十四):agent跨服务器版

至此,我们已完成了《球球大作战》的绝大部分功能,只剩下完 善agent ,让它和 scene 服务联动了。 1、多个模块 一般而言,代理服务会承载很多系统,比如邮件、成就等,此处涉及的代码较多,容易混 乱…

<Windows> 《VMware各类问题及解决方法》(持续更新...)

《VMware各类问题》 1 虚拟机无法获取权限2 虚拟机开机无法启动原因2.1 可能原因12.2 可能原因2 1 虚拟机无法获取权限 出现原因: 在虚拟机运行时,一次非正常关机。导致虚拟机出现此错误。此虚拟机似乎正在使用中。 解决方法: 方法一&#xf…

华为电脑如何录屏?2个方法教您快速录制!

案例:如何在华为电脑上进行电脑屏幕录制? 【我是一名老师,我想在电脑上录制一段教学视频,但是我不知道如何录制我的电脑屏幕。有没有哪位朋友知道华为电脑怎么录屏?可以分享一下方法吗?】 华为电脑是目前…

【Vue】学习笔记-Vue生命周期

引出生命周期 生命周期 a.又名生命周期回调函数、生命周期函数、生命周期钩子 b.是什么:vue 在关键时刻帮助我们调用一些特殊名称的函数 c.生命周期函数的名字不可更改,但函数的具体内容是程序员根据需求编写的 d.生命周期函数中的this指向是vm或组件实…

Win10 开机输入密码后登入桌面就黑屏,只有鼠标可以移动, 打不开任务管理器,不用重装系统怎么修复?(已解决)十四个解决参考方案

环境: Win10 专业版21H2 戴尔5590笔记本 Win11PE 系统安装U盘 USB固态硬盘盒 闪迪16G U盘 DiskGenius_Pro_v5.4.3 问题描述: Win10开机输入密码登入桌面后突然黑屏,只有鼠标可以移动, 打不开任务管理器,按住ctrl shift esc鼠标会有蓝色圈转动,但是不会弹出任务管理…

Elasticsearch——文档操作

新增文档 POST /索引库名/_doc/文档id { "字段1": "值1", "字段2": "值2", "字段3": { "子属性1": "值3", "子属性2": "值4" }, // ... } 查询文档 GET /索引库名/_doc/文档id 删除…

Transactional事务失效场景汇总

文章目录 1、前言2、失效场景2.1、Service没有被Spring管理2.2、事务方法被final、static关键字修饰2.3、同一个类中,方法内部调用2.4、方法的访问权限不是public2.5、数据库的存储引擎不支持事务2.6、Transactional 注解配置错误2.7、使用了错误的事务传播机制2.8、…

elasticsearch与mysql数据同步

目录 数据同步一.思路分析1.同步调用2.异步通知3.监听binlog4.选择 二.实现数据同步1.思路2.导入demo3.声明交换机、队列3.1引入依赖3.2 配置文件3.3 声明队列交换机名称3.4 声明队列交换机 4.发送MQ消息4.1 事务配置类4.2 service 代码 5.接收MQ消息 数据同步 elasticsearch中…

数据分析----IQR(Interquartile Range)四分位距的理解与应用及Python实现

【原文链接】数据分析----IQR(Interquartile Range)四分位距的理解与应用及Python实现 一、IQR(Interquartile Range)四分位距的含义 1.1 IQR的官方定义 IQR 是用于标记离群值的另一种稳健方法。用于检测离群值的 IQR&#xff…

解放你的双手:自动化文档整理

目录 引子: 应用场景: 源代码: 源代码说明: 效果如下所示: movefiletofolderbytype.py 引子: 例如,一个人可能会在计算机上存储大量的照片、视频和文档文件,这些文件可能散落在不同的文件夹中&#xf…

1678_计算机架构黄金时代_文章阅读

全部学习汇总: GreyZhang/g_risc_v: Learning notes about RISC V. (github.com) 看了一份几年前的文章,觉得还是挺有收获的,因此做一个简单的整理。 对于架构有很大影响的主要考虑四点:专用硬件的实现、高安全性的要求、开放指令…