
Prova di concetto per CVE-2020-15257 in containerd.
Questo repository contiene il codice proof-of-concept dell'exploit per CVE-2020-15257 come descritto nel nostro post sul blog. Sebbene sia stato scritto per containerd 1.2.x e 1.3.x, dovrebbe funzionare sulle versioni pre-patch di 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: Questo exploit lascerà Docker/containerd un po' scombussolati. Ci saranno un containerd-shim e un container Docker orfani che dovranno essere rispettivamente terminati e rimossi con docker rm --force per sistemare le cose. Anche /var/lib/containerd/io.containerd.runtime.v1.linux/moby/ e /run/containerd/io.containerd.runtime.v1.linux/moby/ conterranno dei residui. Inoltre, questo exploit non tenta di riconciliare i file address di containerd. Ciò potrebbe causare problemi: se si tenta di aggiornare un sistema vulnerabile dopo averlo sfruttato, Docker/containerd potrebbe non riavviarsi correttamente e/o non essere in grado di vedere i container esistenti. Se si osserva questo comportamento durante l'aggiornamento del pacchetto containerd, potrebbe essere un indicatore che il sistema è stato precedentemente compromesso da una variante di questo exploit.