三分钟洞悉 CPU 漏洞 | Meltdown 与容器安全

为什么容器面对 CPU Meltdown (熔毁) 漏洞能快人一步?

最近 IT 圈最大的事件就是,包括过去10年内绝大部分 CPU 型号,几乎所有的包含 CPU 的设备都受到影响,目前只有升级操作系统才能有解决办法,而这次的漏洞的成因和影响也成为大家关注的问题。通过今天的内容,DaoCloud 研发副总裁颜开将用3分钟带领大家洞悉 CPU 漏洞,从 Meltdown 看容器的快人一步。

EDM 0111 02

就在今天凌晨,有一个朋友紧张地联系我:

WX20180110-103336

先聊聊 Meltdown (熔毁)漏洞。如果想要深入的了解这个漏洞,攻击的具体原理,防治的方法,可能需要阅读几万字晦涩的技术材料。有兴趣的同学建议看看 Meltdown  漏洞官网(一个漏洞竟然也有官网):

https://meltdownattack.com/

还有维基百科 Meltdown 条目:

https://en.wikipedia.org/wiki/Meltdown_(security_vulnerability) 

这里试图简单的对这个漏洞进行一下说明:

 

CPU 性能在过去几十年里一直保持着指数级别的增长,其中各种 CPU 优化算法功不可没。其中最为亮眼的就是 “预测执行” 技术,CPU 在执行一条指令的时候,会预测下面的指令,如果预测成功,就会接受结果;如果没有成功,就将结果丢弃。这个算法可以极大的提升 CPU 性能。打个比方,小明每天早上去公司的路上买一个加鸡蛋的煎饼果子,日复一日。之后,做煎饼果子的大叔为了提高效率,远远看到小明就开始摊煎饼并加个鸡蛋,小明就可以更快得到煎饼果子了。由于出色的优化和学习算法,在一般情况下 CPU 预测成功率甚至可以高达 99%。

 

从芯片设计的角度讲,「预测执行」对程序是无法观测的,但事实证明,通过精细设计的攻击程序可以观测到「预测执行」的信息,通过对「预测执行」算法对理解,最终可以窥探到其他进程的关键信息。现在所有的设备都离不开CPU,这就是为什么 Meltdown(熔毁)漏洞这么可怕。而在您浏览这篇文章的时候,一定使用了 Chrome 或者其他浏览器,而浏览器可以的执行 JavaScript 代码也可以利用这个漏洞获得您当前设备的关键信息。不过不用担心,这只是理论可能,这样的 JavaScript 程序应该还没有来得及开发出来,这样的方法攻击成本也太高了,你现在还可以放心的继续往下看。

 

从前几天到现在,各个操作系统厂商都提供了补丁,由于和性能优化特性有关,都或多或少的影响一些性能。国内外基于虚拟化技术各大云计算提供商,都给打上了修复补丁,防止出现虚拟机逃逸的情况,但还需要用户配合才能给虚拟机操作系统打上补丁。就连 Firefox 都紧急发布了新版本,Chrome 在一月份也有个升级。但为何容器技术只要给  HostOS 打个补丁就可以了。

0109

从上图可以看的,在虚拟化技术,有 Guest OS 和 Host OS 之分,在云服务的场景下,Host OS 由云服务提供商提供,在出现漏洞的的时候,云服务提供商会打上补丁;在私有云的场景下,一般有数据中心运维安全部门提供服务。 Guest OS 由最终用户使用,云服务提供商原则上没有访问的权限,所以当出现重大漏洞的时候,也只能向用户提供升级建议。而容器技术,每个容器共享操作系统内核,但是却有独立的文件系统。同一台机器上,可以运行多个 Linux 发行版,也可以秒级的启动和销毁。因此要修复 Meltdown(熔毁)漏洞,只要给 Host OS 打上补丁就可以,整个过程 云服务提供商(或数据中心运维安全部门)就可以操作,不涉及到最终用户。

 

这次的漏洞名字起的贴切,叫 Meltdown (熔毁)漏洞,让人联想到福岛核电站的熔毁事故。核电站作为最高级别的安全工程,有多重防护,燃料元件包壳、压力壳(即反应堆冷却剂承压边界)、反应堆安全壳等防护。保障安全的最佳实践就是要保障「安全纵深」,当一层被攻破后还有一层防护。就像我们数据中心的层层防火墙和安全措施一样,每一层都提供一些保护,形成合力提供有纵深的安全。而这个漏洞由于是 CPU 级别的,同时破坏了虚拟化的安全,和操作系统安全,让纵深少了很多。而且每隔一段时间都会有一些严重的操作系统漏洞被发现,比如去年下半年的「脏牛」漏洞。这些漏洞极大的降低了黑客的攻击门槛,运维人员就得及时打上补丁,以防风险。由于补丁是内核级别的,有的还需要服务器重启才能够生效,这样又不得不打开一个服务维护窗口,影响应用正常提供服务。

 

对于这个问题,Google 有一个很好的实践。每台服务器每两周都会打一次补丁并重启一次,通过一套管理容器的平台,应用可以无中断的提供服务;通过自动管理成千上万的容器,整个平台安全性得到持续保障,应用的稳定性甚至比到达用户的互联网还高。由于容器中没有操作系统内核,攻击面也大大减小。如果应用本身有漏洞,也可以非常容易的灰度升级。

 

希望这篇文章能够帮助您更好的理解 CPU Meltdown (熔毁)漏洞和容器安全。每一个漏洞可能会被修复,但每隔一段时间新的漏洞还会出现。对于安全的攻防永远存在,针对此次的 Meltdown 漏洞而言,容器技术可以减轻自身的防御成本,同时使攻击者付诸更多的成本,让我们快人一步。

延伸阅读


DaoCloud 就 Meltdown 漏洞的安全公告