نرم‌افزارهای افزودنی نگهبان اینتل

**نرم‌افزارهای افزودنی نگهبان اینتل** (**SGX**)، مجموعه ای از کدهای دستورالعمل مربوط به امنیت هستند که در برخی از واحدهای پردازش مرکزی مدرن اینتل (CPU) ساخته شده‌اند. این نرم‌افزارها به کد در سطح کاربر و همچنین سیستم عامل اجازه می‌دهند تا ناحیه‌های خصوصی ای از حافظه، به نام eclaves، که محتوای آنها یا حفاظت شده هستند، یا قادر به خوانده شدن یا ذخیره شدن توسط هر فرایند خارج از enclaves، که شامل فرآیندهای اجرا شده در سطح ویژه (به انگلیسی: privilege level) نیستند، را تعریف کنند. SGX به‌صورت پیش فرض غیرفعال است و باید از طریق تنظیمات مادربرد آنها بر روی یک سیستم پشتیبانی شده توسط کاربر انتخاب شود.

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

SGX به گونه ای طراحی شده‌است که برای اجرای محاسبات از راه دور ایمن، مرور وب امن و مدیریت حقوق دیجیتال (DRM) مفید باشد. برنامه‌های دیگر، شامل پنهان کردن الگوریتم‌های انحصاری و کلیدهای رمزگذاری هستند.

## جزئیات
SGX برای اولین بار با ریزپردازنده‌های نسل ششم Intel Core که بر اساس ریزپردازندهٔ Skylake بودند، در سال ۲۰۱۵ معرفی شد.

پشتیبانی از SGX در پردازنده در CPUID مشخص است، اما در دسترس بودن آن برای برنامه‌ها نیاز به پشتیبانی BIOS / UEFI و فعال کردن opt-in دارد که در بیت‌های CPUID منعکس نمی‌شود. این منطق تشخیص ویژگی را برای برنامه‌ها پیچیده می‌کند.

شبیه‌سازی SGX به نسخه آزمایشی شبیه‌ساز سیستم QEMU در سال ۲۰۱۴ اضافه شد. در سال ۲۰۱۵، محققان موسسه فناوری جورجیا یک شبیه‌ساز منبع باز را به نام "OpenSGX" منتشر کردند.

یک نمونه از SGX مورد استفاده در امنیت، یک برنامه نمایشی از wolfSSL است که برای الگوریتم‌های رمزنگاری استفاده می‌کند.

(GoldmonPlust(Gemini Lake اینتل نیز شامل پشتیبانی از Intel SGX است.

## حملات
### حمله نخستین + پروب
در تاریخ ۲۷ مارس ۲۰۱۷ محققان در دانشگاه صنعتی گراس اتریش اثبات مفهومی را توسعه دادند که می‌تواند کلیدهای RSA را ظرف مدت پنج دقیقه، از SGX enclavesهایی که روی همان سیستم در حال اجرا هستند با استفاده از یک سری دستورالعمل‌های مشخص به جای یک تایمر ریزدانه به منظور بهره‌برداری از کانال جانبی حافظه نهان DRAM، به دست آورد. یکی از راه‌های مقابله با این حمله توسط دانیل گروس و همکاران در سمپوزیوم امنیتی USENIX در سال ۲۰۱۷ ارائه و چاپ شد. در کنار همهٔ مقابلات چاپ شده، یک مقابله با این نوع حمله در تاریخ ۲۸ سپتامبر ۲۰۱۷ منتشر شد، ابزاری مبتنی بر کامپایلر، DR. SGX، که ادعا می‌کند با از بین بردن پیچیدگی پیاده‌سازی سایر راه حلهای پیشنهادی، عملکرد برتر دارد.

### حمله شبح وار
گروه LSDS در کالج امپریال لندن اثبات مفهومی را نشان داد که آسیب‌پذیری امنیتی اجرای سوداگرانه شبح می‌تواند برای حمله به enclave امن سازگار شود. حمله Foreshadow که در اوت سال ۲۰۱۸ آشکار شده‌است، ترکیبی از اجرای سود گرایانه و سرریز بافر برای دور زدن SGX است.

### حمله Enclave
در ۸ فوریه سال ۲۰۱۹، محققان دانشگاه صنعتی گراس اتریش یافته‌هایی را منتشر کردند، که نشان می‌داد در بعضی موارد امکان اجرای کد مخرب از درون enclave وجود دارد. بهره‌برداری شامل اسکن کردن حافظهٔ فرایند برای بازسازی یک ظرفیت ترابری (به انگلیسی: payload) است که پس از آن می‌تواند کد را روی سیستم اجرا کند. در این مقاله ادعا شده‌است که با توجه به ذات محرمانه و حفاظت شدهٔ enclave، امکان شناسایی و برداشتن بدافزارهای ساکن در آن برای نرم‌افزار آنتی‌ویروس غیرممکن است. با این وجود، از آنجایی که ضد بدافزارها و آنتی‌ویروس‌های مدرن، فراخوانی‌های سیستم و تعامل برنامه با سیستم عامل را نظاره می‌کنند، شناسایی enclaveهای مخرب توسط رفتارهای خود آنها باید امکان‌پذیر باشد و به نظر می‌آید که این مسئله خیلی مورد نگران کننده ای برای آنتی‌ویروس‌ها نباشد. اینتل با صادر کردن بیانه ای اعلام کرد که این حمله خارج از مدل تهدید SGX است و بیان کرد که نمی‌تواند ضمانت دهد که کد اجرا شده توسط کاربر از یک منبع قال اعتماد است و مصرف‌کنندگان را به اجرای کدهای معتمد تشویق کرد.

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

### غارتگر (به انگلیسی: Plundervolt)
محققان امنیتی توانسته‌اند خطاهای زمان‌بندی خاص را در اجرای داخل enclaves تزریق کنند که منجر به نشت اطلاعات می‌شود. حمله *می* تواند از راه دور انجام شود، اما نیازمند دسترسی به کنترل ویژهٔ ولتاژ و فرکانس پردازنده دارد.

### LVI
بارگذاری مقدار تزریق شده، داده را با هدف جایگزینی مقدار بارگذاری شده از حافظه ای که بعد از مدت کوتاهی و قبل از تشخیص خطا و عملیات واگردانی (به انگلیسی: rollback) و در زمان کنترل داده و جریان داده توسط LVI، استفاده می‌شود، به برنامه ای تزریق می‌کند.

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

## جستارهای وابسته
* اینتل MPX
* Spectre-NG
* محیط اجرای مطمئن (TEE)

## منابع

رده:امنیت رایانه‌ای
رده:دستورالعمل‌های اکس۸۶
رده:اینتل
رده:ریزپردازنده‌های اکس۸۶ اینتل