
عرض تعليمي لثغرة CVE-2024-21626 للهروب من حاوية runc مع أداة كشف مبنية على eBPF لمحاولات الاستغلال.
يحتوي هذا المستودع على أمثلة كود لتطبيق ضعيف مقابل CVE-2024-21626 بالإضافة إلى أداة eBPF لاكتشاف محاولات الاستغلال. تم إنشاء هذا المستودع كجزء من مقالة المدونة هذه blog post.
برنامج الأداة المستخدم لكشف هذه الثغرة هو لأغراض توضيحية فقط. إنه ليس كشفًا كاملاً عن CVE-2024-21626.
CVE-2024-21626 هي ثغرة في بيئة تشغيل الحاويات runc، موجودة في الإصدارات السابقة لـ v1.1.12. تعتمد على حقيقة أن runc لا يغلق واصف ملف "مسرب" في الوقت المناسب عند إنشاء الأوامر أو تنفيذها داخل الحاوية، مما يؤدي إلى توارث الحاوية لواصف الملف هذا والوصول إلى نظام ملفات المضيف.
هناك عدة طرق لاستغلال هذه الثغرة. يوضح هذا المستودع كيف يمكن استغلال هذه الثغرة في وقت التشغيل.
يمكنك قراءة المزيد عنها هنا.
لكي يعمل هذا العرض التوضيحي، ستحتاج إلى التأكد من أن جهازك يعمل بإصدار runc <= 1.1.11.
leaky-app هو تطبيق Go يقوم بإنشاء رابط رمزي لواصف الملف الذي قد يكون مسربًا. لبناء صورة Docker:
make leaky-app
من أجل بناء أداة eBPF، ستحتاج إلى أداة [ig].
يمكنك بناء الأداة باستخدام:
make gadget
بمجرد بناء كليهما، قم بتشغيل الأداة باستخدام:
IG_EXPERIMENTAL=true sudo -E ig run trace-symlink:latest
افتح شل أخرى وابدأ حاوية leaky-app:
docker run --rm --name leaky-app leaky-app
يجب أن ترى أن الأداة تخرج الحاوية التي استدعت استدعاء النظام symlink.
يحتوي هذا المستودع على تطبيق توضيحي مصمم لعرض كشف CVE-2024-21626. من المهم ملاحظة أن هذا العرض التوضيحي هو لأغراض تعليمية فقط ولا ينبغي اعتباره أداة كشف عملية. آليات الكشف المنفذة في هذا العرض لا تغطي جميع السيناريوهات ولا تمثل بدقة تعقيدات كشف هذه الثغرة.