大型云提供商如何防范 VM 逃逸攻击?

信息安全 虚拟化 云计算 零日 易于
2021-09-05 08:25:33

我认为可以说我们所知道的云计算依赖于虚拟机稳健性的概念几乎是无懈可击的。在可以依赖虚拟机的安全性的地方,它们允许来自云提供商的多个客户的工作负载安全地在共享硬件上运行,同时还保证如果一个客户的虚拟机内的某些东西的安全性受到损害,供应商服务器的主机操作系统和固件不会受到影响。如果您是亚马逊、微软、谷歌、IBM 或任何规模的云提供商,确保每个客户的资料的虚拟机隔离不受影响对于您的运营和客户继续信任您的服务产品至关重要。

然而,正如我们所知,VM不是逃逸的在我能想到的每一种主要虚拟机技术中,都会定期发现安全漏洞。Xen VM 的VENOM可能是其中最著名的,但Hyper VVMware产品也被漏洞所困扰。当然,这些已知的缺陷可以并且由供应商修补。但毫无疑问,还有其他缺陷等待被攻击者发现和(可能)利用。事实上,人们会假设资源充足的攻击者——即能够在内部开发新漏洞和利用或购买有价值的灰色/黑暗市场的攻击者——将有很强的动机投入大量时间/精力/金钱寻找或购买允许突破主要云提供商使用的虚拟机的新产品。尤其是考虑到云计算在众多公司和组织的技术基础设施中扮演着越来越重要的角色,而这些公司和组织反过来又都是老练的攻击者的潜在目标(出于各种原因)。

那么,亚马逊、微软等如何防范复杂的攻击者(无论是国家支持的 APT、高端有组织犯罪或其他)可以开发购买新的 VM 逃逸漏洞并将它们用于提供商的基础设施和顾客?对我来说最明显的一项措施是在所有云服务器上运行定制的基于主机的入侵检测系统,以尝试在 VM 逃逸事件发生时捕捉它们,但正如我们现在所知,HIDS 几乎不是万无一失的。云提供商可以/采取哪些其他措施来检测、预防或减轻 VM 遏制违规的危险?

2个回答

高度定制和打补丁的虚拟机管理程序、围绕所述虚拟机管理程序的沙箱以减少突破和大量监控。当然,任何给定的服务器只能托管这么多的虚拟机,因此如果能够通过管理程序之外的保护,突破基本上仅限于有限数量的来宾。例如,QEMU 可以使用强化工具链进行编译,使用 chroots、模式 2 seccomp、强制访问控制进行隔离。它可以通过使用自定义 seccomp 过滤器、禁用多余代码或功能、添加自定义、强化驱动程序来修补以使其更安全。可以配置和强化自定义内核,以限制逃逸来宾破坏内核和逃逸强制访问控制的能力。

不幸的是,这个问题的答案部分可以用“他们没有”来回答。许多云提供商确实经常受到损害,他们只是不知道或不披露。我看到这种情况周期性地发生,它并不漂亮。有时会使用 0days,有时会利用供应商鲜为人知的公共问题。例如,亚马逊的高端 dedis 在切换客户时不会关闭,导致他们的 GPU 不会擦除 VRAM,让下一个客户看到前一个客户在做什么(窃取 OpenCL 中的机密,通过 VNC 或使用 X11 转发发送的任何内容,等等)。亚马逊安全团队知道这一点,但仍未修复它。他们不会告诉他们的客户这一点。这表明在安全方面缺乏努力,以及对现有安全问题缺乏认识。如果您认为这样的事情会成为鲜为人知的重大新闻,那么针对云提供商的大规模或高级攻击可能会在公众不知情的情况下发生也就不足为奇了。缺乏攻击意识和新闻导致人们想知道这些大型企业到底是如何保持安全的。他们不是。

我的左边是一个打开 vim 的窗口。其中是最近用于突破某个中型云提供商的管理程序的 0day 代码。没有任何保护措施。所发生的只是漏洞利用爆发并获得了对具有管理程序运行进程的特权的主机的访问权限。没有沙箱或广泛的监控解决方案。导致内核漏洞的单个过时系统调用会导致内核受损和内存持久性(grsecurity 会减轻它,fwiw),以及随后的信息泄露。这家公司价值数亿美元。我敢肯定,无数人曾经去过那里。虽然这不是真实的证据,只是我自己的经验,

针对 vm 逃逸攻击的主要防御具体是深度防御具体来说,如果存在各种丰富的防御机制,攻击者将触发足够多的防御机制,防御者可以阻止坏事的发生。即使攻击者成功突破了一个虚拟机管理程序中的一个虚拟机,仍然有一些东西可以捕获它们(例如Tripwire、防病毒、Modsecurity)。创建足够多的不共享漏洞的层,并且即使不是不可能也很难突破。

不过,在很多方面,你的问题都一针见血。一个熟练且积极主动的攻击者,能够构建针对所有防御的独特攻击,可以植入一个hyper-visor rootkit,而主机永远不会知道。

一个好的防御者团队应该能够理解和使用各种工具/技巧来阻止攻击者。希望这足以让您开始正确的方向。