نقص پردازنده‌های اینتل؛ رخنه‌ای برای سرقت ارزهای دیجیتال

ساخت وبلاگ

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

پردازنده هایاینتل (Intel)درمواجهه با اسکریپت هایفراریسمانی (HyperThread)مخربی هستند که با سوءاستفاده از حفره ی پردازشی، کلیدهای خصوصی و عمومی کیف پولرمزارزهارا شناسایی می کنند و می ربایند. به موازات آن، مشاهده شدن همین آسیب پذیری که از نوعSide-Channelاست، در سری پرادازنده هایاسکای لیک (SkyLake)و کبی لیک (KabyLake)، به نظر می رسد شرایط مشابه برای, پردازنده هایAMDهم وجود داشته باشد.

طی یازده ماه گذشته، پردازنده های کامپیوترها و بعضا گوشی های موبایل، به بستری برای, اجرای حملات مخرب تبدیل شده اند. نام های منفوری نظیر Meltdown and Spectre ،BranchScope ،TLBleed و Foreshadow متعلق به کدهای مخربی هستند که تهدیدی برای, سرقت, اطلاعات محرمانه ی ما نظیر رمزهایمان و کلید خصوصی کیف پول هایمان از پردازنده ها محسوب می شوند. این به گونه ای است که با سازوکارهای تدافعی ساده و سنّتی نمی توان آن ها را شناسایی و متوقف کرد. در همین زمینه، ماه گذشته پژوهشگران اعلام کردند یکی از حفره های امنیتی که پیش ازاین در تعداد زیادی از پردازنده های اینتل شناسایی شده بود، با وجود برطرف شدن مشکل به صورت نرم افزاری کماکان وجود دارد و حملات جدیدی برپایه ی آن طرح ریزی شده و احتمال وقوع دارد. این تهدید برای, پردازنده های غیراینتلی هم متصور است.

intel core i7

این حمله جدید که نامش PortSmash است، از محل حفره ی مغفول مانده ی نوع Side-Channel در فناوری فراریسمانی اینتل صورت می گیرد. این فناوری فراریسمانی نوع خاص و ارتقا یافته ای از فناوری چندریسمانی همزمان است که سرعت اجرای حجم زیادی از فرمان های محاسباتی را افزایش می دهد که باید همزمان و موازی اجرا شوند. در این معماری، کل توان پردازشی تولیدشده هم برآمده از فعالیت دو هسته ی پردازش مجازی است که روی پردازنده ای فیزیکی بنا شده اند. هسته های اضافه شده تقسیم فرمان های محاسباتی بزرگ به فرمان های ساده و کوچک تر را تسهیل می کنند؛ درنتیجه، اجرای آن ها سریع تر انجام می شود.

ترافیک تبادلی در درگاه های ارتباطی پردازنده ها و حفره ای از نوع Side-Channel

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

باتوجه به الگوی زمان بندی منحصربه فرد موجود در این پردازنده ها و تکنیکی که برای, تخصیص آن جریان پردازش به درگاه ها طراحی شده، درنتیجهمی توان پردازنده را مجبور کرد همه ی پردازش های غیرمرتبط با این جریان ساختگی را به هسته ی دیگر منتقل کند و در زمانی که آن هسته مشغول پردازش کلیدهای خصوصی است، داده های رمزشده ربوده و رمزگشایی شوند.

آنچه زمینه ی این نفوذ را فراهم می کند، مفهومی است به نام <<ترافیک تبادلی بین درگاه های پردازنده>> (Port Contention) و زمانی رخ میlrm; دهد که در پردازنده ای فیزیکی رسته ای از دستورالعمل ها به درگاه های مختلف برای, پردازش تخصیص داده می شوند و در صف اجرا قرار می گیرند. این آسیب پذیری با عبارت CVE-2018-5407 کدگذاری شده است. هم کامپیوترهای شخصی و هم سرورها در معرض چنین آسیبی قرار دارند؛ هرچند دراین میان سرورهای بیشتر مدنظر مهاجمان هستند.

پژوهشگران در این سند آورده اند:

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

Port Contection

بیلی باب بروملی(Billy Bob Brumly)، استاد دانشکده ی فنی دانشگاه Tampere فنلاند و یکی از نویسندگان این سند، در مصاحبه ای این گونه عنوان می کند:

انتظار می رود پردازنده هایی که فناوری آن ها از سری های اسکای لیک و کبی لیک قوی تر است، نیز آسیب پذیر باشند و با کمی دست کاری کدها بتوان به آن ها نیز نفوذ کرد. به شدت به معماری پردازنده های رایزنAMDهم شک دارم که از فناوریSMTاستفاده می کنند؛ اما به دلیل اینکه درحال حاضر تجهیزات و سخت افزار کافی برای آزمایش آن ها ندارم، این کار را به وقتی دیگر موکول کرده ام.

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

بروملی همچنین در این سند نوشته است:

به شخصه معتقدم همین دسترسی های راه دور (Remote Logins) جدی ترین تهدیدها و نقطه شروع این حملات هستند. کاربر خراب کار با دسترسی های کافی مثلا با SSH به سیستم وارد می شود و کد مخرب را پردازش و اجرا می کند و داده های مربوط به هسته ی دیگر را به دست می آورد که حاوی کلیدهای خصوصی است.

این کد به زبان اسمبلی ۶۴ بیتی تولید شده و باید روی خود دستگاه آسیب پذیر اجرا شود و نه از راه دور. البته، به کمک مکانیزم هایی که در حملات Spectre به کار می رود، می توان این کد را در بطن Javascript به روی سیستم فرستاد. تاکنون، چنین موردی مشاهده نشده؛ اما احتمال آن همواره متصور است. نمونه ای از کدهای پژوهشگران دراین باره را می توانید دراینجاببینید.

اینتل رسما در بیانیه ای اعلام کرده است:

این موضوع ارتباطی به تکنیک اجرای زودهنگام محاسبات (Speculative Execution) ندارد. پس، با Spectre و Meltdown یا نقص ترمینال L1 هم نامرتبط است و فکر می کنیم فقط به پلتفرم های اینتلی هم محدود نباشد. غالبا محور روش های حملات Side-Channel، سنجش و دست کاری برخی مقادیر کنترلی منبع سخت افزاری به اشتراک گذاشته شده نظیر زمان بندی جریان ارسال دستورالعمل ها روی درگاه های یکی از پردازنده ها است. نرم افزارهای سیستمی و کتابخانه های برنامه نویسی را می توان با اجرای الگوهای ایمن سازی موجودی که برای حملات Side-Channel وجود دارد، از این دست کاری ها مصون نگاه داشت. بااین حال، حفاظت از داده های مشتریان و اطمینان از اینکه محصولاتمان در سطح مناسبی از امنیت قرار دارند، اولویت اول ماست و برای حفظ این مهم، همکاری خود را با مشتریان و شرکا و پژوهشگران به منظور کشف و کاهش نقاط آسیب lrm;پذیر همواره ادامه خواهیم داد.

Spectre Meltdown

فناوری فراریسمانی محکوم به نابودی

PortSmash دومین حمله ی پردازنده ای است که همین قابلیت فراریسمانی را هدف قرار می دهد. حمله ی دیگری به نامTLBleedکه در خرداد شناسایی شد هم با استفاده از همین فناوری در پی یافتن کلید خصوصی در رمزنگاری ها بود. پژوهشگران که این حمله را طرح ریزی کرده و توسعه داده اند، با استفاده از الگوریتم Cruve 25519 EdDSA موجود در کتابخانهlibgcryptبرنامه ای برای کشف و بازیابیامضاهای رمزنگاری (Cryptographic Signitures)تولید کردند و آن را روی یکی از هسته های مجازی قرار دادند. به همان شیوه ای که توضیح داده شد، این کد درگیر شناسایی کلیدهای خصوصی شد. آن ها با این کار موفق شدند در ترکیب زمانی که دو میلی ثانیه ی آن برای ارزیابی و رصد ترافیک درگاه ها، هفده ثانیه برای فرایند حدس و تخمین در چهارچوب عملیات یادگیری ماشین و نهایتا یک ثانیه هم برای تخمین پیچیده ی خطی صرف شده بود، کلید ۲۵۶ بیتی را به دست آورند که برای تولید امضاها استفاده می شد. این حمله ی Side-Channel در حافظه یTLBپردازنده ی فیزیکی میزبانی و اجرا شد.

پیش ازاین ، مکانیزم حمله ی TLBleed به حدی نگران کننده بود که توسعه دهندگانی که روی پلتفرمOpenBSDفعالیت می کردند، به غیرفعال کردن ویژگی فراریسمانی پردازنده مجبور می کرد. بروملی در جایی توصیه کرده کاربران قابلیت SMT را از تنظیمات BIOS هم غیرفعال کنند یا اینکه از تجهیزاتی استفاده کنند که اصلا چنین قابلیتی نداشته باشند. او حتی اعتقاد دارد بهتر است توسعه دهندگان سیستم عامل ها در لحظه راه اندازی به کل SMT را غیرفعال کنند.

الکساندر پسلیاک (Alexander Peslyak)صاحب نظر حوزه ی امنیت که بیشتر با نام مستعارSolarDesignerشناخته می شود، در تمجید از این پروژه ی تحقیقاتی روی فناوری فراریسمانی، آن را پژوهشی درجه یک نامیده و گفته است:

رخداد حمله های نوع Side-Channel که با سنجش و ارزیابی ترافیک تبادلی درگاه ها صورت می پذیرد، دورازانتظار نبود. باوجوداین، مشکل اینجاست که تاکنون کسی آن را مستند نکرده بود. شاید بهتر بود همان سال ۱۹۸۴، بیشتر برای شناساندن آن تلاش می کردیم؛ درست مانند همین پژوهشی که اکنون انجام شده است.

همچنین طبق اظهارات او، ساختار آن نسخه از OpenSSL که PortSmash با سوءاستفاده از آن این اقدامات مخرب را انجام می دهد، بهlrm;گونه ای است که حتی با غیرفعال بودن SMT نیز امکان سرقت, کلیدهای خصوصی وجود دارد. البته بدیهی است برای این کار به منابع و زمان نیاز بیشتری وجود دارد.

اشکالات موجود در خود OpenSSL

پائول کوچر (Paul Kocher)، کارشناس امنیت و رمزنگاری که پژوهش مشابه را درخصوص Spectre انجام داده، اعتقاد دارد ضعف مهمی که PortSmash را بسیار خطرناک تر می کند، شیوه ی اجرای عملیات حساس به وسیله ی OpenSSL است؛ به نحوی که از دستورالعمل های انشعابی استفاده می کند که حاوی مقادیر محرمانه هستند.

دراین باره او چنین اظهارنظر کرده است:

تولیدکنندگان کتابخانهlrm;های برنامه نویسی برای رمزارزها از پیش از چنین حفره های امنیتی باخبر هستند و می دانند باید مسیر دسترسی های آن ها را مسدود کنند. آن ها معمولا معتقدند باید از به وجودآمدن هر شرایطی جلوگیری کرد که در آن، داده های محرمانه در جریان پردازش قرار دارند، مثل دستورالعمل های شرطی و انشعابی. ازاین رو، می توان نتیجه گرفت که محل نفوذ و آسیب رسانی همین حمله های متکی به فناوری فراریسمانی و شاید هم متکی به مکانیزم های دیگر مثل پیش بینی پرش ها (Branch Predictor)، اشکالی است که در OpenSSL وجود دارد.

OpenSSL

توسعه دهندگان OpenSSL از آن زمان نسخه ی به روزرسانی را منتشر کرده اند که فعالیت PortSmash را ناممکن می کند. جزئیاتی از تغییرات حاصل از این به روزرسانی دردست نیست؛ اما احتمال می رود آن ها تغییراتی را در شیوه ی تعامل OpenSSL با SMT اعمال کرده اند.

سند منتشرشده برای PortSmash که با عنوان <<ترافیک تبادلی درگاه ها مایه ی تفریح و درآمدزایی>> است، بارها بر غیرفعال کردن SMT تأکید می کند. البته نه صرفا برای توضیح تهدیدهای PortSmash، بلکه TLBleed و حملات مشابه CashBleed و MemJam هم در دامنه ی توصیه ی آن قرار دارند. نویسندگان سند همچنین به دنبال اندازه گیری میزان افت پردازشی هستند که ناشی از اعمال راهکارهای دفاعی روی برنامه های کاربردی با تراکم ریسمان های پردازشی است.

یکی از راهکار های دفاعی که می تواند افت پردازش کمی به دنبال داشته باشد، اعمال تغییراتی در کتابخانه های مرتبط با کرنل (Library OS) است که به موجب آن در زمان اجرای فرمان های به وسیله ی برنامه های کاربردی، هسته های مجازی پردازنده ایزوله و مصون می شوند.

می توانیم SMT را غیرفعال کنیم تا توان پردازشی بیشتر کاهش یابد؛ اما اعمال تغییرات در این کتابخانه ها، مستلزم زمان زیاد و اصلاحات گسترده ای در کتابخانه ها است.

رویکرد دفاعی دیگری که این پژوهشگران توصیه کرده اند، تولید کدهای مستقل از درگاه (Port-Independent) در توسعه ی برنامه های کاربردی است؛ به نحوی که مثل اجراهای زمان-ثابت (Constant-Time)، با الگوهای کدنویسی امنی که مستقل از رمز (Secret-Independent) هستند، این برنامه ها تولید شوند.

برای تأکید مجدد، PortSmash اکنون برای کاربرانی تهدید به حساب میlrm; آید که رایانه آن ها به هر دلیلی به منابع نامطمئن اجازه ی اجرای پردازش روی پردازنده ی فیزیکی اش را می دهد. این کاربران باید به دقت این سند را مطالعه کنند و توصیه های آن را جدی بگیرند. با اینکه به نظر می رسد، خطر این موضوع برای سایر کاربران کمتر است؛ اما ممکن است با تحقیق و بررسی بیشتر، مواردی درخصوص آسیب پذیری آنان نیز مشخص شود.

علم وفناوری...
ما را در سایت علم وفناوری دنبال می کنید

برچسب : نویسنده : 9elme1404c بازدید : 271 تاريخ : شنبه 17 آذر 1397 ساعت: 7:44