Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/skynet-f-nvidia/cve-2025-31133
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالاختبار الاختراقالفريق الأحمرالهروب من الحاوية
GitHubskynet-f-nvidia/cve-2025-31133

CVE-2025-31133

إثبات المفهوم CVE-2025-31133

عرض المستودع
21منذ 9 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

استغلال (PoC) لثغرة CVE-2025-31133

يشرح هذا المستند وظيفة سكربت إثبات المفهوم (PoC) المقدم لثغرة runc CVE-2025-31133.

ملخص

  • الثغرة: CVE-2025-31133 - حالة سباق على الروابط الرمزية في معالجة runc لخاصية maskedPaths.
  • الأثر: يمكن لحاوية خبيثة تجاوز الحماية التي توفرها maskedPaths، مما يسمح لها بالكتابة إلى ملفات حساسة على النظام المضيف. ويشكّل ذلك هروبًا من الحاوية (container escape).
  • هدف الـ PoC: إظهار الثغرة بأمان من خلال تعديل ملف /proc/sys/kernel/core_pattern على المضيف من داخل حاوية.
  • الأمان: هذا الـ PoC غير مدمر. فهو يكتب فقط السلسلة "pwned" إلى الملف الهدف ولا ينفّذ أي كود تعسفي على المضيف. كما يوفّر تعليمات لاستعادة القيمة الأصلية.

شرح الثغرة

ميزة maskedPaths في مواصفات OCI للحاوية (config.json) هي آلية أمنية مصممة لمنع الحاويات من الوصول إلى ملفات النظام الحساسة. تعمل عن طريق الربط (bind mount) للملف /dev/null (ملف جهاز فارغ) فوق هذه المسارات الحساسة داخل الحاوية، مما يجعلها فعليًا غير قابلة للقراءة أو الكتابة.

الثغرة (CVE-2025-31133) هي حالة سباق من نوع التحقق قبل الاستخدام (Time-of-Check to Time-of-Use - TOCTOU). يعمل الاستغلال على النحو التالي:

  1. الخلل: عندما يجهّز runc الحاوية، فإنه يستعد لاستخدام ملف dev/null من rootfs الخاص بالحاوية كمصدر لعملية الربط (bind mount) التي ستقوم بحجب المسار الحساس (مثل /proc/sys/kernel/core_pattern).
  2. السباق: توجد نافذة زمنية صغيرة بين اللحظة التي يحلّ فيها runc المسار إلى rootfs/dev/null واللحظة التي ينفّذ فيها فعليًا عملية التثبيت (mount).
  3. الاستغلال: يمكن للمهاجم إنشاء سكربت على المضيف يقوم باستمرار وبسرعة فائقة بتبديل ملف rootfs/dev/null بين عقدة جهاز شرعية ورابط رمزي يشير إلى الملف الهدف على المضيف (/proc/sys/kernel/core_pattern).
  4. كسب السباق: إذا كان التوقيت مثاليًا، فسينفّذ runc عملية التثبيت في اللحظة المحددة التي يكون فيها rootfs/dev/null رابطًا رمزيًا. وهذا يجعل النواة تتبع الرابط الرمزي، مما يؤدي إلى فشل عملية الحجب المطلوبة للمسار /proc/sys/kernel/core_pattern.
  5. الهروب من الحاوية: نظرًا لفشل الحجب، لم يعد المسار داخل الحاوية محميًا. يمكن الآن لعملية تعمل داخل الحاوية الكتابة إلى /proc/sys/kernel/core_pattern، مما يعدّل ملف المضيف مباشرة، محققًا هروبًا من الحاوية.

يستخدم هذا الـ PoC هذه التقنية للكتابة إلى /proc/sys/kernel/core_pattern، وهو هدف شائع لمثل هذه الاستغلالات لأن تعديله قد يؤدي إلى تنفيذ كود تعسفي على المضيف عند تعطل إحدى العمليات. ومع ذلك، يكتب هذا الـ PoC سلسلة غير ضارة فقط لإثبات وجود إمكانية الكتابة (write primitive).


كيف يعمل سكربت الـ PoC

يقوم سكربت poc.sh بأتمتة العملية بأكملها الموضحة أعلاه.

  1. الإعداد والتنظيف:

    • يعرّف متغيرات لملف runc الثنائي واسم الحاوية ومسار rootfs.
    • يتضمن دالة cleanup قوية تضمن إزالة أي حاويات أو ملفات أنشأها السكربت مسبقًا. تُستدعى هذه الدالة تلقائيًا عند الخروج أو المقاطعة أو الإنهاء.
  2. التحضير:

    • يحفظ المحتوى الأصلي لملف /proc/sys/kernel/core_pattern الخاص بالمضيف في ملف مؤقت. يُستخدم هذا لاحقًا للتحقق من نجاح الاستغلال ولمساعدة المستخدم على استعادة النظام.
    • ينشئ rootfs حاوية بأبسط صورة (./rootfs) وملف config.json.
    • يُدرج ملف config.json المسار /proc/sys/kernel/core_pattern صراحةً ضمن maskedPaths — الميزة نفسها التي يهدف الاستغلال إلى تجاوزها.
  3. دالة السباق (symlink_race)

    • تشكّل هذه الدالة جوهر الاستغلال. وهي مصممة للعمل في الخلفية.
    • تدخل في حلقة تكرار ضيقة تستمر لمدة 20 ثانية.
    • داخل الحلقة، تكرر باستمرار ما يلي:
      1. حذف rootfs/dev/null.

الاستخدام

المتطلبات الأساسية:

  • نسخة مصابة بالثغرة من runc.
  • تثبيت busybox-static (لقشرة الحاوية).
  • صلاحيات الجذر (sudo) لتشغيل runc وتعديل /proc.

الخطوات:

  1. احفظ السكربت باسم poc.sh.
  2. اجعله قابلاً للتنفيذ: chmod +x poc.sh.
  3. شغّله باستخدام sudo: sudo ./poc.sh.

تفسير المخرجات

  • النجاح: إذا رأيت رسالة [+] EXPLOIT SUCCEEDED!، فهذا يعني أن حالة السباق قد كُسبت. تم تعديل ملف /proc/sys/kernel/core_pattern على المضيف بنجاح من داخل الحاوية، مما يؤكد وجود الثغرة.
  • الفشل: إذا رأيت [-] Exploit did not succeed.، فهذا يعني أن السباق لم يُكسب في هذه المحاولة. حالات السباق احتمالية بطبيعتها وتعتمد بشكل كبير على توقيت النظام وحمولته. جرّب تشغيل السكربت عدة مرات أخرى.

استعادة نظامك (بعد تشغيل ناجح)

سيقوم الـ PoC بتعديل ملف نظام. لاستعادته إلى حالته الأصلية، نفّذ الأمر الذي يقترحه السكربت:

root@kitploit:~
# The 'ORIGINAL_PATTERN' will be the actual value from your system
echo 'original_core_pattern_value' | sudo tee /proc/sys/kernel/core_pattern
تنزيل الأداة
  • إنشاء رابط رمزي من rootfs/dev/null إلى الملف الهدف على المضيف (/proc/sys/kernel/core_pattern).
  • توقف لجزء صغير جدًا من الثانية (500 ميكروثانية).
  • حذف الرابط الرمزي.
  • إعادة إنشاء rootfs/dev/null كجهاز حرفي (character device) صحيح (mknod).
  • توقف لفترة أطول قليلاً (5000 ميكروثانية).
  • يؤدي هذا التبديل السريع إلى خلق نافذة الفرصة لحدوث حالة السباق.
  • التنفيذ:

    • تُبدأ دالة symlink_race كعملية خلفية.
    • بعد ذلك مباشرة، ينفّذ السكربت runc run ... لإنشاء الحاوية وتشغيلها. في هذه المرحلة يحاول runc تطبيق maskedPaths.
    • بمجرد تشغيل الحاوية، يستخدم السكربت runc exec لتنفيذ أمر داخل الحاوية: echo 'pwned' > /proc/sys/kernel/core_pattern.
  • التحقق:

    • ينتظر السكربت انتهاء عملية السباق في الخلفية ثم ينظّف الحاوية.
    • بعدها يقرأ المحتوى الحالي لملف /proc/sys/kernel/core_pattern الخاص بالمضيف.
    • يقارن المحتوى الحالي بالسلسلة المتوقعة "pwned" وبالقيمة الأصلية.
    • بناءً على النتيجة، يطبع رسالة واضحة: [+] EXPLOIT SUCCEEDED! أو [-] Exploit did not succeed.