
ثغرة CVE-2019-5736 مطبَّقة في بيئة تشغيل حاويات مكتوبة ذاتيًا لفهم آلية الاستغلال.
تم تنفيذ CVE-2019-5736 باستخدام مشغّل حاويات بسيط مكتوب ذاتيًا لفهم الثغرة.
يعتمد الاستغلال على (وقد نُسخ معظمه تقريبًا من) runc-poc من twistlock: https://github.com/twistlock/RunC-CVE-2019-5736/tree/master/malicious_image_POC
انظر إلى توثيق الكود لمزيد من التفاصيل.
Usage: quarantine [OPTIONS] [BINARY and its ARGS]
--rootfs: (mandatory) Specify a rootfs for the container.
--urange: Specify a urange start_host:end_host,start_guest.
--grange: Specify a grange start_host:end_host,start_guest.
--uid: Specify the desired UID in the container.
--ugd: Specify the desired GID in the container.
--supp: Append supplementary groups from the specified grange to the process running in the container.
يلغي مشاركة جميع مساحات الأسماء باستثناء مساحة اسم المستخدم. وتُلغى مشاركة مساحة اسم المستخدم في ظروف خاصة، أي عند تحديد urange أو grange أو و/أو .
uidgidتم اختبار هذا وتنفيذه على Ubuntu 18.04.
mkdir rootfssudo debootstrap bionic ./rootfsgit clone https://github.com/mhiramat/libcapcat exploit_code_for_shared_lib.c >> <any cap*.c, I used cap_alloc.c>makelibcap.so المعدّل
sudo chroot rootfsapt install libcap-devlibcap.so.2.25 الذي تم إنشاؤه إلى دليل rootfs المناسب
-sudo cp libcap.so.2.25 rootfs/lib/x86_64-linux-gnu
ldd quarantinesudo cp shebang_exploit rootfs/sudo gcc -o rootfs/root/payload payload.csudo gcc -o rootfs/overwrite_sndbx_runtime overwrite_sndbx_runtime.cعلى سبيل المثال: sudo ./quarantine --rootfs rootfs /shebang_exploit أو ./quarantine --rootfs rootfs --uid 1 /shebang_exploit.
يعمل هذا طالما أبقيت إما CAP_DAC_OVERRIDE أو CAP_SYS_ADMIN على المضيف، أي لا تلغِ مشاركة مساحة اسم المستخدم عند استخدام sudo (لأن ذلك يُسقط الصلاحيات في مساحة اسم الأب)، أو كنت تملك الملف على المضيف.