来宾可以使用有关 vmware 主机的哪些信息?

use*_*137 10 virtualization vmware-workstation

在 中vmware Workstation,有关主机软件和硬件的哪些信息可供客户操作系统使用。

就我的应用程序而言,我担心来宾操作系统上的进程获取有关主机运行的物理硬件的信息。这可能包括序列号、MAC 地址或任何可以识别正在运行的物理计算机的详细信息。

主机和来宾都将运行 Ubuntu Linux。

编辑:vmware-tools将安装在来宾上

编辑 2:添加赏金

我对这个问题做了很多研究,大多数答案中都有“不应该”这样的词。我需要在一定程度上确定,vmware 来宾无法看到以下任何项目(因此,如果来宾可以使用这些东西,则将被视为严重的安全漏洞)

  • 任何硬件序列号
  • 主机网络接口的mac地址
  • vmware软件注册序列号
  • 主机操作系统上的任何文件

这个问题的动机是我需要运行一些高度不受信任的软件,我想将它从任何可能泄露我身份的信息中分离出来。例如,我假设该软件将尝试读取我的处理器序列号并将其报告给其创建者,并且我认为这可能会导致追溯到我真实世界的身份。如果你愿意,可以称之为偏执狂。我的部分情况需要安装 vmware-tools。

Emi*_*Sit 5

有关主机的信息可能会以多种不同的方式泄露给来宾。VMware(以及一般的虚拟化产品)提供针对多种情况的保护。虽然不太可能提供完整的隔离环境,但它可能做得很好。例如,一些病毒研究人员使用 VMware提供一个安全的环境来研究恶意软件的行为

主机信息可能会泄露给访客:

  • 如果guest直接执行虚拟化层不拦截的指令。
  • 如果来宾可以直接在与主机相同的网段上观察网络流量。
  • 如果客人可以与外界通信并探测回主机。

您主要关心的似乎是第一种泄漏方法,但您也应该确保防止其他机制。

VMware(和其他管理程序)通过拦截被认为是敏感指令的内容来提供虚拟化。敏感指令要么向来宾透露有关主机的信息,要么允许来宾逃脱虚拟化层的控制。例如,修改页表基础(控制内存访问)的指令必须由虚拟化层检测、拦截,并替换为该指令的“安全”版本,以保留虚拟化的错觉。

为了提供与主机分离的机器的错觉,还虚拟化了显示有关主机的识别信息(例如序列号、MAC 地址等)的指令。在 VMware 中,这些东西都可以在vmx文件中设置。这个东西很好理解,大概是安全的。

有时,需要权衡暴露的内容,例如 CPUID 指令,VMware 的最新版本提供了一些“保护”。(有关 CPUID 虚拟化的许多详细信息,请参阅VMotion 和 CPU 兼容性。)当作为特权指令执行时,这可以被捕获和模拟,但也可以作为本机指令执行,这可能会向来宾公开一些(可能是无趣的)信息.

但是,客人也可以被动地了解有关主机的其他信息。例如,通过探测内存时序,来宾可以获取各种缓存大小的信息。通过时间和其他向量(“侧通道”)了解其他客人(或主人)的能力是一个活跃的研究领域。2012 年 10 月,研究人员发现实际上可以从其他 VM 中提取加密密钥。这可能非常可怕,可以发现的限制以及如何防止这种情况尚不完全清楚。

确保完全安全的最佳方法是通过气隙将您的机器与世界其他地方隔离。然后恶意软件学习什么并不重要,因为它无法将该信息传达给任何人。完成后,擦拭机器。使用像 VMware 这样的工具可以使这种擦除和状态恢复更容易,因为机器状态被封装在一组文件中。