容器共享宿主机内核,因此我们可以使用宿主机的内核漏洞来实现容器逃逸,例如,通过内核漏洞进入宿主机内核并改变当前容器的namespace,而容器逃逸中由于历史内核漏洞造成的最多见的是脏牛漏洞(CVE-2015-3896)。另一方面,近期较为知名的1个内核漏洞是CVE-2021-14285,它也会导致容器逃逸而引起安全问题。
POC和EXP中的这些漏洞都是公开的,不难发现它们存在利用行为,但同时大多数EDR和HIDS也有EXP利用的检测能力,这也是利用内核漏洞实现容器逃逸的难点之一。与容器有关的组件历史缺陷。到2020年,我们与腾讯云的同学一起对多家官方开放源代码分支披露的安全问题进行跟踪分析,并在公司内外进行云原生能力的再现、分析,从产品和安全两方面探索攻击场景,保障云用户和业务的安全。
这里面投入的时间比较多,主要有以下十个漏洞,每一个都很有趣,并且都在云产品上进行了适当的跟踪和安全能力建设:图像。在真实的攻击场景中,我真正使用过并且在关键路径中发挥作用的攻击是CVE-2021-15767,而别的攻击的POC只在攻击暴露时自建测试的环境中使用,在公司内部服务的漏洞挖掘中使用,一些环境尽管存在漏洞,但真正攻击的目标并没有什么用处。
值得注意的是,在最开始的后续分析中,EXP要求管理员通过dockerexec或kubectlexec运行钓鱼操作,进而释放了不受欢迎的CVE-2020-6737RUNC容器逃逸漏洞;相反,实际上,它会遇到一些无交互就能释放的场景。在企业内网中,提供容器内交互shell的多租户场景主要有foodiedeserver、jupyfernotebook、containerweaaonssole等,它们提供了更多容器逃离后的网络环境和主机环境。容器、容器编排组件API配置不当或权限不明。从安全性角度来看,行业中接触最多、最主要的是容器组件服务的未鉴权问题。2020,我们将对Kubernetas架构下多见的开放服务指纹进行整理,并将其提供给拥有最强大表层扫描器洞犀团队,现在看来,这份指纹也是较为完整的。