其实我十来年前做过一段时间的系统安全,还结识了安全圈里一帮兄弟,后来我转行做了存储,也一直在关注安全领域。这一两年安全行业迅猛发展,看得我有时候真是羡慕嫉妒恨啊......


回到技术话题,这个漏洞其实很容易理解。Linux上,每个进程除了根据运行者的uid进行权限识别,还有一组kernel capability,这一组在kernel代码里面以CAP_开头的宏更细致的定义了进程所拥有的权限。



而***者(***)想要突破这个限制,要从container内部进程想办法访问到宿主系统的各种资源。最早最粗糙的***方式就是用各种特殊符号,比如“../../../../”。这种现在看起来搞笑的***方法在30年前UNIX上可是很奏效的,后来慢慢的很多简单的漏洞就被补上了。



这里再贴个英文的关于该漏洞更详细的说明 


值得欣慰的是,从0.12版本以后,docker在创建新容器进程的时候,会放弃所有的kernel capability。这个问题就不存在啦。