1587 / 1587.github.com

0 stars 0 forks source link

容器的缺陷 #175

Open 1587 opened 7 years ago

1587 commented 7 years ago

三、 是什么导致了安全漏洞?NameSpace 那么究竟是什么地方导致了Docker容器机制的安全问题呢?简单一句话,Linux系统中不是所有东西都有命名空间(Namespace)。最新版本的Docker有五个命名空间:进程、网络、挂载、宿主和共享内存。如此简单的命名空间显然无法给开发者提供复杂的安全保护。比如在类似KVM的环境里,虚拟机根本无法直接和宿主的内核交互,它没有任何方式可以访问内核文件系统中如/sys和/sys/fs这样的地方。在这种情况下,想要脱离虚拟机来攻击宿主,比如要找到HyperVisor的弱点,攻克SELinux控制(这是个挺难的事情),然后才能够染指宿主的文件系统。而在Docker这样的容器里,原生就可以访问宿主的内核,安全性从何而来?

Dan在文章中列举了主流的没有命名空间的内核,有:

SELinux Cgroups file systems under /sys /proc/sys, /proc/sysrq-trigger, /proc/irq, /proc/bus 没有命名空间的设备有:

/dev/mem /dev/sd* file system devices Kernel Modules 如果开发者能访问或者攻击任何一个,就可以获得整个系统的控制权。

感谢郭蕾对本文的审校。

1587 commented 7 years ago

http://www.infoq.com/cn/news/2014/09/docker-safety/