Docker最严重Copy漏洞(CVE

Docker最严峻Copy缝隙(CVE-2019-14271)修正了史上最严峻的copy缝隙CVE-2019-14271。

Docker最严峻Copy缝隙(CVE-2019-14271)

Copy指令答应从容器、向容器中、或容器之间仿制文件。语法与规范的unixcp指令十分类似。要从容器中仿制/var/logs,语法是dockercpcontainer_name:/var/logs/some/host/path。

从下图所示,要从容器中将文件仿制出去,Docker运用了一个名为docker-tar的协助进程。

Docker最严峻Copy缝隙(CVE-2019-14271)

docker-tar是经过chroot到容器,将恳求的文件或目录存档,然后将生成的tar文件传递给Dockerdaemon,然后由daemon提取到主机的方针目录中。

注释:CHROOT便是ChangeRoot,也便是改动程序履行时所参阅的根目录方位。CHROOT能够增进体系的安全性,约束运用者能做的事。

Docker最严峻Copy缝隙(CVE-2019-14271)

Chroot首要是为了防止体系链接的问题,当主机进程测验拜访容器中的文件时就或许会引发体系链接问题。假如拜访的文件中有体系链接,就会解析到hostroot。因而,进犯者操控的容器就能够测验和诱使dockercp在主机而非容器上读写文件。上一年有许多Docker和Podman相关的体系链接CVE缝隙。经过chroot到容器的root,docker-tar能够保证一切体系链接都能够高效地解析。

但chroot到容器然后从容器中仿制文件或许会引发很严峻的安全问题。

Docker是用Golang言语编写。有缝隙的Docker版别是用Gov1.11编译的。在该版别中,一些含有嵌入C代码(cgo)的包会在运转时动态加载同享的库。这些包包含net和os/user,都是docker-tar运用的,并且在运转时会加载多个libnss_*.so库。一般来说,库是从host文件体系加载的,但由于docker-tarchroot到了容器,因而会从容器文件体系中加载库。也便是说docker-tat会加载和履行来源于容器或由容器操控的代码。

需求阐明的是,除了chroot到容器文件体系外,docker-tar并没有被容器化。它是在host命名空间运转的,权限为root全新且不受限于cgroups或seccomp。因而,经过注入代码到docker-tar,歹意容器就能够获取host主机的彻底root拜访权限。

或许的进犯场景有Docker用户从另一个Docker处仿制文件:

容器运转含有歹意libnss_*.so库的镜像

容器中含有被进犯者替换的libnss_*.so库

在这两种情况下,进犯者都能够获取主机上的root代码履行权限。

时间

2019-12-07 08:41


栏目

公司新闻


作者


分享