qemu 规范路径_QEMU-KVM虚拟化平台下虚机逃逸漏洞修复方案

23cf5450a2f8de829b581246d08ecab3.png

一、漏洞简介

23cf5450a2f8de829b581246d08ecab3.png近期,社区在QEMU-KVM虚拟化平台的vhost内核模块中发现了一个缓冲区溢出漏洞(CVE-2019-14835),可能在虚拟机热迁移过程中被滥用,拥有特权的Guest用户可以将长度无效的描述符传递给宿主机,并升级其在宿主机上的特权,进而通过此漏洞实现虚拟机逃逸攻击,操纵虚拟机使宿主机内核崩溃或在物理机内核中执行恶意代码,控制宿主机。

23cf5450a2f8de829b581246d08ecab3.png

二、virtio 网络简介

23cf5450a2f8de829b581246d08ecab3.pngvirtio是为虚拟机开发的标准化开放接口,用于访问简化的设备,如块设备和网络适配器。virtio-net是一个虚拟以太网卡,是virtio迄今为止支持的最复杂的设备。

23cf5450a2f8de829b581246d08ecab3.png

图 1 vhost-net / virtio-net架构

virtio网络有2层(如图1所示):

1、Control plane:用于主机和客户之间建立和终止Data plane的能力交换协商

2、Data plane:用于在主机和客户端之间传输实际数据

其中,Control plane基于virtio规范,定义如何在Guest和Host之间创建控制平面和数据平面,为了性能Data plane并没有采用virtio规范,而是使用了vhost协议来进行数据传输。

由图1中可以看出,virtio中位于Guest的组件为virtio-net,作为前端运行在Guest内核空间,位于Host的组件为vhost-net,作为后端运行在Host内核空间。

23cf5450a2f8de829b581246d08ecab3.png

图 2 virtio 网络数据传输

在实际的Data plane通信过程中,发送和接收是通过专用的队列完成的(如图2所示),对于每个虚拟cpu都会创建一个发送和一个接收队列。

以上描述了Guest如何使用virtio网络将包传递给主机内核。为了将这些包转发给在同一主机上或在主机(如internet)之外运行的其他客户机,需要使用OVS。

OVS是一个软件交换机,它允许在内核中转发数据包。它由用户空间部分和内核部分组成(如图3所示):

用户空间:包括用于管理和控制交换机的数据库(ovsdb-server)和OVS守护进程(OVS -vswitchd)

内核空间:包括负责数据路径或转发平面的ovs内核模块

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值