الثغرات الأمنية التي يصعب إصلاحها في GRUB2 والتي تسمح لك بتجاوز التمهيد الآمن لـ UEFI

تم الكشف عن معلومات حول 8 ثغرات أمنية في أداة تحميل التشغيل GRUB2، والتي تتيح لك تجاوز آلية التمهيد الآمن UEFI وتشغيل تعليمات برمجية لم يتم التحقق منها، على سبيل المثال، تنفيذ برامج ضارة تعمل على مستوى أداة تحميل التشغيل أو مستوى النواة.

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

كما هو الحال مع ثغرة BootHole في العام الماضي، فإن تحديث أداة تحميل التشغيل لا يكفي لمنع المشكلة، حيث يمكن للمهاجم، بغض النظر عن نظام التشغيل المستخدم، استخدام الوسائط القابلة للتمهيد مع إصدار قديم وموقّع رقميًا وهش من GRUB2 لاختراق UEFI Secure Boot. لا يمكن حل المشكلة إلا عن طريق تحديث قائمة إبطال الشهادات (dbx، قائمة إبطال UEFI)، ولكن في هذه الحالة سيتم فقدان القدرة على استخدام وسائط التثبيت القديمة مع Linux.

في الأنظمة التي تحتوي على برامج ثابتة تحتوي على قائمة إبطال شهادات محدثة، يمكن فقط تحميل الإصدارات المحدثة من توزيعات Linux في وضع التمهيد الآمن لـ UEFI. ستحتاج التوزيعات إلى تحديث أدوات التثبيت، ومحملات التشغيل، وحزم kernel، والبرامج الثابتة fwupd وطبقة الرقائق، وإنشاء توقيعات رقمية جديدة لها. سيُطلب من المستخدمين تحديث صور التثبيت والوسائط الأخرى القابلة للتمهيد، بالإضافة إلى تحميل قائمة إبطال الشهادات (dbx) في برنامج UEFI الثابت. قبل تحديث dbx إلى UEFI، يظل النظام عرضة للخطر بغض النظر عن تثبيت التحديثات في نظام التشغيل. يمكن تقييم حالة الثغرات الأمنية على هذه الصفحات: Ubuntu، وSUSE، وRHEL، وDebian.

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

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

  • CVE-2020-14372 – باستخدام أمر acpi في GRUB2، يمكن للمستخدم المميز على النظام المحلي تحميل جداول ACPI المعدلة عن طريق وضع SSDT (جدول وصف النظام الثانوي) في الدليل /boot/efi وتغيير الإعدادات في grub.cfg. على الرغم من أن وضع التمهيد الآمن نشط، سيتم تنفيذ SSDT المقترح بواسطة kernel ويمكن استخدامه لتعطيل حماية LockDown التي تحظر مسارات تجاوز التمهيد الآمن لـ UEFI. ونتيجة لذلك، يمكن للمهاجم تحميل وحدة النواة الخاصة به أو تشغيل التعليمات البرمجية من خلال آلية kexec، دون التحقق من التوقيع الرقمي.
  • CVE-2020-25632 هو وصول للذاكرة بعد الاستخدام الحر في تنفيذ أمر rmmod، والذي يحدث عند محاولة إلغاء تحميل أي وحدة نمطية دون مراعاة التبعيات المرتبطة بها. لا تستبعد الثغرة الأمنية إنشاء استغلال يمكن أن يؤدي إلى تنفيذ التعليمات البرمجية لتجاوز التحقق من التمهيد الآمن.
  • CVE-2020-25647 كتابة خارج الحدود في وظيفة grub_usb_device_initialize() التي يتم استدعاؤها عند تهيئة أجهزة USB. يمكن استغلال المشكلة عن طريق توصيل جهاز USB معد خصيصًا ينتج معلمات لا يتوافق حجمها مع حجم المخزن المؤقت المخصص لهياكل USB. يمكن للمهاجم تنفيذ تعليمات برمجية لم يتم التحقق منها في Secure Boot من خلال التعامل مع أجهزة USB.
  • CVE-2020-27749 هو تجاوز سعة المخزن المؤقت في وظيفة grub_parser_split_cmdline()، والذي يمكن أن يحدث بسبب تحديد متغيرات أكبر من 2 كيلو بايت في سطر أوامر GRUB1. تسمح الثغرة الأمنية بتنفيذ تعليمات برمجية لتجاوز Secure Boot.
  • CVE-2020-27779 – يسمح الأمرcutmem للمهاجم بإزالة نطاق من العناوين من الذاكرة لتجاوز Secure Boot.
  • CVE-2021-3418 - أدت التغييرات التي تم إجراؤها على shim_lock إلى إنشاء ناقل إضافي لاستغلال الثغرة الأمنية CVE-2020-15705 العام الماضي. من خلال تثبيت الشهادة المستخدمة لتوقيع GRUB2 في dbx، سمح GRUB2 بتحميل أي نواة مباشرة دون التحقق من التوقيع.
  • CVE-2021-20225 - إمكانية كتابة بيانات خارج الحدود عند تشغيل الأوامر بعدد كبير جدًا من الخيارات.
  • CVE-2021-20233 - إمكانية كتابة البيانات خارج الحدود بسبب حساب حجم المخزن المؤقت غير الصحيح عند استخدام علامات الاقتباس. عند حساب الحجم، كان من المفترض أن هناك حاجة إلى ثلاثة أحرف للهروب من علامة اقتباس واحدة، في حين أن الأمر يتطلب أربعة أحرف في الواقع.

المصدر: opennet.ru

إضافة تعليق