۷ آسیبپذیری در بوتلودر GRUB2 برطرف شده است که به شما امکان میدهد مکانیسم راهاندازی امن UEFI را دور بزنید و کد تأیید نشده را اجرا کنید، برای مثال، بدافزاری را که در سطح بوتلودر یا هسته اجرا میشود، پیادهسازی کنید. علاوه بر این، یک آسیبپذیری در لایه شیم وجود دارد که به شما امکان میدهد از UEFI Secure Boot عبور کنید. این گروه از آسیبپذیریها با کد Boothole 7 مشابه مشکلات مشابهی که قبلاً در بوت لودر شناسایی شده بودند، شناخته میشد.
برای عیب یابی مشکلات در GRUB2 و shim، توزیع ها می توانند از مکانیسم SBAT (UEFI Secure Boot Advanced Targeting) استفاده کنند که برای GRUB2، shim و fwupd پشتیبانی می شود. SBAT به طور مشترک با مایکروسافت توسعه یافته است و شامل اضافه کردن ابرداده اضافی به فایل های اجرایی اجزای UEFI است که شامل اطلاعات سازنده، محصول، مؤلفه و نسخه است. ابرداده مشخص شده با امضای دیجیتال تایید شده است و می تواند به طور جداگانه در لیست اجزای مجاز یا ممنوع برای UEFI Secure Boot گنجانده شود.
اکثر توزیعهای لینوکس از یک لایه شیم کوچک که به صورت دیجیتالی توسط مایکروسافت امضا شده است برای بوت تأیید شده در حالت بوت امن UEFI استفاده میکنند. این لایه GRUB2 را با گواهینامه خود تأیید می کند، که به توسعه دهندگان توزیع اجازه می دهد تا هر هسته و به روز رسانی GRUB را تأیید شده توسط مایکروسافت نداشته باشند. آسیبپذیریها در GRUB2 به شما این امکان را میدهند که پس از تأیید موفقیتآمیز شیم، به اجرای کد خود در مرحله دست یابید، اما قبل از بارگذاری سیستمعامل، زمانی که حالت Secure Boot فعال است، به زنجیره اعتماد متصل شوید و کنترل کامل بر فرآیند بوت بعدی، از جمله بارگذاری سیستم عامل دیگر، اصلاح سیستم اجزای سیستم عامل و دور زدن حفاظت از قفل.
برای رفع مشکلات بوت لودر، توزیع ها باید امضاهای دیجیتال داخلی جدید و نصب کننده های به روز رسانی، بوت لودرها، بسته های هسته، سیستم عامل fwupd و لایه شیم ایجاد کنند. قبل از معرفی SBAT، به روز رسانی لیست ابطال گواهی (dbx، فهرست لغو UEFI) پیش نیازی برای مسدود کردن کامل آسیب پذیری بود، زیرا یک مهاجم، صرف نظر از سیستم عامل مورد استفاده، می توانست از رسانه قابل بوت با نسخه آسیب پذیر قدیمی GRUB2 استفاده کند. دارای گواهی امضای دیجیتال، برای به خطر انداختن بوت امن UEFI.
به جای ابطال امضا، SBAT به شما اجازه می دهد تا استفاده از آن را برای شماره نسخه های جداگانه بدون نیاز به لغو کلیدهای Secure Boot مسدود کنید. مسدود کردن آسیبپذیریها از طریق SBAT نیازی به استفاده از فهرست لغو گواهی UEFI (dbx) ندارد، بلکه در سطح جایگزینی کلید داخلی برای تولید امضا و بهروزرسانی GRUB2، شیم و سایر مصنوعات بوت ارائه شده توسط توزیعها انجام میشود. در حال حاضر، پشتیبانی SBAT قبلاً به اکثر توزیع های محبوب لینوکس اضافه شده است.
آسیب پذیری های شناسایی شده:
- CVE-2021-3696، CVE-2021-3695 سرریزهای بافر مبتنی بر پشته هنگام پردازش تصاویر PNG ویژه طراحی شده هستند، که از نظر تئوری می توانند برای اجرای کد مهاجم و دور زدن UEFI Secure Boot استفاده شوند. اشاره شده است که بهره برداری از این مشکل دشوار است، زیرا ایجاد یک اکسپلویت کاری مستلزم در نظر گرفتن تعداد زیادی از عوامل و در دسترس بودن اطلاعات در مورد چیدمان حافظه است.
- 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 حذف شده. هنگام تجزیه درخواستهای HTTP ساختهشده خاص، یک مشکل میتواند باعث خرابی ابرداده GRUB2 (نوشتن یک بایت تهی درست پس از پایان بافر) شود.
- CVE-2022-28735 یک مشکل در تأییدکننده shim_lock اجازه بارگذاری فایل غیر هسته را می دهد. این آسیبپذیری را میتوان برای بارگذاری ماژولهای هسته بدون علامت یا کد تأیید نشده در حالت راهاندازی امن UEFI استفاده کرد.
- CVE-2022-28736 یک دسترسی به حافظه آزاد شده در تابع grub_cmd_chainloader() از طریق اجرای مجدد فرمان chainloader که برای بوت کردن سیستم عامل هایی که توسط GRUB2 پشتیبانی نمی شوند استفاده می شود. اگر مهاجم قادر به تعیین تخصیص حافظه در GRUB2 باشد، بهره برداری می تواند منجر به اجرای کد مهاجم شود.
- CVE-2022-28737 - یک سرریز بافر در لایه shim در تابع handle_image() هنگام بارگذاری و اجرای تصاویر EFI دستکاری شده رخ می دهد.
منبع: opennet.ru