
إثبات المفهوم (PoC) لاستغلال CVE-2015-1328
استغلال إثبات المفهوم (PoC) لثغرة CVE-2015-1328، وهي ثغرة تصعيد صلاحيات تؤثر على تنفيذ overlayfs في نواة لينكس. تسمح هذه الثغرة للمستخدمين المحليين غير المتميزين بالحصول على وصول root من خلال استغلال فحوصات صلاحيات غير سليمة في عمليات تثبيت overlayfs داخل مساحات المستخدمين.
CVE-2015-1328 هي ثغرة أمنية حرجة تؤثر على نواة لينكس مع دعم overlayfs ومساحات المستخدمين الممكنة. تسمح الثغرة لمستخدم محلي غير متميز بما يلي:
unshare(CLONE_NEWUSER)/etc/ld.so.preloadيوضح هذا الإثبات الثغرة عن طريق:
/etc/ld.so.preloadgetuid() لتنفيذ قشرة rootkernel.unprivileged_userns_clone=1)-m32)يتضمن المشروع Makefile لسهولة الترجمة:
make
سيؤدي هذا إلى ترجمة:
ofs - الملف الثنائي الرئيسي للاستغلال (ثابت 32-bit)ofs-lib.so - المكتبة المشتركة لخطاف LD_PRELOAD (32-bit)إذا كنت تفضل الترجمة يدويًا:
# ترجمة الاستغلال الرئيسي
gcc -o ofs ofs.c -m32 -static
# ترجمة المكتبة المشتركة
gcc -m32 -fPIC -shared -o ofs-lib.so ofs-lib.c -ldl -static-libgcc
⚠️ تحذير: سيقوم هذا الاستغلال بتعديل ملفات النظام ومحاولة الحصول على صلاحيات root. استخدمه فقط في بيئات خاضعة للسيطرة وبإذن مناسب.
قم بترجمة الاستغلال:
make
قم بتشغيل الاستغلال:
./ofs
إذا نجح، سيقوم الاستغلال بما يلي:
/etc/ld.so.preload/bin/su الذي يقوم بتشغيل المكتبة الخبيثةunshare(CLONE_NEWUSER)clone() مع CLONE_NEWNS/etc/ld.so.preload/tmp/ofs-lib.so/bin/su، مما يؤدي إلى تشغيل المكتبة المحملة مسبقًاgetuid() وإطلاق قشرة rootclone() مع كومة مخصصة لإنشاء مساحات تثبيت معزولةofs-lib.so) بربط getuid() عبر LD_PRELOAD/bin/su دالة getuid()، يتم تنفيذ الدالة الخبيثة بدلاً من ذلك.
├── ofs.c # كود الاستغلال الرئيسي
├── ofs-lib.c # المكتبة المشتركة لتصعيد الصلاحيات
├── lib_so.h # بيانات المكتبة الثنائية المضمنة
├── Makefile # إعدادات البناء
└── README.md # هذا الملف
getuid() الذي يطلق قشرة rootللحماية من هذه الثغرة:
echo 0 > /proc/sys/kernel/unprivileged_userns_clone
يتم توفير هذا الرمز لأغراض تعليمية وبحثية أمنية فقط.
يتم توفير هذا المشروع كما هو لأغراض تعليمية. استخدمه بمسؤولية ووفقًا لجميع القوانين واللوائح المعمول بها.