LogoFAIL مجموعهای از آسیب پذیریهای امنیتی با تأثیر بالا است که به تازگی کشف شده است که بر کتابخانههای تجزیه تصویر مختلف استفاده شده در سیستم عامل سیستم توسط فروشندگان مختلف در طول فرآیند بوت دستگاه تأثیر میگذارد. این مقاله به بررسی آسیب پذیریها و حمله LogoFAIL پرداخته است.
هنگامی که یک لپتاپ روشن میگردد، لوگوی تولیدکننده پیش از بوت شدن سیستمعامل، بر روی اسکرین، نمایش داده میشود. این لوگو میتواند تغییر کند، کارکردی که مقصود آن، استفادهی خود تولیدکنندگان لپتاپ یا کامپیوترهای دسکتاپ بوده است. اما نکته قابل توجه اینجاست که میتوان لوگوی پیشفرض را با تصویر دیگری جایگزین کرد.
لوگو در کدی ذخیره میشود که فوراً بعد از روشن شدن کامپیوتر در فریمور که UEFI نام دارد، اجرا میشود. اینطور به نظر میرسد که کارکرد جایگزینی لوگو، راهی برای دستکاری جدی دستگاه است. مهاجم میتواند آن را هک کرده و در ادامه، کنترل سیستم را در دست گیرد و این کار حتی میتواند به صورت ریموت نیز انجام شود. امکان چنین حملهای که آن را LogoFAIL مینامند اخیراً توسط متخصصان سازمان تحقیقاتی Binarly مورد بحث قرار گرفته است. در این مقاله قصد داریم به زبانی ساده حمله LogoFAIL را مورد بررسی قرار دهیم اما ابتدا اجازه دهید با بررسی خطرات بوتکیتهای (bootkit) به اصطلاح UEFI، آغاز کنیم.
بوتکیتهای UEFI: بدافزاری که از قبل بر رویس سیستم بارگذاری شده است
برنامهای که با روشن شدنPC اجرا میشود،BIOS (سیستم ورودی/خروجی پایه) نام دارد و به شدت محدود به قابلیتهای خود میباشد اما به هر حال برنامهای الزامی برای راه اندازی سختافزار کامپیوتر و بعد انتقال کنترل به لودرِ سیستم عامل است.BIOS از اواخر دهه ۲۰۰۰ میلادی، به تدریج با UEFI که نسخه پیچیدهتری از همان برنامه میباشد، جایگزین گردید. این نسخه دارای قابلیتهای اضافی مانند محافظت در برابر اجرای کد مخرب است. مشخصاً UEFI قابلیتی به نام Secure Boot را پیادهسازی میکند که الگوریتمهای کریپتوگرافیک را برای بررسی کد در هر مرحله از بوت کامپیوتر از روشن شدن گرفته تا لود سیستم عامل به خدمت میگیردس.
Secure Boot، امکان جایگزینی کد واقعی سیستم عامل را با کد مخرب سختتر کرد اما افسوس که این راهکارهای امنیتی کاملاً امکان لود کد مخرب را در مرحله اولیه از بین نبردند و اگر مهاجم تصمیم بگیرد بدافزار یا بوتکیت را در UEFI پنهان سازد، آنگاه پیامدهای جدی به دنبال خواهد داشت. مشکل بوتکیتهای UEFI این است که به سختی داخل سیستم عامل شناسایی میشود. یک بوتکیت میتواند فایل سیستمها را دستکاری کرده و کد مخرب را در سیستم عامل با بالاترین سطح دسترسی اجرا کند. چالش اصلی اینجاست که بوتکیت نه تنها میتواند یک نصب مجدد سیستم عامل را به انجام رساند بلکه میتواند جایگزینی هارد درایو را نیز به سلامت از سر بگذارند. بوتکیت پنهان شده در فریمور UEFI به دادههای ذخیره شده روی سیستم درایو وابسته نیست. در نتیجه بوتکیتها اغلب در حملات هدفمند پیچیده مورد استفاده قرار میگیرند.
این تصاویر چه کاری انجام میدهند؟
از آنجایی که UEFI محافظت قوی در برابر اجرای کد مخرب دارد، معرفی تروجان به پروسه بوت کار چندان آسانی نیست. با این وجود، امکان اکسپلویت نقصها و آسیب پذیری ها در کد UEFI برای اجرای کد دلخواه در مرحله اولیه وجود دارد. به همین علت محققان به مکانیزم جایگزینی لوگوی کارخانه توجه بیشتری کردند. برنامهای که دادهها را از فایل تصویری گرافیکی میخواند و این تصویر را روی اسکرین نمایش میدهد، اجرا میگردد. اما اگر اتفاقی رخ دهد که برنامه رفتار ناهنجار از خود نشان دهد، آنوقت چه؟
AMI، Insyde و Phoenix سه توسعهدهنده اصلیِ نرم افزار UEFI هستند که هر یک رویکرد جداگانهای نسبت به پردازش لوگو دارند. برای مثال، Insyde دارای برنامههای مجزای پردازش تصویر برای فرمتهای مختلف JPEG تا BMP است. AMI وPhoenix ، مدیریت تمام فرمتها را در یک برنامه واحد ادغام میکنند. آسیبپذیریهایی در هر یک از آنها کشف شده است که در مجموع بیست و چهار خطای بحرانی را نشان میدهند.
همه چیز نسبتاً ساده است، مهاجم میتواند تصویر لوگوی جدید را به دلخواه تغییر دهد. این شامل، تنظیم وضوح لوگو بهگونهای است که این پارامتر فراتر از محدودیتهای تعریف شده باشد که منجر به یک خطای محاسباتی و در نهایت نوشتن داده ها از فایل تصویری در ناحیه برای دادههای اجرایی میشود. این داده ها سپس با حداکثر سطح دسترسی اجرا میگردند. با این حال، اگر کد مخرب دارای این سطح دسترسی باشد، مهاجم میتواند تقریباً هر عملی را در سیستم عامل به انجام رساند. قابل ذکر است که برخی از مدلهای دستگاه از تولیدکنندگان بزرگ چنین مشکلی را ندارند، آن هم به یک دلیل بسیار ساده: “جایگزین کردن لوگو در UEFI آنها اساساً مسدود شده است. از جمله این مدلها میتوان به تعدادی لپ تاپ اپل و دستگاههای Dell اشاره کرد”.
استفادههای خطرناک تجاری
به لحاظ تئوری، این حمله میتواند به صورت ریموت صورت پذیرد. در برخی موارد، حتی تزریق تصویر دارای کد مخرب در بخش سیستم EFI روی دیسک کافیست و تصویر در ریبوت بعدی پردازش خواهد شد. نکته مهم این است که انجام چنین عملیاتی از قبل نیاز به دسترسی کامل به سیستم دارد؛ یعنی هر دادهای در کامپیوتر باید از قبل برای مهاجمان موجود باشد. ممکن است این سوال مطرح گردد که پس فایده پیادهساز حمله LogoFAIL چیست؟ پاسخ اینجاست که LogoFAIL تضمین کننده پایداری کد آلوده در سییستم مورد نظر است حتی اگر سیستم عامل مجددا نصب گردد. این نوع تداوم دسترسی و پایداری معمولاً به شدت مورد علاقه اپراتورهای APT است.
این مشکل رفتهرفته توسط نسخههای به روزرسانی شده UEFI که خطاهای داخل هندلرهای تصویر را برطرف میکنند، مرتفع خواهد شد. با این حال چون همه شرکتها با جدیت آپدیتهای فریمور را دنبال نمیکنند، احتمالاً تعداد زیادی دستگاه محافظت نشده باقی خواهند ماند و فهرست دستگاههای آسیبپذیر نه تنها شامل لپتاپها بلکه شامل مادربوردهای سرور نیز میشود.