
إثبات المفهوم لاستغلال تصعيد الصلاحيات المحلية لـ CVE-2017-7184، وهو تجاوز سعة مكدس XFRM netlink لنواة لينكس. يُظهر إساءة استخدام المساحات الاسمية وROP النواة للحصول على صلاحيات الجذر دون sudo.
يحتوي هذا المستودع على إثبات مفهوم لاستغلال تصعيد الصلاحيات المحلي لـ CVE-2017-7184، وهي ثغرة في نواة لينكس في النظام الفرعي XFRM (IPsec) netlink.
يوضح الاستغلال كيف يمكن لمستخدم غير مميز الحصول على جذر حقيقي (UID 0) عن طريق:
إنشاء مساحة اسم مستخدم + شبكة غير مميزة
الحصول على CAP_NET_ADMIN داخل مساحة الاسم
تحفيز تجاوز سعة مكدس النواة في معالجة XFRM netlink
تنفيذ سلسلة ROP للنواة لاستدعاء:
prepare_kernel_cred(NULL)commit_creds()العودة بأمان إلى وضع المستخدم بصلاحيات جذر كاملة
لا يتطلب sudo.
| الحقل | القيمة |
|---|---|
| CVE | CVE-2017-7184 |
| المكون | نواة لينكس – XFRM Netlink |
| نوع الخطأ | تجاوز سعة مكدس النواة |
| التأثير | تصعيد صلاحيات محلي |
| ناقل الهجوم | محلي (مستخدم غير مميز) |
| فئة الاستغلال | إساءة استخدام مساحات الأسماء + ROP |
| أول إصدار متأثر | نوى لينكس ≤ 4.8 |
| الإصلاح في | تصحيحات النواة الصادرة في 2017 |
مساحة اسم مستخدم غير مميز
unshare(CLONE_NEWUSER | CLONE_NEWNET)CAP_NET_ADMIN بدون sudoإساءة استخدام XFRM Netlink
NETLINK_XFRMXFRM_MSG_NEWSA مشوهةتنفيذ ROP في النواة
العودة إلى وضع المستخدم
swapgs; iretqunprivileged_userns_clone = 1gcc مع دعم pthreadتحقق من دعم مساحة الاسم:
cat /proc/sys/kernel/unprivileged_userns_clone
الإخراج المتوقع:
1
gcc exploit.c -o exploit -pthread
./exploit
لا تستخدم sudo.
إذا نجح الاستغلال، ستحصل على شل جذر حقيقي:
uid=0(root) gid=0(root) groups=0(root)
يحاول الاستغلال:
تسريب الرموز من /proc/kallsyms
إذا كان مقيدًا، يتراجع إلى إزاحات مشفرة لـ:
commit_credsprepare_kernel_cred⚠️ أدوات ROP والإزاحات خاصة بإصدار النواة. يجب تعديلها للإصدارات الأخرى.
هذا يؤكد أن النظام لا يزال قابلًا للاستغلال.
sysctl -w kernel.unprivileged_userns_clone=0
هذا الكود مقدم لأغراض تعليمية وبحث أمني فقط.
commit_creds