虚拟化 (IaaS) 如何防止 CPU 微码更新和固件更改?

信息安全 硬件 虚拟化 BIOS
2021-09-03 05:21:05

假设不可能从来宾 VM 启动CPU 微码更新和固件更新是否安全?

哪些软件或硬件技术可以保护我的客户操作系统免于更改或编辑系统可能存在的这些或其他固件

1个回答

是的,我认为可以安全地假设 VM 会阻止来宾更新物理 CPU 的 CPU 微码。

更新 Intel CPU 上的微码涉及执行 WRMSR 指令,MSR 为 0x79。这是一条特权指令,只能在 CPU 处于特权模式(CPL=0)时执行。

虚拟机监视器 (VMM) 应该捕获所有特权指令,包括这条指令,并采取适当的步骤来模拟它。虽然我没有检查任何 VMM 的代码,但我希望合理的 VMM 可能会拒绝更新,或者可能会忽略它,但没有合理的 VMM 应该允许来宾更新主机运行的物理 CPU 的微码. VMM 允许客户请求微码更新并在主机 CPU 上实际执行该请求,这将是相当令人惊讶的。


更新其他硬件外围设备的固件是一个更棘手的问题。答案将取决于 VMM 如何管理对该硬件设备的访问。

如果硬件设备是模拟或虚拟化的,那么合理的 VMM 应该阻止来宾将固件更新加载到设备中(以类似的方式:加载固件更新需要 I/O 与设备交互,并且 VMM 应该限制 I/O /O 与设备)。

但是,如果 VMM 为来宾提供对硬件设备的无限制直接访问(即,将设备直接分配给该来宾),那么我怀疑来宾可能能够加载固件更新,如果设备允许的话。

硬件设备的虚拟化策略将取决于您使用的特定 VM;有些虚拟机使用仿真或虚拟化,但有些虚拟机在某些情况下也可能使用直接分配。我不是这方面的专家,也不能权威地谈论它。如果您担心,请选择一个提供完全虚拟化或模拟所有设备的 VM,并且不使用直接分配让来宾直接不受限制地访问任何硬件外围设备。


参考:

请参阅英特尔® 64 和 IA-32 架构开发人员手册:卷。3A的第 9.11.6 节描述了加载 CPU 微码更新的过程,第 9.11 节描述了一般的 CPU 微码更新。