Docker 容器逃逸漏洞 (CVE-2020-15257)复现 电脑版发表于:2020/12/29 15:48 ![Docker远征](https://img.tnblog.net/arcimg/hb/656ec4beace04f5e9a7b1d58b6368639.jpg "Docker远征") >#Docker容器逃逸漏洞(CVE-2020-15257)复现 [TOC] 漏洞概述 ------------ tn>containerd是行业标准的容器运行时,可作为Linux和Windows的守护程序使用。在版本1.3.9和1.4.3之前的容器中,容器填充的API不正确地暴露给主机网络容器。填充程序的API套接字的访问控制验证了连接过程的有效UID为0,但没有以其他方式限制对抽象Unix域套接字的访问。这将允许在与填充程序相同的网络名称空间中运行的恶意容器(有效UID为0,但特权降低)导致新进程以提升的特权运行。 影响版本 ------------ >- containerd < 1.4.3 - containerd < 1.3.9 环境搭建 ------------ tn>安装有漏洞的containerd版本 这里我使用的版本是`1.2.6` ![](https://img.tnblog.net/arcimg/hb/d4054f18f45d4041821e82f590c149bc.png) 漏洞复现 ------------ tn>通过 `--net=host` 作为启动参数来运行一个容器: ```bash docker run -it --net=host ubuntu:18.04 /bin/bash ``` ![](https://img.tnblog.net/arcimg/hb/6391da03b6f640e483fa197dde34df66.png) ![](https://img.tnblog.net/arcimg/hb/86eed934829c42d18d8f8150a62ec813.png) tn>接着在容器内执行 ```bash cat /proc/net/unix|grep -a "containerd-shim" ``` tn>可看到抽象命名空间Unix域套接字 ![](https://img.tnblog.net/arcimg/hb/d64b828422a74f978c7754a043eaad5e.png) tn>Poc地址 ```bash https://github.com/Xyntax/CDK/releases/tag/0.1.6 ``` tn>这里为了方便行事,我们下载解压直接把`cdk_linux_amd64`文件拷贝到容器里 ```bash tar -zxvf cdk_v0.1.6_release.tar.gz docker cp cdk_linux_amd64 3e19b9e33ad0:/tmp ``` ![](https://img.tnblog.net/arcimg/hb/755e252ee99c4d07a97786044cfdafeb.png) tn>然后在另外一个服务器上用瑞士军刀`6666`端口,开启监听。 ![](https://img.tnblog.net/arcimg/hb/ceb0c2c5df8a4c99b541ae662e764a04.png) tn>在容器中执行exp,自动搜索可用的socket并反弹宿主机的shell到远端服务器,完成逃逸 ![](https://img.tnblog.net/arcimg/hb/0de590b0a04146838eea9779f2481879.png) ![](https://img.tnblog.net/arcimg/hb/b5e965e2d4f74a978fd7232bcc4df948.png) 漏洞应急与自测 ------------ tn>为了便于验证用户环境中是否存在该漏洞,我们提供了poc镜像。使用方式如下: ```bash sudo docker run -it --rm -v /:/host/ -v /var/run/docker.sock:/var/run/docker.sock --net=host dosecteam/pocs:CVE-2020-15257 ``` ![](https://img.tnblog.net/arcimg/hb/d566b828c9fa4df6a8ba33f88f115730.png) 修复建议 ------------ tn>升级 containerd 至最新版本。