
Preuve de concept pour CVE-2020-15257 dans containerd.
Ce dépôt contient le code de preuve de concept pour l'exploitation de CVE-2020-15257, tel que décrit dans notre article de blog. Bien qu'écrit pour containerd 1.2.x et 1.3.x, il devrait fonctionner sur les versions antérieures au correctif 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
$ # ou, pour containerd 1.2.x
$ cat /etc/crontab
Note : Cet exploit va quelque peu désorganiser Docker/containerd. Il y aura un containerd-shim et un conteneur Docker en suspens qui devront être tués et docker rm --force respectivement pour nettoyer un peu les choses.
/var/lib/containerd/io.containerd.runtime.v1.linux/moby/ et
/run/containerd/io.containerd.runtime.v1.linux/moby/ contiendront également des résidus. Dans ce cadre, cet exploit ne tente pas de réconcilier les fichiers address de containerd. Cela peut entraîner des problèmes où, après avoir exploité un système vulnérable, la mise à jour de ce dernier entraîne un échec de redémarrage propre de Docker/containerd et/ou l'incapacité de voir les conteneurs existants. Si vous observez cela lors de la mise à jour de votre paquet containerd, cela peut être un indicateur que le système a été précédemment compromis par une variante de cet exploit.