有什么合理的方法可以保护虚拟硬件上的数据吗?我所说的“虚拟硬件”是指可以从各种在线托管商那里租用的各种托管系统,它们运行在 XEN、KVM、VMWare ESXi 等之上。
使用实际的专用硬件,如果出现以下情况,人们可以在一定程度上安全地假设系统本身没有受到损害:
- 可以假定该软件是安全的,即可以假定在该机器上运行的软件(ssh、webserver 等)没有被利用或暴力破解
- 硬件可以被假设为没有受到损害,即机器没有离线,因此攻击者可以用受到损害的部件更改基本的硬件部件,如 HDD/RAM/等。(是的,我知道热插拔硬件,但我们假设它会留下足够的痕迹,无论是在日志中还是软件故障中,如果不是由合法机构完成的话。)
但是对于虚拟硬件,硬件没有受到损害的假设不再成立,因为主机可以随意暂停、复制和重新启动机器,而无需重新启动甚至离线。此外,主机可以直接访问整个虚拟机的 RAM 和磁盘 - 当它仍在运行时。
通过一些努力,主机甚至可以更改系统上的 authorized_keys 或 /etc/passwd 文件以获得对其的(root-)访问权限,因此甚至可以查看当前安装的加密分区的内容。
鉴于这些漏洞或可能的攻击,我现在的问题是:
这些漏洞有多现实,它们是真正的威胁还是只是“科幻小说”?有什么东西让它们在现实中不切实际吗?VM 软件供应商(Citrix、VMWare 等)是否实施了任何使这些攻击更加困难的安全机制?(除了安全性之外,他们还能做些什么来让这件事变得更难)?或者虚拟机供应商是否甚至可能向托管商(毕竟是他们的直接客户)提供工具,使这些攻击更容易?
来宾操作系统是否有任何有效的方法可以保护自己或 RAM 和磁盘中的数据免受此类攻击?可信计算方法(签名代码等)会有帮助吗?我知道 DEP 和 ASLR,但这并不能真正阻止主机读取所有可用内存。此外,我猜 RAM 加密对于传统的 x86 硬件/VM 来说是不可能的……因为那将不再是“随机访问”内存。
有没有这方面的研究?我很惊讶关于这个话题的讨论如此之少。一切都已经如此明显或无法解决,还是兴趣太少了?