在 中vmware Workstation
,有关主机软件和硬件的哪些信息可以提供给客户操作系统。
就我的应用程序而言,我担心客户操作系统上的进程会获取有关主机正在运行的物理硬件的信息。这可能包括序列号、MAC 地址等详细信息,或任何可以识别正在运行的物理计算机的信息。
主机和客户机都将运行 Ubuntu Linux。
编辑:vmware-tools
将安装在来宾上
编辑 2:添加赏金
我对这个问题进行了大量研究,大多数答案中都有“不应该”这样的字眼。我需要在一定程度上确定,vmware 客户端无法看到以下任何内容(如果这些内容可供客户端使用,则将被视为严重的安全漏洞)
- 任何硬件序列号
- 主机网络接口的 mac 地址
- vmware软件注册序列号
- 主机操作系统上的任何文件
提出这个问题的动机是我需要运行一些高度不受信任的软件,并且我想将其沙盒化,使其远离任何可能泄露我身份的信息。例如,我假设该软件将尝试读取我的处理器序列号并将其报告给其创建者,并且我假设这可能会导致追溯到我的真实身份。如果你愿意,可以称其为偏执狂。我的情况的一部分要求安装 vmware-tools。
答案1
有关主机的信息可以通过多种不同的方式泄露给客户机。VMware(以及一般的虚拟化产品)提供了针对许多事物的保护。虽然它不太可能提供完全隔离的环境,但它可能做得相当不错。例如,一些病毒研究人员使用 VMware为研究恶意软件的行为。
主人信息可能会泄露给客人:
- 如果客户机直接执行虚拟化层没有拦截的指令。
- 客户机是否可以直接在与主机相同的网段上观察网络流量。
- 客人能否与外界进行交流,并向主人进行回探。
您主要担心的似乎是第一种泄漏方式,但您也应该确保防范其他机制。
VMware(和其他虚拟机管理程序)通过拦截被视为敏感的指令来提供虚拟化。敏感指令要么会向客户机透露有关主机的信息,要么允许客户机逃脱虚拟化层的遏制。例如,修改页表基址(控制内存访问)的指令必须由虚拟化层检测、拦截,并替换为该指令的“安全”版本,以保留虚拟化的假象。
为了给人一种与主机分离的机器的感觉,揭示主机识别信息(如序列号、MAC 地址等)的指令也被虚拟化。在 VMware 中,这些内容可以在文件中设置vmx
。这些东西很好理解,而且大概是安全的。
有时,暴露的内容会有取舍,例如 CPUID 指令,VMware 的最新版本提供了一些针对该指令的“保护”。(见VMotion 和 CPU 兼容性有关 CPUID 虚拟化的许多详细信息。)当作为特权指令执行时,它可以被捕获和模拟,但它也可以作为本机指令执行,这可能会向客户机公开一些(大概是无趣的)信息。
但是,客户机也可以被动地了解有关主机的其他信息。例如,通过探测内存时序,客户机可以获取有关各种缓存大小的信息。通过时序和其他向量(“侧信道”)了解其他客户机(或主机)的能力是一个活跃的研究领域。2012 年 10 月,研究人员发现,实际上可以从其他虚拟机中提取加密密钥。这可能相当可怕,而目前尚不完全清楚究竟能发现什么以及如何防范这种情况。
确保完全安全的最佳方法是通过物理隔离将您的计算机与世界其他地方隔离开来。这样恶意软件学到什么就无关紧要了,因为它无法将这些信息传达给任何人。完成后,擦除计算机。使用 VMware 之类的工具可以更轻松地执行擦除和状态恢复,因为计算机状态被封装在一组文件中。
答案2
客户机不应该知道主机设置的任何信息,例如主机的网络,因为它被赋予了一个虚拟硬件,其行为应该(几乎)与物理硬件完全一样。然而,客户机必须知道一些信息,例如 CPU,但这些信息不应该损害任何安全性。
因此,如果有任何设置信息从主机泄露给客户机,这将是一个安全漏洞。
但是,如果您启用了 hgfs(主机-客户机文件系统),那么至少主机文件系统的一部分将在客户机中可见,并且有可能获得有关主机的一些信息。如果您担心,则应禁用该功能。
通常情况下,所有这些可能并不重要,因为在大多数情况下,工作站都是个人使用的,也就是说,无论如何你都可以访问主机。否则,你应该研究服务器虚拟化(vsphere、xen、kvm)。
答案3
文章如何从虚拟机中提取主机信息?描述 ESX(i)/vSphere 下可供客户机使用以获取某些主机信息的实用程序。出于安全原因,其范围必然受到限制。
第一个实用程序是 VMware Toolbox 命令。它提供有关 ESX(i) 和 guestOS 配置的一些信息,包括基本资源统计信息。
UNIX/Linux - /usr/bin/vmware-toolbox-cmd
Windows - C:\Program Files\VMware\VMware Tools\VMwareToolboxCmd.exe
第二个是 vmtoolsd(VMware Tools Daemon)实用程序,其中“info-get”参数可以在虚拟机运行时获取虚拟机的 .vmx 配置文件中或 VMX 内存中设置的 guestinfo。
UNIX/Linux - /usr/bin/vmtoolsd
Windows - C:\Program Files\VMware\VMware Tools\vmtoolsd.exe