۱۸ دی ۱۳۹۶

Meltdown و Spectre: دو خانواده‌ی خطرناک برای پردازنده‌ها

همین ابتدا خیال شما را راحت کنم؛ اگر دستگاهی پردازنده کامپیوتری دارد، به احتمال خیلی زیاد در معرض این خطر بزرگ امنیتی هست. موضوع آنقدر جدی است که Brian Krebs یکی از متخصصین مطرح امنیت اطلاعات در وصف آن گفته: «رخنه‎‌های ترسناکِ تراشه، شبح فروپاشی را با خود همراه می‌آورد». اگر می‌خواهید درباره این خطر جدی و مقابله با آن بدانید، پیشنهاد می‌کنم تا انتهای مطلب همراه باشید.

شبح فروپاشی

در هفته‌های پایانی سال ۲۰۱۷، سیستم‌عامل‌های ویندوزی و لینوکسی یک سری به‌روزرسانی امنیتی دریافت کردند که نحوه‌ی مدیریت حافظه‌ی مجازی (Virtual Memory) توسط سیستم‌عامل را تغییر می‌داد. حتی در برخی موارد باعث کاهش راندمان ۱۷٪ تا ۵۰٪ هم شده است. هرچند که تحلیل‌ها و گمانه‌زنی‌های مختلفی وجود داشت، اما در ابتدا علت این به‌روزرسانی‌ها و اینکه با چه مشکل امنیتی مقابله می‌کند، مشخص نبود. تا اینکه در سومین روز سال جدید میلادی، کارشناسان امنیتی خبر از وجود باگ‌های سخت‌افزاری بسیار جدی بنام Spectre و Meltdown دادند که مستقیما ریشه در شیوه‌ی کارکرد پردازنده‌های رایانه‌ای (CPU) دارد. به‌وسیله‌ی باگ‌های این دو خانواده، امکان نشت اطلاعات و دسترسی به محتوای برنامه‌های در حال اجرا فراهم می‌شود.

هرچند که برنامه‌ها عموما دسترسی خواندن اطلاعات جاری برنامه‌های دیگر را ندارند، یک بدافزار می‌تواند با بهره‌گیری از حفره‌های امنیتی Meltdown و Spectre، اطلاعات مربوط به حافظه‌ی سایر برنامه‌های در حال اجرا را به دست آورد. یعنی مثلا رمز شما که در مرورگر یا نرم‌افزار مدیریت رمز ذخیره شده، عکس‌های خصوصی، ایمیل، پیغام‌های داخل پیام‌رسان، و حتی اسناد حساس کاری.

حفره‌های ملت‌داون و اسپکتر بر روی کامپیوتر شخصی، موبایل و حتی روی ابر هم وجود دارد. گروه‌های مستقل امنیتی جداگانه این آسیب‌پذیری را کشف کرده‌اند، که در راس آن‌ها پروژه Zero گوگل قرار دارد. وصله‌های امنیتی لازم برای مقابله با آن هم پیش از اعلام عمومی تا جای ممکن آماده شده بود. ولی این حفره‌ها بیشتر جنبه‌ی سخت‌افزاری دارد و در نتیجه عمیق‌تر و زیرساختی‌تر از آن است که به راحتی بتوان جلوی آن‌ها را گرفت.

سعی کرده‌ام گویش این مطلب تا حد امکان عمومی و خلاصه باشد، اما به خاطر ذات بسیار فنی این اتفاق، پیشاپیش از پیچیده بودن برخی توضیحات عذرخواهی می‌کنم.

وقتی بهینه‌سازی کاربر را کباب می‌کند یا شتر دیدی؟ دیدم!

پردازنده‌های امروزی جهت بهینه‌سازی رایانش و افزایش کارایی، دستورات را به روش Speculative Execution (اجرای گمانه‌ای) اجرا می‌کنند. یعنی چه؟ یعنی پردازنده فرض را بر صحت یک شرط گذاشته و دستورات بعد از آن را اجرا می‌کند؛ ولی اگر پس از اجرا مشخص شد که شرط نادرست بوده، دستورات اجرا شده نادیده گرفته می‌شود (شتر دیدی ندیدی) و هیچ تاثیری در پردازش برنامه ندارد. هرچند که نتیجه‌ی اعمال اجرا شده از دیدگاه برنامه نادیده گرفته شده، با این حال تغییراتی در قسمت‌های پایینی معماری پردازنده صورت گرفته است؛ مثلاً فرض کنید اجرای گمانه‌ای منجر به cache شدن اطلاعات شود. همان‌طور که احتمالا می‌دانید، دسترسی به اطلاعات در cache راحت‌تر و سریع‌تر از محتوایی است که cache نشده.

هر دو خانواده Meltdown و Spectre دقیقا با سوءاستفاده از همین شیوه‌ی اجرای پردازنده‌ها، حمله می‌کنند.

Meltdown vulnarability

Meltdown

آسیب‌پذیری Meltdown با سوءاستفاده از شیوه‎ی اجرای گمانه‌ای پردازنده‌ها، مرز بنیانی بین فضای کاربر و Kernel سیستم‌عامل را می‌شکند و باعث نشت اطلاعات از Kernel به برنامه‌های کاربر می‌شود. همین آسیب‌پذیری بود که در ابتدا منجر به سیلی از وصله‌های امنیتی شد.

هرچند که تمام پردازنده‌های مدرن، از جمله Intel، AMD و ARM کمابیش از دسترسی گمانه‌ای به حافظه استفاده می‌کنند، اما پیاده‌سازی اینتل بیشتر از بقیه از این تکنیک بهره می‌جوید. حافظه‌ی مربوط به سیستم‌عامل با استفاده از metadata یا فراداده مشخص می‌کند که آیا برنامه‌ی کاربری اجازه دسترسی به حافظه را دارد، یا دسترسی برنامه به حافظه از طریق Kernel محدود شده است. نکته‌ی مهم درباره‌ی Chipهای اینتل این است که ابتدا به برنامه‌ها این اجازه را می‌دهد که بطور گمانه‌ای از حافظه‌ی مربوط به Kernel استفاده کنند، و پس از شروع اجرای دستور، اجازه‌ی دسترسی را بررسی می‌کند؛ هرچند که درصورت عدم صحت شرط، جلوی اجرا گرفته خواهد شد، اما با زمان‌بندی خوب از سمت برنامه، امکان دسترسی به محتوای cache وجود خواهد داشت.

با توجه به موارد ذکر شده، اغلب کامپیوترهای دسکتاپ، لپتاپ، و سیستم‌های ابری که از پردازنده‌های Intel استفاده می‌کنند در معرض خطر هستند. دقیق‌تر بگویم، تقریبا تمام پردازنده‌های تولید شده از سال ۱۹۹۵ (به جز Intel Itanium و Intel Atom قبل از ۲۰۱۳). هرچند هنوز مشخص نیست که پردازنده‌های AMD و ARM هم در برابر Meltdown آسیب‌پذیرند یا خیر، اما این احتمال می‌رود که بتوان برای این دسته از پردازنده‌ها نیز حملاتی از این قبیل ترتیب داد.

Spectre vulnarability

Spectre

خب، شاید تا اینجا دارندگان سیستم‌هایی که از پردازنده‌های AMD یا ARM بهره می‌برد نفس راحتی کشیده‌اند، اما Spectre یا «شبح» شما را تنها نگذاشته است. آسیب‌پذیری Spectre حمله‌ای عمومی‌تر درنظر گرفته می‌شود چرا که با استفاده از قابلیت‌های وسیع‌تری از Speculative Execution قربانی می‌گیرد، به نحوی که در کنار سرور، لپ‌تاپ و دسکتاپ، تلفن هوشمند و تبلت نیز جزو قربانیان آن محسوب می‌شود. حملات Spectre نه تنها می‌تواند باعث نشت اطلاعات از فضای Kernel به فضای کاربری شود، بلکه حتی می‌تواند باعث درز اطلاعات از Hypervisorهای مجازی‌سازی به ماشین‌های مجازی مهمان روی سرور میزبان هم بشود.

سوءاستفاده از «شبح» سخت‌تر از ملت‌داون است، اما مقابله با آن هم پیچیده‌تر است. با این حال پیشگیری از بعضی سوءاستفاده‌های شناخته شده از این راه به کمک وصله‌های نرم‌افزاری ممکن است. مثلا تغییراتی در کد سخت‌افزار که پردازنده را وادار به اجرای سریالی دستورات می‌کند تا قبل از اجرا تمام اعمال read و write حافظه تمام شده باشد، که منجر به جلوگیری از اغلب گمانه‌زنی‌ها می‌شود. چنین پیاده‌سازی روی پردازنده‌ه‌های ARM، پردازنده‌های x86 اینتل و AMD اعمال شده است.

ما همه در خطریم! اگر عمل نکنیم.

با توجه به گستردگی و پیچیدگی این ایرادات، به احتمال زیاد شما نیز در برابر آن آسیب‌پذیرید و ممکن است حتی رمز عبور اکانت‌های شما نشت کند؛ مگر اینکه برای سیستم شما هم وصله‌ی امنیتی مربوطه ارائه شده و شما آن را نصب کرده باشید و در ادامه نیز موارد امنیت رمزعبور را جدی بگیرید.

بررسی این امر که آیا در برابر یک سیستم خاص این حملات صورت گرفته بسیار سخت یا حتی نشدنی است، چرا که در چنین حملاتی معمولا هیچ اثری در لاگ‌های سیستم وجود ندارد. همچنین، باید در نظر داشت که برخلاف تئوری، نرم‌افزارهای ضد ویروس در عمل در برابر چنین حملاتی تقریبا نمی‌توانند کاری کنند و حتی گاهی در به‌روزرسانی‌های امنیتی مربوطه هم باعث اختلال شده‌اند.

مهم‌ترین کار این است که در اولین زمان تمامی به‌روزرسانی‌های امنیتی جدید را برای سیستم‌عامل‌ها و دستگاه‌های مختلف‌تان (حتی اندرویدی) نصب کنید. این کار را عقب نیاندازید. همین‌طور نرم‌افزارهای وب و اینترنت خود را به‌روز نگه‌دارید. مثلا گوگل در نسخه بعدی مرورگر کروم که در ۲۳ ژانویه منتشر می‌شود با این دو ایراد امنیتی مقابله می‌کند.

چند نکته‌ی خیلی ساده در امنیت اطلاعات

با توجه به وقایعی که این روزها در حوزه امنیت اطلاعات رخ می‌دهند، سه نکته‌ی خیلی ساده مثل آب خوردن هستند که هر کاربری قادر به انجام آن‌ها است.

  • احراز هویت دوعاملی (۲FA): درصورتی که رمز عبور اکانت‌های شما در این‌گونه حملات نشت کند یا قرباتی حملاتی Phishing باشید، احراز هویت دوعاملی در حفظ امنیت اطلاعات شما خیلی کارآمد خواهد بود.
  • نرمافزارهای مدیریت رمز عبور (Password Manager): این نرم‌افزارها از این جهت مفید هستند که شما می‌توانید رمز‌های بسیار سخت و کاملاً متفاوت برای اکانت‌های مختلف خود در نظر بگیرید و در یک نقطه متمرکز آن‌ها را مدیریت کنید.
  • استفاده از Ad-Blocker: این روزها بسیاری از وب‌سایت‌ها بدون کسب اجازه‌ی کاربر، کدهای مخرب یا کدهایی که سیستم شما را درگیر می‌کند داخل محتوا تزریق می‌کنند، که با استفاده از Ad-blockerها نه تنها حریم شخصی شما بیشتر حفظ خواهد شد و بلکه سرعت مرور صفحات اینترنتی نیز افزایش چشم‌گیری خواهد داشت.

شاید برای شما سوال باشد که چرا در این لیست نامی از آنتی-ویروس برده نشده است که خود چند علت دارد:

  • در دنیای حملات امروزی، آنتی‌ویروس نقش چندان موثری ندارد، به‌ویژه مقابل چنین حملاتی. نکته‌ی جالب این است که در رابطه با همین حملات، بسیاری از آنتی-ویروس‌ها حتی اجازه نصب به‌روزرسانی امنیتی در ویندوز را نمی‌دادند.
  • اغلب سیستم‌عامل‌ها یا به‌طور پیش‌فرض دارای آنتی-ویروس هستند، یا یک نمونه در پروسه راه‌اندازی اولیه سیستم نصب شده است.
  • آنتی-ویروس گاهی دردسر ساز است و نیاز به صرف وقت جهت تنظیمات بهینه دارد، به‌ویژه برای کاربرانی که به هیچ وجه فنی نیستند.
  • این بدان معنی نیست که نباید آنتی-ویروس نصب کرد، بلکه به‌نظر بنده اهمیت موارد ذکر شده بیشتر از نصب آنتی-ویروس بوده است.

اگر نکته‌ی امنیتی ساده‌ای که می‌تواند برای غیرفنی‌ترین کاربرها مفید باشد، مد نظر شما است، لطفا در قسمت نظرات با ما در میان بگذارید.

برگرفته از:
Meltdown and Spectre FAQ: Fix for Intel CPU flaws could slow down PCs and Macs
پدربزرگ و حفظ امنیت اطلاعات
Meltdown Paper
What’s behind the Intel design flaw forcing numerous patches
Spectre Paper