逃逸容器
容器是打包到文件中的应用程序,其中包含运行应用程序所需的所有运行时依赖项、可执行文件和代码。这些容器由 Docker 和 Kubernetes 等平台执行,这些平台在与操作系统隔离的虚拟化环境中运行应用程序。
当攻击者或恶意应用程序突破隔离的容器环境,并获得对主机系统或其他容器未经授权的访问时,就会发生容器逃逸。
Snyk 团队发现了四个缺陷,统称为“Leaky Vessels”,这些缺陷影响 runc 和 Buildkit 容器基础设施和构建工具,可能允许攻击者在各种软件产品上执行容器逃逸。
演示利用 Leaky Vessels 访问主机上的数据
由于 runc 或 Buildkit 被广泛流行的容器管理软件(例如 Docker 和 Kubernetes)使用,因此遭受攻击的风险更加严重。
泄露容器缺陷总结
·
CVE-2024-21626:由于runc中WORKDIR 命令的操作顺序缺陷而产生的错误。它允许攻击者逃离容器的隔离环境,授予对主机操作系统的未经授权的访问权限,并可能危及整个系统。
·
CVE-2024-23651:Buildkit 的挂载缓存处理中的竞争条件导致不可预测的行为,可能允许攻击者操纵进程进行未经授权的访问或中断正常的容器操作。
·
CVE-2024-23652:允许在 Buildkit 的容器拆卸阶段任意删除文件或目录的缺陷。它可能导致拒绝服务、数据损坏或未经授权的数据操纵。
·
CVE-2024-23653:此缺陷是由于 Buildkit 的 GRPC 接口中的权限检查不足而引起的。它可能允许攻击者执行超出其权限的操作,从而导致权限升级或未经授权访问敏感数据。
影响和补救
Buildkit 和 runc 被 Docker 和多个 Linux 发行版等流行项目广泛使用。
因此,“Leaky Vessels”缺陷的修补需要 Snyk 的安全研究团队、受影响组件(runc 和 BuildKit)的维护者以及更广泛的容器基础设施社区之间协调行动。
2024 年 1 月 31 日,Buildkit 在 0.12.5 版本中修复了该缺陷,runc 在1.1.12 版本中解决了影响其的安全问题 。
Docker 同日发布了 4.27.0 版本,将组件的安全版本合并到其 Moby 引擎中,版本为 25.0.1 和 24.0.8。