اطلاعاتی در مورد 8 آسیب پذیری در بوت لودر GRUB2 فاش شده است که به شما امکان می دهد مکانیسم بوت امن UEFI را دور بزنید و کد تایید نشده را اجرا کنید، به عنوان مثال، بدافزاری را که در سطح بوت لودر یا هسته اجرا می شود، پیاده سازی کنید.
به یاد بیاوریم که در اکثر توزیعهای لینوکس، برای بوت تایید شده در حالت بوت امن UEFI، از یک لایه شیم کوچک استفاده میشود که به صورت دیجیتالی توسط مایکروسافت امضا شده است. این لایه GRUB2 را با گواهینامه خود تأیید می کند، که به توسعه دهندگان توزیع اجازه می دهد تا هر هسته و به روز رسانی GRUB را تأیید شده توسط مایکروسافت نداشته باشند. آسیبپذیریها در GRUB2 به شما این امکان را میدهند که پس از تأیید موفقیتآمیز شیم، به اجرای کد خود در مرحله دست یابید، اما قبل از بارگذاری سیستمعامل، زمانی که حالت Secure Boot فعال است، به زنجیره اعتماد متصل شوید و کنترل کامل بر فرآیند بوت بعدی، از جمله بارگذاری سیستم عامل دیگر، اصلاح سیستم اجزای سیستم عامل و دور زدن حفاظت از قفل.
همانند آسیبپذیری BootHole در سال گذشته، بهروزرسانی بوتلودر برای جلوگیری از این مشکل کافی نیست، زیرا مهاجم، صرفنظر از سیستمعامل مورد استفاده، میتواند از رسانه قابل بوت با نسخه قدیمی، دارای امضای دیجیتال و آسیبپذیر GRUB2 برای به خطر انداختن UEFI Secure Boot استفاده کند. مشکل فقط با به روز رسانی لیست ابطال گواهی (dbx، UEFI Revocation List) قابل حل است، اما در این صورت امکان استفاده از رسانه نصب قدیمی با لینوکس از بین خواهد رفت.
در سیستمهای دارای سیستمافزاری که فهرست لغو گواهی بهروزرسانی شدهای دارند، فقط نسخههای بهروزشده توزیعهای لینوکس را میتوان در حالت راهاندازی امن UEFI بارگیری کرد. توزیعها باید نصبکنندهها، بوتلودرها، بستههای هسته، میانافزار fwupd و لایه shim را بهروزرسانی کنند و امضاهای دیجیتالی جدیدی برای آنها تولید کنند. کاربران باید تصاویر نصب و سایر رسانه های قابل بوت را به روز کنند، و همچنین لیست لغو گواهی (dbx) را در سیستم عامل UEFI بارگذاری کنند. قبل از بهروزرسانی dbx به UEFI، سیستم بدون توجه به نصب بهروزرسانیها در سیستمعامل آسیبپذیر باقی میماند. وضعیت آسیب پذیری ها را می توان در این صفحات ارزیابی کرد: Ubuntu، SUSE، RHEL، Debian.
برای حل مشکلاتی که هنگام توزیع گواهیهای باطل شده به وجود میآیند، در آینده برنامهریزی شده است که از مکانیسم SBAT (UEFI Secure Boot Advanced Targeting) استفاده شود که پشتیبانی از آن برای GRUB2، shim و fwupd اجرا شده است و از بهروزرسانیهای بعدی شروع میشود. به جای عملکرد ارائه شده توسط بسته dbxtool استفاده می شود. SBAT به طور مشترک با مایکروسافت توسعه یافته است و شامل اضافه کردن ابرداده جدید به فایل های اجرایی اجزای UEFI است که شامل اطلاعات سازنده، محصول، مؤلفه و نسخه است. ابرداده مشخص شده با امضای دیجیتال تأیید شده است و میتواند علاوه بر این در فهرست اجزای مجاز یا ممنوع برای UEFI Secure Boot گنجانده شود. بنابراین، SBAT به شما این امکان را می دهد که در طول لغو، بدون نیاز به ایجاد مجدد کلیدها برای Secure Boot و بدون ایجاد امضاهای جدید برای هسته، shim، grub2 و fwupd، شماره نسخه های مؤلفه را دستکاری کنید.
آسیب پذیری های شناسایی شده:
- CVE-2020-14372 – با استفاده از دستور acpi در GRUB2، یک کاربر ممتاز در سیستم محلی می تواند جداول ACPI اصلاح شده را با قرار دادن یک SSDT (جدول توضیحات سیستم ثانویه) در فهرست /boot/efi و تغییر تنظیمات در grub.cfg بارگیری کند. اگرچه حالت Secure Boot فعال است، SSDT پیشنهادی توسط هسته اجرا میشود و میتواند برای غیرفعال کردن حفاظت LockDown که مسیرهای دور زدن راهاندازی امن UEFI را مسدود میکند، استفاده شود. در نتیجه، مهاجم میتواند به بارگذاری ماژول هسته خود یا کد در حال اجرا از طریق مکانیسم kexec، بدون بررسی امضای دیجیتال، دست یابد.
- CVE-2020-25632 یک دسترسی پس از استفاده به حافظه آزاد در اجرای دستور rmmod است که زمانی اتفاق می افتد که تلاش برای تخلیه هر ماژول بدون در نظر گرفتن وابستگی های مرتبط با آن انجام شود. این آسیبپذیری ایجاد یک اکسپلویت را که میتواند منجر به اجرای کد با دور زدن تأیید بوت امن شود را رد نمیکند.
- CVE-2020-25647 یک نوشتن خارج از محدوده در تابع grub_usb_device_initialize() که هنگام راه اندازی دستگاه های USB فراخوانی می شود. این مشکل را می توان با اتصال یک دستگاه USB آماده شده ویژه که پارامترهایی را تولید می کند که اندازه آنها با اندازه بافر اختصاص داده شده برای ساختارهای USB مطابقت ندارد، مورد سوء استفاده قرار گیرد. مهاجم میتواند با دستکاری دستگاههای USB به اجرای کدی دست یابد که در Secure Boot تأیید نشده است.
- 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