近日,网络安全公司 CyberArk 的研究人员发现了一种破解流行 Play-with-Docker(PWD)站点的方法,可绕过容器隔离边界限制,直接获取用户文件。不过,该错误配置目前已被修复。
近年来,容器已成为应用程序部署越来越流行的方法,为运行和管理本地和云工作负载提供了一种灵活的工作方式。近日,安全公司 Cyber Ark 称发现Play-with-Docker存在安全风险,攻击者可轻松访问主机系统资源。随后,研究人员向 Play-with-Docker 维护人员披露了此问题,目前该错误已得到解决。
PWD 主要提供在线资源,让开发人员可以轻松了解和使用流行的 Docker 容器应用程序技术。容器和应用程序在操作系统中是互相隔离的,常规状态是用户无法绕过容器隔离限制查看底层主机操作系统。
但是,该安全公司表示可以利用 Linux 容器的固有弱点绕开隔离限制,与在每个实例中加载内核的虚拟机不同,容器共享相同的内核代码,这是 Linux 容器和 Docker 得以快速和敏捷的原因,但这也是其致命弱点。
如何找到该漏洞?
研究团队通过使用 debugfs,这是一个预装操作系统的 Linux 工具,用于探测底层主机的文件系统,轻松查看主机硬盘信息,并可从主机文件系统获取文件以准备攻击。
研究人员表示,除此之外,只需读取容器上的文件,例如内部 proc/、dev/和 sys/,同样可以指向内核,通过查看容器中指向底层 Linux 内核的文件,研究人员可以绘制容器的边界并测试其权限。比如,用户可从容器读取有关底层主机 CPU 信息,加载 VM 类型,底层操作系统是否针对 Specter 和 Meltdown 的某些变体进行修补,Bios 版本等,还可通过检查容器用户的 Linux 功能来设置容器边界,看到容器用户被允许加载的 Linux 内核模块等。
都是容器权限的锅?
该问题与使用所谓的特权容器有关,Docker 使用特权标志来创建特权容器,但根据调查,PWD 使用特权容器,但没有正确保护它们。特权容器比非特权容器具有更多操作和访问权限控制。Docker 容器技术提供了许多帮助保护容器的机制,其中一种方法是使用所谓的用户命名空间。通过用户命名空间,研发人员可在 Docker 上运行各应用程序和进程,具有更多可见性和控制权限。
在许多情况下,应用程序需要比用户命名空间容器具备更多特权。保护容器隔离的一种方法是使用虚拟机 VM 管理程序进行额外的虚拟化抽象,VM 可以在虚拟操作系统与底层操作系统之间建立更严格的隔离边界。
如果 PWD 将每个容器放在单独的 VM 中,那么这次攻击就不会发生。研究表明,虚拟机和 Linux 容器之间的区别与漏洞直接有关。Linux 容器更加灵活,每个实例使用相同的内核代码,这就是造成漏洞的主要原因。
企业也可以通过多种方式选择在 VM 中运行容器。 例如,AWS 于 2018 年 11 月宣布 Firecracker 技术,作为隔离容器的虚拟机管理器(VMM)方法。 另一个选择是 Kata Containers,这是由 OpenStack 基金会维护的项目。此外,容器也可在传统虚拟化技术中运行,比如 VMware。
目前,PWD 方面通过阻止容器中的内核模块加载,避免了此次漏洞风险。但是,团队也在寻找更有用高效的辅助工具,最大限度降低和控制风险。
参考链接:https://www.eweek.com/security/researchers-reveal-play-with-docker-security-vulnerability
评论