
Prueba de concepto para CVE-2020-15257 en containerd.
Este repositorio contiene el código de exploit de prueba de concepto para CVE-2020-15257, como se describe en nuestra entrada de blog. Aunque está escrito para containerd 1.2.x y 1.3.x, debería funcionar en versiones sin parchear de 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 dejará Docker/containerd un poco desordenado. Habrá un containerd-shim huérfano y un contenedor Docker que deberán ser terminados y eliminados con docker rm --force, respectivamente, para limpiar las cosas. /var/lib/containerd/io.containerd.runtime.v1.linux/moby/ y /run/containerd/io.containerd.runtime.v1.linux/moby/ también tendrán algunos restos. Además, este exploit no intenta reconciliar los archivos address de containerd. Esto puede provocar problemas donde intentar actualizar un sistema vulnerable después de explotarlo resulte en que Docker/containerd no se reinicie correctamente y/o no pueda ver los contenedores existentes. Si observas esto al actualizar tu paquete containerd, puede ser un indicador de que el sistema ha sido comprometido previamente por alguna variante de este exploit.