
استغلال بلغة C لـ CVE-2017-16995، وهو تصعيد امتيازات محلية في نواة لينكس عبر استدعاء النظام bpf(2) من eBPF، ويستهدف أنظمة Ubuntu/Debian بإصدارات النواة 4.4-4.14.
Ubuntu هو نظام تشغيل GNU/Linux مفتوح المصدر يعتمد على سطح المكتب، مبني على Debian GNU/Linux. مؤخرًا، اكتشف أحد خبراء الأمن (القبعات البيضاء) وجود ثغرة محلية لتصعيد الامتيازات في الإصدار الأحدث من Ubuntu (Ubuntu 16.04)، برقم CVE-2017-16995. توجد هذه الثغرة في نظام Linux kernel الذي يستدعي eBPF bpf(2)، حيث يمكن للمستخدم بتقديم برنامج BPF ضار يجعل وحدة التحقق من eBPF ترتكب خطأ حسابيًا، مما يؤدي إلى مشاكل قراءة/كتابة عشوائية للذاكرة، ويمكن للمستخدم منخفض الصلاحية استخدام هذه الثغرة للحصول على صلاحيات إدارية. تم إصلاح هذه الثغرة في الإصدارات القديمة، ومع ذلك لا يزال من الممكن استغلالها في الإصدار الأحدث، ولم تصدر الجهة الرسمية تصحيحًا بعد، وتعتبر الثغرة في حالة 0day.
Linux Kernel Version 4.14-4.4 تؤثر فقط على إصدارات Ubuntu/Debian
عالية الخطورة
bearcat@ubuntu:/opt$ lsb_release -a
<br>No LSB modules are available.
<br>Distributor ID: Ubuntu
<br>Description: Ubuntu 16.04.4 LTS
<br>Release: 16.04
<br>Codename: xenial
<br>bearcat@ubuntu:/opt$ uname -a
<br>Linux ubuntu 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
<br>bearcat@ubuntu:/opt$ id
<br>uid=1000(bearcat) gid=1000(bearcat) <br>groups=1000(bearcat),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd),115(lpadmin),116(sambashare)
<br>bearcat@ubuntu:/opt$ ls
<br>exploit.c
<br>bearcat@ubuntu:/opt$ gcc exploit.c -o exploit
<br>bearcat@ubuntu:/opt$ ./exploit
<br>task_struct = ffff88003a0db800
<br>uidptr = ffff8800374b76c4
<br>spawning root shell
<br>root@ubuntu:/opt# id
<br>uid=0(root) gid=0(root) groups=0(root),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd),115(lpadmin),116(sambashare),1000(bearcat)
<br>root@ubuntu:/opt#
حاليًا لا توجد خطة تصحيح واضحة، لكن يُنصح المستخدمون بتعديل معاملات kernel لتقييد المستخدمين العاديين من استخدام استدعاء النظام bpf(2) للتخفيف:
تعيين المعامل "kernel.unprivileged_bpf_disabled = 1" عن طريق تقييد الوصول لاستدعاء bpf(2) لمنع تصعيد الامتيازات هذا
root@Ubuntu# echo 1 > /proc/sys/kernel/unprivileged_bpf_disabled
ترقية إصدار Linux Kernel، يتطلب إعادة تشغيل الخادم ليسري التأثير:
هذه الخطوة تم وصفها بالفعل أثناء إعداد البيئة، يحتاج المستخدم فقط لتعديل إصدار kernel!
تصحيح الكود المصدري https://github.com/torvalds/linux/commit/95a762e2c8c942780948091f8f2a4f32fce1ac6f