我正在开发一个运行不可信代码的应用程序。我一直在为linux设计它,认为如果需要的话,我可以在windows上的虚拟机上运行它。linux的安全特性是,不受信任的代码是在seccomp下运行的一种解释语言,其中syscalls由类似seccomp的胞勒斯策略、限制性linux容器内和限制性AppArmor配置文件进行中介。
不过,我刚刚想到了如何在windows下运行这个虚拟化的程序:假设一个敌对的程序设法破坏了解释的语言,并在虚拟机中执行任意机器代码。它能绕过linux访问策略,直接调用主机windows OS吗?如果是这样的话,我将需要相应的沙箱策略在windows本身,这是我非常不了解的。是否有与seccomp、utrace、linux容器和AppArmor相对应的windows功能?
发布于 2011-12-18 23:56:17
简短的回答是“否”(排除虚拟机管理程序代码中的漏洞/bug)。客户代码不能在主机操作系统中调用系统调用,除非退出VM。虚拟机就是这样工作的。运行在虚拟机中的来宾代码不具备直接调用主机OS系统调用的能力,除非利用虚拟机管理程序中的一些漏洞来突破VM。现代管理程序是为了防止这种情况发生而设计的,虽然虚拟机管理程序中的bug/漏洞并不是不可能发生的,而且已经发生过,但它们是罕见的。
其实我对这个问题有点困惑,所以我希望我已经回答了你心中的问题。一旦我们删除了干扰因素和不必要的细节,我就明白您在问“恶意客户代码可以调用主机操作系统并要求它执行系统调用吗?”如果这就是您想问的问题,那么答案是“否”,因为虚拟机只是没有为来宾代码提供任何方式来调用主机OS系统调用。如果这不是你想知道的,请详细说明。
https://security.stackexchange.com/questions/9786
复制相似问题