0x00 概述
2019年2月11日,runc的维护团队报告了一个新发现的漏洞,该漏洞最初由Adam Iwaniuk和Borys Poplawski发现。该漏洞编号为CVE-2019-5736,漏洞影响在默认设置下运行的Docker容器,并且攻击者可以使用它来获得主机上的root级访问权限。
0x01 漏洞原理
漏洞点在于runc,runc是一个容器运行时,最初是作为Docker的一部分开发的,后来作为一个单独的开源工具和库被提取出来。作为“低级别”容器运行时,runc主要由“高级别”容器运行时(例如Docker)用于生成和运行容器,尽管它可以用作独立工具。
像Docker这样的“高级别”容器运行时通常会实现镜像创建和管理等功能,并且可以使用runc来处理与运行容器相关的任务:创建容器、将进程附加到现有容等。
在Docker 18.09.2之前的版本中使用了的runc版本小于1.0-rc6,因此允许攻击者重写宿主机上的runc二进制文件,攻击者可以在宿主机上以root身份执行命令。
0x02 利用方式
宿主机利用攻击者提供的image来创建一个新的container 。
拥有container root权限,并且该container后续被docker exec attach。
一句话描述,docker 18.09.2之前的runc存在漏洞,攻击者可以修改runc的二进制文件导致提权。
0x03 漏洞复现
一、安装漏洞环境。(Ubuntu16.04)
curl https://gist.githubuser