攻破 Docker:runC 容器逃逸漏洞的深入分析及多种

发布时间:

对该漏洞的基本描述、发现过程跟概念证明,请阅读《影响大量云服务厂商的重大漏洞:runC 容器逃逸漏洞剖析(CVE-2019-5736)》。本文将在此基础上,深入分析这一漏洞,并探讨多种漏洞利用方法。

该漏洞一经公布,就获得了非常多的关注,良多技能站点和商业公司都撰写专门的文章来说明这一漏洞。在 Twistlock,咱们的 CTO John Morello 撰写了一篇杰出的文章,其中包括 Twistlock 平台供应的所有相关细节跟缓解措施。

runC 维护团队成员 Aleksa Sarai 发现 LXC 存在同样的毛病。但与 Docker 相反,只有特权 LXC 容器才容易受到攻打。runC 和 LXC 都对漏洞进行了修复,并发布了新的版本。

最初,官方表示漏洞利用代码在 2 月 18 日之前不会公开宣布,以防止恶意袭击者在用户还不迭时更新的时间段内进行该漏洞的武器化利用。然而,在漏洞暴露后的多少天内,有多少个人决定发布他们自己的漏洞利用代码,这直接导致了 runC 团队在 2 月 13 日就颁布了他们的漏洞应用代码。因为,他们已经无奈制止人们对这一破绽的踊跃研究。

RunC 是一个容器运行时,最初是作为 Docker 的一部分开发的,后来作为一个单独的开源工具和库被提取出来。作为 " 低级别 " 容器运行时,runC 主要由 " 高级别 " 容器运行时(例如 Docker)用于生成和运行容器,只管它能够用作独破工具。

2019 年 2 月 11 日,runC 的保护团队报告了一个新发现的漏洞,该漏洞最初由 Adam Iwaniuk 和 Borys Poplawski 发明。该漏洞编号为 CVE-2019-5736,漏洞影响在默认设置下运行的 Docker 容器,并且攻打者可能运用它来失掉主机上的 root 级访问权限。

概述

对于 RunC

像 Docker 这样的 " 高等别 " 容器运行时通常会实现镜像创立和管理等功能,并且可以应用 runC 来处理与运行容器相干的任务:创建容器、将进程附加到现有容器等。