تعمل مكتبة GNU C (GLIBC) كمكتبة C في نظام GNU وهي جزء لا يتجزأ من الأنظمة المستندة إلى Linux. في جوهرها ، تحدد GLIBC الوظائف الأساسية للبرامج ، بما في ذلك مكالمات النظام والوظائف الشائعة مثل Open و Malloc و PrintF والخروج. يلعب المحمل الديناميكي ، وهو مكون حيوي لـ GLIBC ، دورًا رئيسيًا في إعداد وتنفيذ البرامج من خلال إدارة المكتبات المشتركة وربطها في وقت التشغيل.
تم تقديمه لتمكين المستخدمين دون إعادة التجميع ، يتيح متغير بيئة GLIBC_Tunables للمستخدمين تعديل سلوك GLIBC في وقت التشغيل. يوفر وسيلة لضبط معلمات الأداء والسلوك ، مما يؤثر على بدء تشغيل التطبيق.
إن تعرض الفائض المخزن المؤقت في معالجة اللودر الديناميكي لـ GLIBC_TUNABLES تشكل خطرًا على أمان حاسمة. يمنح الاستغلال المهاجمين المحليين امتيازات مرتفعة ، مما يؤدي إلى الوصول الكامل للوصول إلى الجذر. الاستغلال الناجح على التوزيعات الرئيسية مثل Fedora و Ubuntu و Debian يؤكد على شدة وتأثير واسع النطاق.
سوء الاستخدام أو استغلال هذه الضعف يمكن أن يؤثر على أداء النظام والموثوقية والأمن. على الرغم من حجب تفاصيل الاستغلال ، فإن الخطر وشيك ، حيث يمكن أن تتحول الفائض العازلة بسرعة إلى هجمات البيانات فقط. قد تكون توزيعات Linux الشائعة باستخدام 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 لأنه لم يتم العثور عليه في النظام ، وعندما تقوم بتجميع البرنامج النصي Python المستغل ، ستواجه الخطأ.
باستخدام هذه الأوامر:
$ 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 أيضًا ، استيراد البرنامج النصي Python (GenLib.py).
الآن تجميع Python Script
$ python3 genlib.py
بعد تجميع مجلد "" يتم إنشاء.
سنفعل ذلك في مجلد /TMP حتى يتمكن المستخدم من تنفيذ البرنامج النصي والبرنامج
الآن أخيرًا ، سنقوم بتنفيذ البرنامج لمصاعد امتاليات الجذر
$ ./(nameoftheprogram)
سيستغرق الأمر بعض الوقت وسيحصل على قذيفة الجذر.
آمنة لتمكين ، وليس استغلال!
مراجع: