出乎意料的结果:容器与虚拟机到底谁更安全?

栏目: 服务器 · 发布时间: 5年前

IBM Research创造了新的软件安全性测量方法——水平攻击概要,通过这个方法发现一个恰当配置的容器的安全性几乎与虚拟机相当。

2018年7月15日, by Steven J.Vanghan-Nichols

视频链接: https://www.zdnet.com/video/8- ... ress/

大多数人可能都会认为虚拟机(VM)要比容器更安全。但是IBM Research发现容器的安全水平其实可以等同,甚至超越虚拟机。

IBM Research的杰出工程师,顶级的 Linux 内核程序员James Bottomley表示:

“当前关于容器与hypervisor安全性的争论,最大的一个问题是没有人开发出一个明确的安全测量方法。争论都是基于定性的(hypervisor“觉得”从接口广度上比较,比容器更安全),却没人进行过明确的量化比较。“

对应这个问题,Bottomley 设计了个叫水平攻击概要(HAP)的方法,它通过客观测量的方式来描述系统的安全。通过这个方法,Bottomley发现,在加载合适的seccomp配置文件的情况下,Docker容器提供的安全性基本等同于hypervisor。在这个环境内,seccomp配置文件提供了拦截非法系统调用的作用。

Bottomley一开始定义了垂直攻击概要,这个文件包含了全部的代码,通过遍历代码可以提供完整的服务包括从数据输入,更新到输出等。像所有代码一样,这段代码也存在漏洞,而且漏洞的密度差异性随机,但遍历的代码越多,发现安全漏洞的概率就越大。堆积起来的安全漏洞的集合-应用可能从容器内跳出到物理主机或虚拟化主机层面---就是HAP集。

HAP集是最严重等级的安全漏洞。Bottomley称之为“潜在的业务毁灭事件”。那么,如何量化一个系统的HAP数呢? Bottomle解释如下:

定量方法测量HAP=Linux内核代码的缺陷密度*代码遍历产生的代码数量。

备注:这个遍历数是唯一,不重复的;是系统运行达到稳定状态后,遍历不会出现任何新的内核路径时的数据。

为了阐述这个方法,我们假定bug的密度是统一的,这样HAP差不多就等于系统稳态下,遍历过的代码数。而实际测量一个运行中的系统是另外一回事。值得庆幸的是,内核有一个称为ftrace的机制,它可以用于在给定的用户空间内,跟踪所有的函数调用,从而可得到所遍历的代码行数的合理近似数。需要强调一下,这个数不是精确数,主要是因为ftrace无法提供更细的信息,这个方法只是测量了所获取函数的代码行数,而未考虑内部代码流。除此之外,这个方法论特别适合测量容器环境,因为容器内所有的控制流,都是由已知的进程通过系统调用信息发出的。而在hypervisor环境里,测量除了直接的hypercall接口外,还必须添加后端守护进程的跟踪(如kvm vhost内核线程或Xen的dom0),所以这个方法在hypervisor内的应用效果要稍微差一些。

简而言之,先测出一个VM或容器裸系统的代码有多少行数,然后用这系统去运行一个指定的应用。系统的代码行数越多,就越有可能存在HAP级别安全漏洞。

如何去量化一个定义好的HAP集呢?Bottomley分别在如下的环境内做了测试:Docker,谷歌的gVisor,沙盒容器,gVisor-KVM,KVM的沙盒容器,Linux内置的VM hypervisor,Kata容器,开源的轻量级VM以及IBM最新发布的专应用于强应用隔离的Nabla容器。

测试内容是标准的基线测试,包括redis-bench-set,redis-bench-get,python-tornado和node-express。其中最后的2个测试需要运行Web服务器和简单外部事务客户端。

通过测试,Bottomley发现Nabla运行时的HAP要优于带有Kata技术的hypervisor。这也就意味着,我们可以构建一个容器系统,它的HAP比hypervisor更好,也意味着更安全。

除了Nabla之外,Bottomley还表示:“在精心调优过的seccomp文件的搭配下,容器提供的安全性也与hypervisor大致相当。”

比较特别的是gVisor,最好的结果与 Docker 相当,但在某一个用例测试中,结果明显很差。Bottomley推测:“这主要是因为gVisor尝试将Linux接口重写成 GO 来优化容器。但却没有人会关心系统运行时调用GO的接口数量。这可以对应上测试的结果表现。”若真是如此,Bottomley认为gVisor的后续版本必须重写才可能更加安全。

然而,真正的关键并不是那种技术本身更安全。对于最严重的安全问题,容器和VM所具备的安全等级是相当的。实际上,Bottomley认为:“比hypervisor更安全的容器,这个可能性完全存在。最终,关于哪个是更安全的技术的争论也将停止。”

他表示,“接下来,需要建立对恶意应用程序的完全暴露模型,要做到这一点,需要使用一些模糊测试。”

Bottomley的这个工作仅仅是一个开始。他证明了客观地度量应用程序的安全性是可能的。正如他所言,“我不认为这是辩论中的结束,通过描述我们所做的事情,希望其他人也能开发出好的量化测量方法。”

原文链接: https://www.zdnet.com/article/ ... -you/ (翻译:易理林)


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Programming Rust

Programming Rust

Jim Blandy / O'Reilly Media / 2016-8-25 / GBP 47.99

This practical book introduces systems programmers to Rust, the new and cutting-edge language that’s still in the experimental/lab stage. You’ll learn how Rust offers the rare and valuable combination......一起来看看 《Programming Rust》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

MD5 加密
MD5 加密

MD5 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换