Xen 6.5和Xen 7.x的崩溃和幽灵缓解
这涵盖了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迁移。