
إثبات مفهوم لثغرة CVE-2020-15257 في containerd.
يحتوي هذا المستودع على كود إثبات المفهوم لاستغلال الثغرة CVE-2020-15257 كما هو موصوف في منشور مدونتنا. على الرغم من أنه كُتب من أجل 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 معلّقان يجب قتلهما وتنفيذ docker rm --force
عليهما على التوالي لتنظيف الأمور قليلاً.
سيتبقى بعض الملفات في /var/lib/containerd/io.containerd.runtime.v1.linux/moby/ و
/run/containerd/io.containerd.runtime.v1.linux/moby/ أيضاً. وضمن هذا السياق، لا يحاول هذا
الاستغلال التوفيق بين ملفات address الخاصة بـ containerd. قد يؤدي هذا إلى مشاكل حيث أن
محاولة تحديث نظام مصاب بعد استغلاله ستؤدي إلى فشل Docker/containerd
في إعادة التشغيل بشكل سليم و/أو عدم القدرة على رؤية الحاويات الموجودة. إذا
لاحظت هذا أثناء تحديث حزمة containerd لديك، فقد يكون مؤشراً على أن
النظام قد تم اختراقه سابقاً بواسطة أحد أشكال هذا الاستغلال.