آسیب‌پذیری سخت‌افزاری **ملتدان** (به انگلیسی: Meltdown) در اواخر سال ۲۰۱۷ توسط جان هُرن از Google Project Zero و پژوهشگران Cyberus Technology و یک گروه از دانشگاه فناوری Graz در اتریش کشف شد. این آسیب‌پذیری که با شناسهٔ CVE-2017-5754 نام برده می‌شود، به‌طور مستقیم ریشه در پردازنده‌های کامپیوتری دارد و مرز بین فضای کاربر و هستهٔ سیستم عامل (کرنل) را می‌شکند که باعث نشت اطلاعات از هستهٔ مرکزی به برنامه‌های کاربر می‌شود.

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

نحوه عملکرد آسیب‌پذیری Meltdown
-------------------------------

### تاریخچه-تکنیک‌های مورد استفاده در طراحی پردازنده‌های مدرن

پردازنده‌های کامپیوتری امروزی برای بدست آوردن کارایی زیاد از تکنیک‌های مختلفی استفاده می‌کنند که چهار تکنیک رایجی که در عملی شدن آسیب‌پذیری Meltdown دخیل هستند شامل:

* حافظهٔ مجازی: به منظور کارآمدتر شدن دسترسی به حافظه و کنترل دسترسی پردازه‌ها به حافظه می‌باشد. سیستم‌های کامپیوتری امروزی پردازش‌های زیادی را به صورت موازی انجام می‌دهند و هر پردازه این تصور را دارد که کل حافظهٔ فیزیکی را در اختیار دارد و خودش تنها برنامهٔ حاضر در سیستم می‌باشد؛ اما در حقیقت به هر پردازه مقدار مشخصی از حافظه فیزیکی اختصاص داده می‌شود و درخواست هر پردازه در اولین درخواست دسترسی به بخشی از حافظه، توسط سیستم‌عامل بررسی می‌شود که آیا پردازه مجاز به استفاده از بخش مورد درخواست می‌باشد یا خیر.
* سطوح امتیاز یا دامنه‌های حفاظتی: با استفاده از این تکنیک، سیستم‌عامل می‌تواند کنترل کند که کدام پردازش‌ها مجاز به خواندن مناطقی از حافظهٔ مجازی هستند. در این تکنیک هر برنامه با توجه به نوع دسترسی‌هایش یک حلقه یا امتیاز اختصاص داده می‌شود که تعیین‌کننده میزان دسترسی آن برنامه به حافظه می‌باشد و این تکنیک سرعت بیشتری نسبت به زمانی دارد که برای هر پردازه که نیاز دسترسی به مد ممتاز دارد عمل بررسی انجام شود.
* اجرای موازی دستورات (به انگلیسی: Instruction pipelining) و اجرای گمانه‌ای(به انگلیسی: Speculative execution): این دو تکنیک این امکان را فراهم می‌کنند که دستورات به کارآمدترین نحو اجرا شوند و برای رسیدن به کارایی بالا این امکان را ایجاد می‌کنند تا دستورات خارج از ترتیب اجرا شوند(Out of Order Execution). به‌طور معمول پردازنده‌های امروزی دارای چندین واحد پردازشی(به انگلیسی: Execution Unit) و یک زمانبند (به انگلیسی: Scheduler) هستند که در مورد اجرای کارآمد دستورات تصمیم‌گیری می‌کند و این تصمیم می‌تواند مبنی بر اجرای همزمان دو دستور در واحدهای پردازشی متفاوت(به انگلیسی: Instruction pipelining) یا پردازش دستورها خارج از ترتیب باشد؛ به شرطی که نتیجهٔ خروجی همواره درست باشد. اجرای گمانه‌ای برای زمانی است که انشعاب‌های شرطی در دستورات وجود دارد و تعیین مسیر اجرا وابسته به چگونگی برقراری شرط متفاوت خواهد بود. در مدل اجرای گمانه‌ای پردازنده بجای منتظر ماندن برای آماده شدن داده‌های تعیین‌کنندهٔ مسیر اجرای انشعاب، مسیری را برای اجرا پیش‌بینی می‌کند تا در زمان پردازنده صرفه‌جویی شود و کارایی بالا رود. حال اگر پس از آماده شدن داده‌های تعیین‌کنندهٔ مسیر انشعاب مشخص شد که پیش‌بینی پردازنده اشتباه بوده، اثر اجرای آن دستورات به‌طور کامل توسط پردازنده از بین می‌رود
* حافظهٔ نهان(به انگلیسی: Cache): برای دردسترس بودن سریع داده‌ها برای پردازنده از حافظهٔ نهان استفاده می‌شود که نسبت به حافظهٔ فیزیکی سریعتر، کوچکتر و نزدیکتر به پردازنده می‌باشد.

به‌طور کلی تکنیک‌های نامبرده شده در بالا امن هستند. آسیب‌پذیری Meltdown از ترکیب این تکنیک‌ها سوءاستفاده می‌کند و مکانیزمی که مانع دسترسی برنامه‌ها به حافظهٔ برنامه‌های دیگر می‌شود را می‌شکند.

### تشریح آسیب‌پذیری Meltdown

همهٔ پردازنده‌های امروزی جهت بهبود عملکرد و افزایش کارایی از روش اجرای گمانه‌ای استفاده می‌کنند که طبق این روش، اگر پردازنده در حین اجرای یک دستور نیاز به خواندن از حافظه و منتظر ماندن برای آماده شدن داده‌ها از سمت حافظه باشد برای افزایش کارایی به جای اینکه منتظر بماند و کاری انجام ندهد، دستورات بعدی که باید اجرا شوند را پیش‌بینی می‌کند و فرض را بر صحت یک شرط می‌گذارد و دستورات بعدی را اجرا می‌کند(Out of Order Execution). با این کار در زمان پردازنده صرفه جویی می‌شود. حال اگر پس از آماده شدن داده از سمت حافظه و اجرای ترتیبی دستورات، مشخص شد که پیش‌بینی پردازنده در اجرای دستورات بعدی اشتباه بوده، به حالتی قبل از اجرای این دستورات می‌رود و اثرات دستورات اجرا شده را از بین می‌برد و مقادیر ناشی از محاسبات گمانه‌ای را در حافظهٔ نهان ذخیره می‌کند. حال با ذخیره شدن این مقادیر در حافظهٔ نهان دستیابی به آن برای حمله‌کننده ساده‌تر خواهد بود. این نکته حائز اهمیت است که سیستم‌عامل دسترسی یک برنامهٔ سطح کاربر به حافظه را بررسی می‌کند که آیا برنامه مجاز به دسترسی به بخش مورد درخواستش می‌باشد یا توسط کرنل محدود شده‌است؛ اما وقتی برنامه‌ها به حالت گمانه‌ای اجرا می‌شوند اجازهٔ استفاده از حافظهٔ مربوط به کرنل را نیز دارند و پس از شروع اجرای دستور به‌طور عادی مجوز دسترسی بررسی می‌شود. اگرچه در صورت عدم مجوز دسترسی جلوی اجرا گرفته خواهد شد اما مقادیر حاصل از اجرای گمانه‌ای در حافظهٔ نهان خواهد بود و حمله‌کننده با زمان‌بندی درست می‌تواند آن مقادیر را بخواند.

در آسیب‌پذیری Meltdown حمله‌کننده با تکه کدی مخرب سیستم را مجبور می‌کند که برخی اطلاعات حساس را بدون درخواست کاربر و به شکل زود هنگام بارگذاری کند و سپس با بارگذاری این مقادیر در حافظهٔ نهان، حمله کننده به کمک حملهٔ کانال جانبی زمانی (Timing attack) می‌تواند مقادیر کلیدهای رمزنگاری و اطلاعات محرمانه را بدست آورد.

طیف گستردگی
-----------

* همهٔ دستگاه‌های حاوی پردازنده‌های اینتل
* همهٔ دستگاه‌های حاوی پردازنده‌های اپل
* پردازنده‌های ARM سری Cortex-A75
* برخی پردازنده‌های IBM از سری: System Z, Power Architecture, POWER8 and POWER9

در این میان پردازنده‌های AMD تحت تأثیر این آسیب‌پذیری نخواهند بود.

به‌دنبال آسیب‌پذیری Meltdown آسیب‌پذیری دیگری به‌نام شبح(به انگلیسی: Spectre) نیز مطرح شد که در برخی جنبه‌های کلی مشابه هستند اما آسیب‌پذیری شبح عمومی‌تر است و با استفاده از قابلیت‌های وسیع‌تری از اجرای گمانه‌ای سوء استفاده می‌کند و حتی روی پردازنده‌های AMD و ARM هم قابل پیاده‌سازی است.

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

مکانیزم‌های دفاعی
-----------------

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

از مکانیزم‌های مطرح شده برای این آسیب‌پذیری جداسازی جدول صفحه هسته از حافظه فضای کاربر است (به انگلیسی: KPTI: Kernel Page Table Isolation) این سامانه مبتنی‌بر سامانه KAISER است که در هستهٔ لینوکس پیاده‌سازی شده‌است. مایکروسافت و اپل هم به‌دنبال جلوگیری از این آسیب‌پذیری به‌روزرسانی‌های امنیتی را برای سیستم‌عامل‌ها و دستگاه‌هایشان ارائه کردند؛ البته این مکانیزم‌های دفاعی تا حدی از کارایی سیستم می‌کاهد که این کاهش کارایی از حدود ۵ الی ۳۰ درصد گزارش شده‌است.

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

و در آخر بررسی اینکه آیا یک سیستم خاص مورد سوءاستفادهٔ این حمله قرار گرفته یا نه، بسیار سخت یا حتی نشدنی است چرا که در چنین حملاتی معمولاً هیچ اثری در لاگ‌های سیستم وجود ندارد.

منابع
-----

1. 1 2 3  «Meltdown and Spectre». *meltdownattack.com*. دریافت‌شده در ۲۰۲۰-۰۷-۱۵.
2. 1 2  Lipp, Moritz; Schwarz, Michael; Gruss, Daniel; Prescher, Thomas; Haas, Werner; Fogh, Anders; Horn, Jann; Mangard, Stefan; Kocher, Paul (2018). "Meltdown: Reading Kernel Memory from User Space" (به انگلیسی): 973–990. ISBN 978-1-939133-04-5. `{{cite journal}}`: Cite journal requires `|journal=` (help)
3. ↑  «Meltdown». *dl.acm.org*. doi:10.1145/3357033. دریافت‌شده در ۲۰۲۰-۰۷-۱۵.
4. ↑  Gruss, Daniel; Lipp, Moritz; Schwarz, Michael; Fellner, Richard; Maurice, Clémentine; Mangard, Stefan (2017). Bodden, Eric; Payer, Mathias; Athanasopoulos, Elias (eds.). "KASLR is Dead: Long Live KASLR". *Engineering Secure Software and Systems*. Lecture Notes in Computer Science (به انگلیسی). Cham: Springer International Publishing: 161–176. doi:10.1007/978-3-319-62105-0\_11. ISBN 978-3-319-62105-0.
5. ↑  "Computer chip scare: What you need to know". *BBC News*. 4 January 2018. Retrieved 4 January 2018.

* مشارکت‌کنندگان ویکی‌پدیا. «Meltdown (security vulnerability)». در *دانشنامهٔ ویکی‌پدیای انگلیسی*، بازبینی‌شده در ۴ ژانویه ۲۰۱۸.