这是假设摆脱虚拟机管理程序是来宾操作系统危害主机的唯一途径--例如,它没有联网,共享文件夹或剪贴板等等。在通过一个或两个类型的管理程序保持隔离的上下文中,有关主机根密码的知识重要吗?
发布于 2018-06-26 23:29:07
用户空间应用程序只使用根密码来请求更大的权限。根密码的工作方式很简单。当应用程序想要切换到更特权的用户时,受信任的特权程序读取密码,对其进行散列,并将哈希与/etc/shadow中存储的密码哈希进行比较。如果密码匹配,则此受信任的程序以根用户身份执行应用程序。这就是为什么根密码被认为是敏感的。
为了(Ab)使用根密码,恶意应用程序需要能够执行syscalls (用户空间和内核之间的主要API )。例如,要使用su程序来提升特权,需要execve()和read()系统分别运行程序并将根密码传递给它。运行在管理程序中的来宾操作系统不能访问主机上的syscalls,只能访问虚拟机监控程序本身(使用所谓的超级调用)和正在运行虚拟化的内核。为了逃离管理程序,必须利用其编程中的一个bug。因此,了解主机的根密码无助于逃避管理程序,因为它只能用于在虚拟机管理程序已被破坏后提升权限!
虽然对根密码的了解并不能使虚拟机管理程序更容易转义,但将其提供给来宾并不一定是个好主意。如果系统管理程序运行的是非特权的,但没有沙箱(例如,禁用沙箱的QEMU ),管理程序转义可能允许攻击者使用hypervisor软件的权限运行。如果他们知道根密码,他们可以使用它来提升特权后,他们已经打破了管理程序。
发布于 2018-06-27 08:39:10
由于没有其他连接到主机(或外部世界),这不应该足以自己爆发。不过,这仍然是个坏主意;如果恶意VM只在主机上以有限的权限爆发,它可以使用根密码来提升其权限。(你为什么想让它知道密码呢?)
与你的问题无关,但我想说清楚:
拥有主机的任何密码可能允许VM转义,例如,将SSH转义到主机中(拥有根密码将允许VM直接转到根用户,或者,如果按照通常的方式禁用,则在进入其他用户后将权限升级到根用户)。使用任何其他远程会话(RDP、VNC、NoMachine等)或远程管理(DCOM/RPC、组策略、木偶等)框架还将为敌对的VM提供逃避虚拟机管理程序的途径,前提是它具有相关的凭据并能够连接到相关端口(S)上的相关机器(通常但不一定是主机OS)。
https://security.stackexchange.com/questions/188537
复制相似问题