VM真的比Container更安全吗?

VM真的比Container更安全吗?

  写在前面的话

  我们经常会说,“HTTPS 是安全的”或者“HTTP 是不安全的”。但其实我们想表达的是,“HTTPS 的内容更加难被窥探到”,“这将会让中间人攻击(MitM)变得更加困难”,或“连我外婆都可以轻易嗅探到 HTTP 数据”。

  尽管如此,HTTPS 仍然有被黑的可能,而且在某些情况下,HTTP 已经足够安全了。除此之外,如果我在一个支持 HTTPS 的常用实现(例如 OpenSSL 和 Heartbleed)中发现了一个可以利用的漏洞,那么在漏洞被修复之前,HTTPS 将会成为我入侵目标系统的垫脚石。

  HTTPS 其实是 HTTP 的安全升级版(参考 IETFRFC:7230、7237和2828),但我们也不能百分之百地认定 HTTPS 就是安全的,而 HTTP 就绝对不安全。

  在安全方面,虚拟机(VM)和容器(Container)的定义就没有那么严格了,从设计的角度来看,在这两者之间没有谁比谁更全的说法。因此,这也让它们的安全问题更加扑朔迷离了。

  为什么我会认为 VM 比 Container 更加安全呢?

  无论在战争中还是在软件开发中,“分而治之”的概念都是我们的制胜法宝。我们可以将一个非常复杂的架构拆分成多个单一架构,将复杂且难以解决的安全问题拆分成了一个又一个简单的问题,而在绝大多数情况下,分步解决小问题往往要比通过一个解决方案来解决所有问题要安全得多。

  Container 就是很好的例子,通过将每一个应用都定在它们自己的区域内,每一个应用中的漏洞与缺陷都不会影响到其他容器中的应用。而 VM 同样是如此,但虚拟机在隔离方面做得更好。

VM真的比Container更安全吗?

  如果容器中的应用存在漏洞,它是不会直接影响到其他应用的,这是 Container 的设计思想。但是,这个应用却有可能破坏整个操作系统,进而影响到这个操作系统中的其他容器。在一个共享操作系统之中,任何一个应用、容器、以及操作系统实现栈中的漏洞都将会影响整个栈的安全性,并有可能导致物理主机被入侵。

  虚拟化技术采用的是分层体系结构,它可以对每一个应用的执行栈到底层的硬件进行结构划分,以此来消除共享系统中应用程序相互干扰的可能性。除此之外,每一个应用程序栈和硬件之间的接口也有严格的限制以防止被恶意软件所利用,而这种技术也给应用程序提供了更强大的安全保护。

  VM 管理程序(Hypervisor)不仅可以控制 GuestOS 和硬件之间的交互,而且还可以对操作系统进行划分并控制用户的活动。虚拟机 Guest OS 控制的是用户活动,而非硬件之间的交互行为。应用程序或 Guest OS 中的漏洞不太可能会对物理硬件或其他的 VM 产生影响,当虚拟机 Guest OS 以及托管容器的操作系统是相同的时候,同样的漏洞将会影响系统中所有的容器,但并不会危及到系统中其他的虚拟机。因此 VM 会水平分割应用程序,并垂直分割操作系统以及物理硬件。

  虚拟机开销

  VM 给我们带来的额外的安全性需要牺牲一定的代价。而在计算机系统中,控制转移所带来的开销是非常大的。在执行栈的存储和重置过程中,外部操作很有可能需要被挂起(暂停)。

VM真的比Container更安全吗?

  Guest OS 和管理程序之间的转换需要消耗大量的资源,而这个过程是经常会发生的。虽然处理器芯片中本身就带有特殊的控制命令,但控制转移所带来的开销仍然会降低虚拟机的整体运行效率。效率下降得非常明显吗?这就很难回答了。我们可以通过管理“控制转移”来降低应用程序的开销,大多数服务器级处理器现在都可以简化控制转移的整个过程。换言之,效率下降的程度取决于应用程序以及服务器的配置,但这种额外的开销是永远不可能完全消除的,我们只能尽量减少。

  虚拟机管理程序(Hypervisor)中的漏洞

  我们要面对的问题还没那么简单,因为虚拟机所采用的分层体系结构还会引发另一个麻烦,那就是虚拟机管理程序(Hypervisor)中的漏洞。尤其是在公共端上,像这样的单点故障将有可能引起一系列潜在的严重问题。比如说,一个黑客可以在一台虚拟机中运行恶意代码,然后控制其他公共云端所托管的应用程序,这样一来,攻击者只需要一个漏洞就可以黑掉一个公共云端中的一系列应用程序了。

VM真的比Container更安全吗?

  纵使是一个坚如磐石的系统都仍然会存在漏洞,更何况虚拟机了。但是厂商往往都会吹嘘他们的管理程序永远不会出现安全问题,他们会说:管理程序这么简单,而且开发起来也非常容易,我们还会对程序代码进行严格的安全审查,所以他们绝对不会出现安全问题。但 OpenSSL 的代码肯定比 Hypervisor 要少得多吧?那 Heartbleed 又是哪儿来的呢?而且我们要知道,虚拟机管理程序中的漏洞与 WannaCry 一样,影响绝对是毁灭性的。

  虽然管理程序中的漏洞在目前为止还没有引发什么严重的安全事件发生,但我们可以从常用 CVE 数据库中看到,很多研究人员早就发现了大量可以利用的 Hypervisor 漏洞了,不过 Hypervisor 的开发人员和厂商都能够及时修复其中的漏洞,这一点是我们应该感到欣慰的。

  总结

  虽然虚拟机也有这样那样的问题,但我依然坚信虚拟机的安全性比容器要高得多。尽管如此,我们还是要带着批判的眼光来看到虚拟机系统的安全性问题。 

  * 参考来源:networkworld, FB 小编 Alpha_h4ck 编译,转载请注明来自 FreeBuf.COM

PS:如果您想和业内技术大牛交流的话,请加qq群(527933790)或者关注微信公众 号(AskHarries),谢谢!

转载请注明原文出处:Harries Blog™ » VM真的比Container更安全吗?

赞 (0)

分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址