آسیبپذیری با شناسه CVE-2020-10713 تحت عنوان BootHole در بوتلودر GRUB2 به مهاجمان امکان بهرهبرداری موفق از این آسیبپذیری با دور زدن Secure Boot و سطح دسترسی بالا به صورت مخفیانه و ماندگار در سیستمهای هدف را می دهد. قابلیت Secure Boot یک ویژگی امنیتی از Unified Extensible Firmware Interface (UEFI) است که از یک بوتلودر برای بارگیری اجزای حساس، وسایل جانبی و سیستمعامل استفاده میکند.
جزییات فنی
آسیبپذیری مذکور دارای شدت 8.0 از 10 بوده و در واقع یک آسیب پذیری سرریزبافر است که در GRUB2 ، هنگام تجزیه ی فایل grub.cfg رخ میدهد و تمام نسخه های GRUB2 تحت تأثیر این آسیب پذیری قرار دارند.
این فایل پیکربندی، یک فایل خارجی بوده و در پارتیشن سیستمی EFI قرار دارد، بنابراین میتواند توسط مهاجم دارای سطح دسترسی مدیر بدون تغییر در عملکرد بوتلودرِ GRUB2 ، تغییر داده شود. grub.cfg یک فایل متنی بوده و همانند سایر فایلها یا فایلهای اجرایی امضاء 9 نشده است. همین امر فرصت را برای مهاجمان فراهم می آورد تا مکانیسم hardware root of trust را بشکنند. در این حالت، بافر به جای متوقف کردن اجرا یا خارج شدن از فرآیند، فقط خطایی را در کنسول چاپ می کند و به فراخوانی تابع بازمی گردد. به گفته ی محققان، سرریز بافر به مهاجم اجازه میدهد امکان اجرای کد دلخواه را در محیط اجرایی UEFI به دست آورد، که این امر میتواند برای اجرای بدافزار، تغییر فرآیند بوت، وصله ی مستقیم هسته ی سیستم عامل و یا هر اقدام مخرب دیگری مورد سوءاستفاده قرار گیرد.
به منظور بهره برداری از آسیب پذیری BootHole در سیستمهای ویندوزی، مهاجمان میتوانند بوتلودرهایِ پیش فرضِ نصب شده بر روی سیستم را با یک نسخه آسیب پذیر GRUB2 ، جهت نصب بدافزار rootkit جایگزین کنند. همانطور که در تصویر قابل مشاهده است، محتوای grub.cfg از دیسک به بافر هیپ خوانده شده و سپس توسط کد آسیب پذیر تجزیه میشود که در نتیجه موجب سرریز ساختار تجزیه گر داخلی می گردد.
همچنین مطابق آنچه در تصویر بعدی آمده است، فیلدهای موجود در ساختار تجزیه گر داخلی بازنویسی شده و امکان نوشتن داده ی دلخواه در هر بخش از حافظه امکان پذیر میگردد.
لازم به ذکر است که این آسیبپذیری از راه دور قابل بهره برداری نبوده و مهاجم باید پیش از هر چیز ابتدا راه نفوذی به سیستم هدف بیابد و بتواند سطح دسترسی خود را به Admin یا root ارتقاء دهد، تا بتواند از آسیب پذیری مذکور سوءاستفاده کند. از طرف دیگر مهاجم باید دسترسی فیزیکی به سیستم هدف داشته باشد.
نسخه های تحت آسیب پذیری
این آسیب پذیری میلیاردها دستگاه در سراسر جهان ( از جمله سرورها و ایستگاه های کاری، لپتاپ ها، دسکتاپ ها و سیستم های IoT و تقریباً هر سیستم لینوکسی و ویندوزی ) را تحت تأثیر قرار میدهد. اگرچه GRUB2 یک بوتلودر استاندارد است که توسط اکثر سیستم های لینوکسی مورد استفاده قرار می گیرد، اما سیستم عاملهای دیگر، هسته ها و هایپروایزرهایی نظیر XEN را نیز پشتیبانی می کند. همچنین این مشکل برای هر دستگاه ویندوزی که از Secure Boot با استاندارد Microsoft Third Party UEFI Certificate Authority استفاده می کند، قابل تعمیم است.
راهکار
نظارت بر محتوای پارتیشن بوتلودر (پارتیشن سیستمی EFI ) می تواند در شناسایی زودهنگام سیستم های آسیب دیده در سازمان کمک کننده باشد. راه حل های زیر جهت کاهش و رفع آسیب پذیری پیشنهاد می گردد:
- به روزرسانی GRUB2 جهت رفع آسیبپذیری.
- به روزرسانی installers ، bootloaders و shims در تمام نسخه های لینوکس و سایر محصولاتی که از GRUB2 استفاده می کنند.
- امضاء shims های جدید توسط صادرکنندگان گواهی UEFI شخص ثالت مایکروسافت.
- نصب نسخه ی جدید سیستم عامل در دستگاههای آسیب پذیر.
- به روزرسانی لیست ابطال UEFI (dbx) در سیستم عامل دستگاه های آسیب پذیر جهت جلوگیری از اجرای کد هنگام بوت شدن سیستم.
- جایگزین نمودن بوتلودرهای جدید با بوتلودرهای قدیمی و ابطال بوتلودرهای قدیمی و آسیب پذیر جهت جلوگیری از سوءاستفاده مهاجمان.
منبع :