ثغرات أمنية في GRUB2 يمكنها تجاوز التمهيد الآمن لـ UEFI

تم إصلاح 2 ثغرات أمنية في أداة تحميل التشغيل GRUB7 والتي تسمح لك بتجاوز آلية التمهيد الآمن UEFI وتشغيل تعليمات برمجية لم يتم التحقق منها، على سبيل المثال، إدخال برامج ضارة تعمل على مستوى أداة تحميل التشغيل أو النواة. بالإضافة إلى ذلك، هناك ثغرة أمنية واحدة في طبقة الرقائق، والتي تسمح لك أيضًا بتجاوز التمهيد الآمن لـ UEFI. تم تسمية مجموعة الثغرات الأمنية باسم Boothole 3، على غرار المشكلات المماثلة التي تم تحديدها مسبقًا في أداة تحميل التشغيل.

لاستكشاف المشكلات وإصلاحها في GRUB2 وshim، ستكون التوزيعات قادرة على استخدام آلية SBAT (UEFI Secure Boot Advanced Targeting)، المدعومة لـ GRUB2 وshim وfwupd. تم تطوير SBAT بالاشتراك مع Microsoft ويتضمن إضافة بيانات تعريف إضافية إلى الملفات القابلة للتنفيذ لمكونات UEFI، والتي تتضمن معلومات حول الشركة المصنعة والمنتج والمكون والإصدار. تم اعتماد بيانات التعريف المحددة بتوقيع رقمي ويمكن تضمينها بشكل منفصل في قوائم المكونات المسموح بها أو المحظورة لـ UEFI Secure Boot.

تستخدم معظم توزيعات Linux طبقة رقيقة صغيرة موقعة رقميًا بواسطة Microsoft للتحقق من التشغيل في وضع التمهيد الآمن لـ UEFI. تتحقق هذه الطبقة من GRUB2 بشهادتها الخاصة، مما يسمح لمطوري التوزيع بعدم اعتماد كل تحديث kernel وGRUB من قبل Microsoft. تسمح لك الثغرات الأمنية في GRUB2 بتنفيذ التعليمات البرمجية الخاصة بك في المرحلة بعد التحقق من الرقائق بنجاح، ولكن قبل تحميل نظام التشغيل، والدخول في سلسلة الثقة عندما يكون وضع التمهيد الآمن نشطًا والحصول على التحكم الكامل في عملية التمهيد الإضافية، بما في ذلك تحميل نظام تشغيل آخر وتعديل نظام مكونات نظام التشغيل وتجاوز الحماية Lockdown.

لإصلاح المشكلات في أداة تحميل التشغيل، سيتعين على التوزيعات إنشاء توقيعات رقمية داخلية جديدة وتحديث أدوات التثبيت وأدوات تحميل التشغيل وحزم kernel والبرامج الثابتة fwupd وطبقة الرقائق. قبل تقديم SBAT، كان تحديث قائمة إبطال الشهادات (dbx، قائمة إبطال UEFI) شرطًا أساسيًا لحظر الثغرة الأمنية بشكل كامل، نظرًا لأن المهاجم، بغض النظر عن نظام التشغيل المستخدم، يمكنه استخدام الوسائط القابلة للتمهيد مع إصدار قديم ضعيف من GRUB2، معتمدة بتوقيع رقمي، للتنازل عن التمهيد الآمن لـ UEFI.

بدلاً من إلغاء التوقيع، يسمح لك SBAT بحظر استخدامه لأرقام إصدارات المكونات الفردية دون الحاجة إلى إلغاء مفاتيح التمهيد الآمن. لا يتطلب حظر الثغرات الأمنية عبر SBAT استخدام قائمة إبطال شهادات UEFI (dbx)، ولكن يتم إجراؤه على مستوى استبدال المفتاح الداخلي لإنشاء التوقيعات وتحديث GRUB2 وshim وعناصر التمهيد الأخرى التي توفرها التوزيعات. حاليًا، تمت إضافة دعم SBAT بالفعل إلى توزيعات Linux الأكثر شيوعًا.

نقاط الضعف التي تم تحديدها:

  • CVE-2021-3696 وCVE-2021-3695 عبارة عن تجاوزات في المخزن المؤقت قائمة على الكومة عند معالجة صور PNG المصممة خصيصًا، والتي يمكن استخدامها نظريًا لتنفيذ تعليمات برمجية للمهاجم وتجاوز التمهيد الآمن لـ UEFI. تجدر الإشارة إلى صعوبة استغلال المشكلة، نظرًا لأن إنشاء برمجية إكسبلويت للعمل يتطلب مراعاة عدد كبير من العوامل وتوافر المعلومات حول تخطيط الذاكرة.
  • CVE-2021-3697 - تدفق ناقص للمخزن المؤقت في كود معالجة الصور JPEG. يتطلب استغلال المشكلة معرفة تخطيط الذاكرة ويكون على نفس مستوى التعقيد تقريبًا مثل مشكلة PNG (CVSS 7.5).
  • CVE-2022-28733 - يسمح تجاوز عدد صحيح في وظيفة grub_net_recv_ip4_packets() للمعلمة rsm->total_len بالتأثر عن طريق إرسال حزمة IP مُصممة خصيصًا. تم تصنيف المشكلة على أنها أخطر الثغرات الأمنية المعروضة (CVSS 8.1). إذا تم استغلال الثغرة الأمنية بنجاح، فإنها تسمح بكتابة البيانات خارج حدود المخزن المؤقت عن طريق تخصيص حجم ذاكرة أصغر بشكل متعمد.
  • CVE-2022-28734 - تجاوز سعة المخزن المؤقت أحادي البايت عند معالجة رؤوس HTTP التي تم تجريدها. يمكن أن تتسبب إحدى المشكلات في تلف بيانات تعريف GRUB2 (كتابة بايت فارغ بعد نهاية المخزن المؤقت مباشرة) عند تحليل طلبات HTTP المعدة خصيصًا.
  • CVE-2022-28735 هناك مشكلة في أداة التحقق shim_lock تسمح بتحميل ملف غير kernel. يمكن استخدام الثغرة الأمنية لتحميل وحدات kernel غير الموقعة أو التعليمات البرمجية التي لم يتم التحقق منها في وضع التمهيد الآمن لـ UEFI.
  • CVE-2022-28736 وصول للذاكرة تم تحريره بالفعل في وظيفة grub_cmd_chainloader() عبر إعادة تشغيل أمر chainloader، المستخدم لتشغيل أنظمة التشغيل غير المدعومة بواسطة GRUB2. قد يؤدي الاستغلال إلى تنفيذ تعليمات برمجية للمهاجم إذا كان المهاجم قادرًا على تحديد تخصيص الذاكرة في GRUB2
  • CVE-2022-28737 - يحدث تجاوز سعة المخزن المؤقت في طبقة الرقائق في وظيفة Handle_image() عند تحميل صور EFI المعدة وتنفيذها.

المصدر: opennet.ru

إضافة تعليق