لقد قمنا بتغطية وشرح CVE-2023-4911 Looney Tunables الذي يؤثر في الغالب على جميع توزيعات Linux ويسمح للمهاجم بتصعيد الامتيازات إلى الجذر. تؤثر الثغرة الأمنية على المُحمل الديناميكي لمكتبة GNU C، والمعروف باسم ld.so أثناء معالجة متغير البيئة GLIBC_TUNABLES. قد تسمح هذه المشكلة لمهاجم محلي باستخدام متغيرات بيئة GLIBC_TUNABLES المصممة بشكل ضار عند تشغيل الثنائيات بإذن SUID لتنفيذ التعليمات البرمجية بامتيازات مرتفعة. لقد استخدمنا إعدادًا معمليًا خصيصًا لتجربة هذا الاستغلال باستخدام حاولHackMe.

LD.SO: الرابط/المحمل الديناميكي

احصل على ملاحظات OSCP

عندما تقوم بتنفيذ ملف ELF يعتمد على المكتبات المشتركة (.لذا الملفات)، سيحتاج نظام التشغيل إلى تحميل هذه المكتبات وربطها بالملف القابل للتنفيذ بحيث تكون أي وظائف مشتركة متاحة لبرنامجك أثناء تنفيذه. في لينكس الأنظمة، تتم إدارة هذا عادةً بواسطة ld.so، ملف قابل للتنفيذ معبأ مسبقًا كجزء من glibc مكتبة.

يحتوي كل ملف ELF قابل للتنفيذ على قسم مسمى .interp، حيث يتم تحديد موقع المُحمل المطلوب حتى يعرف نظام التشغيل المُحمل المحدد الذي يجب استخدامه.

CVE-2023-4911 استغلال الثغرات الأمنية

سوف نتعمق أكثر في مرحلة الاستغلال باستخدام ما يلي إثبات المفهوم.

  1. إعداد متغيرات البيئة

    يقوم هذا الاستغلال بإنشاء مصفوفات مختلفة (السطر 41)، والتي سيتم استخدامها لاحقًا لتخزين ملف GLIBC_TUNABLES متغيرات البيئة وتشغيل تجاوز سعة المخزن المؤقت في glibc عند تنفيذ البرنامج.
  2. صياغة متغيرات البيئةحشو: تم إنشاء هذا المتغير لإزالة قسم القراءة والكتابة الخاص بالمحمل. إنها مليئة بتسلسل طويل من الأحرف "F" ("F"). (السطور 17-23)
    كيلو فولت: هذا المتغير هو الحمولة التي ستؤدي إلى تجاوز سعة المخزن المؤقت. إنها مليئة بتسلسل طويل من الأحرف "A" ("A"). (السطور 27-33)
    حشو2: على غرار الحشو، يتم استخدام هذا المتغير لإزالة أي أجزاء إضافية. كما أنها مليئة بسلسلة من الأحرف "F". (السطور 37-43)
    dt_rpath: يستخدم هذا المتغير لصياغة قيمة محددة -0x14ULL للكتابة فوق مناطق الذاكرة في عملية الاستغلال. (السطور 47-53) سيتم نسخ كل هذه المتغيرات إلى الملف com.envp المصفوفة التي تحتوي على متغيرات البيئة.
  3. التسلح

    الحمولة في GLIBC_TUNABLES يقوم بما يلي لـ ld.so: يقوم بالكتابة فوق جزء من المكدس بفهرس يشير إلى سلسلة بها " كما محتواه. القصد هنا هو معالجة المكدس بحيث يشير الفهرس إلى عنوان ذاكرة محدد حيث يتم تخزين الحرف "(علامة اقتباس مزدوجة). المكدس عبارة عن منطقة من الذاكرة تُستخدم لتخزين المتغيرات المحلية ومعلومات استدعاء الوظائف أثناء تنفيذ البرنامج. ولزيادة تعقيد الاستغلال، تعمل أنظمة التشغيل الحديثة على تحديد موقع المكدس بشكل عشوائي، مما يجعل من الصعب التنبؤ بالمكان الذي سينتهي فيه الفهرس في الذاكرة.
  4. استغلال:
    يستخدم هذا الاستغلال أسلوب التجربة والخطأ لمراعاة عشوائية موقع المكدس. يقوم بتشغيل البرنامج بشكل متكرر (تفرعه وتنفيذه) حتى يحصل على العنوان الثابت 0x7ffdfffff030 يطابق العنوان حيث يشير فهرس المكدس إلى ". يعالج هذا بشكل فعال مسار بحث المكتبة للإشارة إلى الدليل المسمى " والتي سوف تحتوي على نسخة ضارة من lib6.so.
    عملية توليد المزورة libc6.so يتكون من نسخ libc6.so ولكن استبدال __libc_start_main تعمل برمز قشرة مخصص يقوم بذلك setuid(0) + setgid(0) + exec('/bin/sh'). يمكنك العثور على برنامج Python النصي لهذا الغرض هنا.
    يدخل البرنامج في حلقة حيث يقوم بتفرع عملية فرعية: في العملية الفرعية، يحاول التنفيذ /usr/bin/su مع --يساعد. إذا استغرقت العملية الفرعية وقتًا أطول من ثانية واحدة، فإنها تفترض أنها عائدة من الصدفة، مما يشير إلى احتمال استغلال ناجح.

CVE-2023-4911 التخفيف

إذا لم تتمكن من التصحيح، اتبع التعليمات هذا الرابط للتخفيف

CVE-2023-4911 المعالجة

إن تصحيح نظامك هو الطريقة الأفضل والوحيدة لإصلاحه.

إجابات الغرفة

ما هي قيمة العلم في /الجذر/root.txt?

تجول الفيديو

عن المؤلف

أقوم بإنشاء ملاحظات حول الأمن السيبراني وملاحظات التسويق الرقمي والدورات التدريبية عبر الإنترنت. أقدم أيضًا استشارات التسويق الرقمي بما في ذلك، على سبيل المثال لا الحصر، تحسين محركات البحث وإعلانات Google وMeta وإدارة CRM.

عرض المقالات