安全公司CyberArk 在1月14日报告称,它发现了流行的Play-with-Docker网站存在安全风险,这可能使攻击者有可能访问主机系统的资源。
CyberArk负责任地向Play-with-Docker维护者披露了这个问题,现在问题已得到解决。Play-with-Docker(PWD)站点的目的是提供一个在线资源,使任何人都可以轻松地了解和使用流行的Docker容器应用程序技术。对于容器,应用程序在操作系统中是隔离的,一般的想法是用户不应该逃脱容器隔离的限制并查看底层主机操作系统。
“我们能够利用 Linux容器中固有的弱点来进行这项研究,”CyberArk网络实验室安全研究员Nimrod Stoler告诉eWEEK。“与在每个实例中加载内核的虚拟机不同,容器共享相同的内核代码。”
Stoler补充说,使用相同的内核代码是使Linux容器和Docker特别快速和灵活的原因,但它也是他们的致命弱点。近年来,容器已成为应用程序部署中越来越流行的方法,为组织提供了一种灵活的方法来运行和管理本地和云中的工作负载。
CyberArk如何找到缺陷
CyberArk致力于帮助组织了解特权访问安全性。对于PWD站点,Stoler解释说CyberArk研究团队使用debugfs(这是一个预装了操作系统的Linux工具)来探测底层主机的文件系统,以便一瞥主机的硬盘。从那里,CyberArk的研究人员能够从主机文件系统中获取文件以准备攻击。
Stoler表示,除了debugfs之外,CyberArk的研究人员只需读取容器上的文件,例如内部proc /,dev /和sys /,它们指向内核。他评论说,通过查看容器中指向底层Linux内核的文件,研究人员能够绘制容器的边界并测试它的特权。
“例如,我们可以从容器中读取有关底层主机CPU的信息,加载的VM类型,底层操作系统是否针对Spectre和Meltdown的某些变体,Bios版本等进行了修补,”他说过。“我们还通过检查容器用户的Linux功能来绘制容器的边界,我们可以看到容器用户被允许加载Linux内核模块。”
特权容器缺陷
使CyberArk逃离PWD容器并访问底层操作系统的核心问题与使用所谓的特权容器有关。
“Docker使用特权标志来创建特权容器,但根据我们的研究,特权容器是一系列容器,涵盖半特权容器到超特权容器,”Stoler说。
根据CyberArk的研究员的说法,PWD使用特权容器,但没有正确保护它们。特权容器比非特权容器具有更多权限和访问权限。Docker容器技术提供了许多帮助保护容器的机制。其中一种方法是使用所谓的用户命名空间。使用用户命名空间,可以在Docker上运行的各个应用程序和进程具有更多可见性和控制。
“使用用户命名空间的容器会限制这次攻击的影响,因为它要求我们在发动攻击之前找到提升容器权限的方法,”Stoler说。
也就是说,Stoler指出,用户名称空间的实现不允许PWD在容器上运行其应用程序。他说,在许多情况下,应用程序需要比用户命名空间容器允许的更多权限。保护容器隔离的另一种方法是使用虚拟机(VM)管理程序进行额外的虚拟化抽象层。VM带来了自己的操作系统和与底层操作系统更严格的隔离边界。
“如果PWD将每个容器放在一个单独的VM中,那么这次攻击就会失败,”斯托勒说。“我们的研究表明,虚拟机和Linux容器之间的差异直接与漏洞有关。使Linux容器更加灵活 - 每个实例使用相同的内核代码 - 这就是造成漏洞的原因。”
组织可以通过多种方式选择在VM中运行容器。例如,亚马逊网络服务(AWS)于2018年11月宣布其Firecracker技术作为隔离容器的虚拟机管理器(VMM)方法。另一种选择是Kata Containers,这是由OpenStack基金会领导的一项努力。容器也可以在传统的虚拟化技术中运行,包括VMware。
对于PWD容器转义,CyberArk能够通过内核模块加载来滥用特权容器状态来访问主机。Stoler说PWD现在阻止了容器中的内核模块加载,从而限制了风险。对于想知道他们是否与CyberArk在PWD上报道的问题相同的组织,Stoler说他的公司正在研究一种帮助工具。
“我们正在探索特权容器如何扩大攻击面,”他说。“根据即将发布的调查结果,我们希望发布一种工具,帮助企业最大限度地降低和控制风险。