
مستودع يحتوي على إثبات المفهوم (PoC) الذي يوضح تأثير CVE-2023-4911، وهي ثغرة أمنية في المحمل الديناميكي ld.so الخاص بـ glibc، مما يكشف عن مخاطر متعلقة بـ Looney Tunables.
تعد مكتبة GNU C (glibc) مكتبة C في نظام GNU وتشكل جزءًا لا يتجزأ من الأنظمة المبنية على لينكس. في جوهرها، تحدد glibc الوظائف الأساسية للبرامج، بما في ذلك استدعاءات النظام والوظائف الشائعة مثل open وmalloc وprintf وexit. يلعب المحمّل الديناميكي، وهو مكوّن حيوي في glibc، دورًا رئيسيًا في تجهيز البرامج وتنفيذها من خلال إدارة المكتبات المشتركة وربطها في وقت التشغيل.
تم تقديم متغير البيئة GLIBC_TUNABLES لتمكين المستخدمين دون الحاجة إلى إعادة الترجمة، حيث يتيح للمستخدمين تعديل سلوك glibc في وقت التشغيل. وهو يوفر وسيلة لضبط معايير الأداء والسلوك، مما يؤثر على بدء تشغيل التطبيقات.
تشكّل ثغرة تجاوز سعة المخزن المؤقت (buffer overflow) في معالجة المحمّل الديناميكي لمتغير GLIBC_TUNABLES خطرًا أمنيًا بالغ الخطورة. يمنح استغلالها المهاجمين المحليين صلاحيات مرتفعة، مما قد يؤدي إلى وصول كامل بصلاحيات الجذر (root). ويؤكد نجاح الاستغلال على التوزيعات الرئيسية مثل Fedora وUbuntu وDebian مدى الخطورة وحجم التأثير الواسع.
يمكن أن يؤثر إساءة استخدام هذه الثغرة أو استغلالها على أداء النظام وموثوقيته وأمانه. وعلى الرغم من حجب تفاصيل الاستغلال، فإن الخطر وشيك، إذ يمكن أن تتحول تجاوزات المخزن المؤقت بسرعة إلى هجمات تعتمد على البيانات فقط. قد تكون توزيعات لينكس الشائعة التي تستخدم glibc عرضة للخطر، مما يؤكد الحاجة إلى الوعي الفوري والتخفيف من المخاطر.
أُسندت: 3 أكتوبر 2023
النوع: تصعيد الصلاحيات محليًا
الإصدارات المتأثرة: glibc 2.34 والإصدارات الأحدث
التوزيعات: RHEL وUbuntu وFedora وDebian وAmazon Linux وGentoo وغيرها من التوزيعات التي تستخدم glibc التخفيف
التحديث: قم بتطبيق تحديثات glibc على الفور.
المراقبة: ابقَ على اطلاع بالنشرات الأمنية.
المراجعة: قيّم استخدام GLIBC_TUNABLES في التطبيقات.
التدقيق: افحص سجلات النظام بحثًا عن أي نشاط مشبوه.
Ubuntu 22.04 Ubuntu GLIBC 2.35-0ubuntu3.1 su من util-linux 2.37.2 ASLR ON
تم استخدام ملف Ubuntu (الإصدار 22.04.1) ISO لإنشاء الجهاز الافتراضي
بعد التثبيت الناجح، لا نحتاج إلى تحديث أي شيء، لكننا سنقوم بتثبيت git وحزمة GNU Binutils لأنها غير موجودة في النظام، وعند ترجمة سكربت الاستغلال بلغة بايثون ستواجه خطأً.
باستخدام هذه الأوامر:
$ sudo apt install git
$ sudo apt install binutils
تحقق مما إذا كان النظام عرضةً للثغرة
$ env -i "GLIBC_TUNABLES=glibc.malloc.mxfast=glibc.malloc.mxfast=A" "Z=`printf '%08192x' 1`" /usr/bin/su --help
إذا أخرجت
Segmentation fault (core dumped)فإن النظام عرضةٌ للثغرة.
تحقق من إصدار الرابط/المحمّل الديناميكي، المرتبط غالبًا بمكتبة GNU C (glibc)
$ ldd --version
سيعطي الإخراج إصدار GLIBC
ldd (Ubuntu GLIBC 2.35-0ubuntu3.6) 2.35
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
الآن بعد أن علمنا أن جهازنا عرضةٌ للثغرة وجاهز لتصعيد صلاحيات الجذر
ملاحظة: يجب ألا نقوم بتثبيت gcc على الجهاز؛ لأنه إذا قمنا بتثبيته سيفقد الجهاز هذه الثغرة، وبالتالي لن يعمل السكربت.
نظرًا لعدم تثبيت gcc لدينا، نحتاج إلى ترجمة برنامج C على الجهاز المضيف ثم استيراده إلى الجهاز الضيف.
يمكننا ترجمة برنامج C باستخدام هذا الأمر
$ gcc exploit.c -o (outputname)
بعد استيراد ملف الإخراج لبرنامج C، قم أيضًا باستيراد سكربت بايثون (genlib.py).
الآن قم بتشغيل سكربت بايثون
$ python3 genlib.py
بعد التجميع، يتم إنشاء مجلد باسم '"'.
سنقوم بذلك في مجلد /tmp حتى يتمكن المستخدم من تنفيذ السكربت والبرنامج
الآن وأخيرًا، سنقوم بتنفيذ البرنامج لتصعيد صلاحيات الجذر
$ ./(nameoftheprogram)
سيستغرق الأمر بعض الوقت وستحصل على صلاحيات الجذر (root shell).
نُأمّن لنُمكّن، لا لنستغل!
المراجع: