
استغلال لثغرة CVE-2021-25741 في Kubernetes والتي تسمح بتركيب نظام الملفات المضيف داخل الحاويات عبر حالة سباق، مع نصوص نشر وتفاصيل تقنية.
إنه استغلال لثغرة CVE-2021-25741. تسمح هذه الثغرة بتركيب نظام ملفات Node داخل POD جديد بصلاحيات القراءة والكتابة.
يمكنك قراءة المزيد عن الثغرة هنا:
https://security.googleblog.com/2021/12/exploring-container-security-storage.html
لست مؤلف هذه الثغرة، وقد قمت فقط بصنع الاستغلال.
شكرًا لـ @russtone و @maximusfox على المساعدة في تطوير الاستغلال.
الإصدارات الضعيفة من kubelet:
فقط قم بتشغيل run.sh وانتظر :) سيستغرق الاستغلال بعض الوقت (بالنسبة لي استغرق 10-20 دقيقة) لأنه يعتمد على حالة السباق (race condition).
chmod +x run.sh; ./run.sh

عندما تحصل على رسالة "Success" يمكنك الاتصال بـ POD والعثور على نظام ملفات Node في دليل /mnt/data.
للاتصال يمكنك استخدام الأمر التالي:
kubectl exec -i -t cve202125741 -c mount-container -- /bin/sh

يتكون الاستغلال من جزأين:
ملف YAML يحتوي على إعدادات POD التي تستغل الثغرة. بسبب حالة السباق لا يعمل في كل مرة، لذا يجب عليك القيام بذلك في حلقة.
سكربت يقوم بنشر pod.yaml، والتحقق من النتيجة، وإعادة نشره إذا كان ذلك مطلوبًا.
بخصوص ثنائي renameat2 مع خيار RENAME_EXCHANGE استخدمت هذا الكود: https://gist.github.com/eatnumber1/f97ac7dad7b1f5a9721f
يمكنك تجميعه بنفسك واستبداله في pod.yaml إذا أردت:
gcc renameat2.c -o renameat2
base64 renameat2
الحلول:
الحلول: