Xen 6.5和Xen 7.x的崩溃和幽灵缓解

时间:2020-02-23 14:31:22  来源:igfitidea点击:

这涵盖了Xen 6.5和Xen 7.x上的Meldown和Spectre缓解。到目前为止,我们可能已经听说了影响Linux,OS X和Windows操作系统上的Intel处理器的熔化和幽灵漏洞。大多数云提供商和Linux发行都已开始为其推送补丁程序。

Meltdown如何影响VM和虚拟化基础架构?

我们可以通过访问https://spectreattack.com/了解更多信息。总之,Meltdown打破了CPU内存隔离功能给出的所有安全性假设,该功能允许无特权的进程读取映射到内核地址空间中的数据,包括Linux和OS X上的整个物理内存,以及Linux上的很大一部分物理内存。视窗。

这可能包括其他进程,内核的物理内存,以及在半虚拟化模式下共享内核的沙箱解决方案(例如Docker,LXC)或者Xen的情况下,内核(或者虚拟机管理程序)的内存以及其他位于同一地点的内存实例。

在同一虚拟机管理程序(物理服务器)上同时存在多个虚拟机的云平台上,受感染的虚拟机可用于深入查看其邻居的秘密。

崩溃如何影响Xen?

如果我们在以下任何列表中,崩溃和幽灵都会影响虚拟化基础架构:使用Intel CPU运行64位PV(半虚拟化VM)请注意,HVM/PVHVM VM不受影响。在云中提供/运行VM /具有公共Internet访问权限的VM(不受信任)虚拟机)

据报道,唯一受影响的是64位虚拟机,因为它们与Hypervisor共享相同的地址空间(但具有不同的特权)。由于硬件虚拟机(HVM)不会以任何方式与管理程序共享地址空间,因此它们不会受到影响。

缓解Xen崩溃

在Xen上缓解Meltdown的推荐方法是将已虚拟化的虚拟机迁移到硬件虚拟机。在本指南中,我将向我们介绍如何完成此操作。

获取受影响的虚拟机列表。

首先,我们需要识别虚拟化的虚拟机,在Xen CLI上使用以下命令:

# xe vm-list HVM-boot-policy= is-control-domain=false

这将列出所有带有PV的VM,以通过UUID进一步过滤,请使用以下命令:

# xe vm-list HVM-boot-policy= is-control-domain=false | \
egrep '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' -o

当然,我们可以将上述命令的输出通过管道传递到文件中,以供以后使用:

# export pv_guests_file="./pv_guests.txt"
# xe vm-list HVM-boot-policy= is-control-domain=false | \
egrep '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' -o > $pv_guests_file

将PV Guest虚拟机转换为HVM

现在将输出保存到文件./pv_guests.txt。仅使用UUID存储的虚拟机列表,我们可以在bash中编写一个简单的while循环,将列出的所有VM从PV转换为HVM:

cat $pv_guests_file | while read VM_UUID; do
  xe vm-param-set HVM-boot-policy="BIOS order" uuid=${VM_UUID}
done

用于在Xen isxe中将PV转换为HVM的命令ism vm-param-set HVM-boot-policy = BIOS order uuid = <VM-UUID>

崩溃并从Spectre PV到HVM Xen修补脚本

概括一下,让我们将其放入易于复制和粘贴的shell脚本中:

# vim pv_to_hvm.sh

然后粘贴:

#!/bin/bash

pv_guests_file="./pv_guests.txt"

# Convert PV Guest VMs to HVM

get_pv_guests () {
 echo "Getting HV Guest VMs..."
 sleep 3
 xe vm-list HVM-boot-policy= is-control-domain=false | \
 egrep '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' -o > $pv_guests_file
}

# Convert PV Guests to HVM

convert_pv_hvm () {
 cat $pv_guests_file | while read VM_UUID; do
 xe vm-param-set HVM-boot-policy="BIOS order" uuid=${VM_UUID}

# Check status
 if [[ $? -eq '0' ]]; then
 echo "VM with UUID $VM_UUID successfully converted from PV to HVM"
 else
 echo "VM with UUID $VM_UUID failed to convert from PV to HVM."
 fi
done
}

# Run main

get_pv_guests
convert_pv_hvm

使脚本可执行并运行。

# chmod +x pv_to_hvm.sh
# ./pv_to_hvm.sh

在Xen上成功地将VM从PV迁移到HVM之后,应该可以安全地从Xen上的Meltdown迁移。