روابط عمومی شرکت ایدکو (توزیعکنندهی محصولات کسپرسکی در ایران)؛ در ماه ژوئن، محققین سه دانشگاه آمریکا مقالهای را منتشر کردند که حملهای واقعی را شرح میداد. اصل این حمله سوءاستفاده بود از تغییرات فرکانس سیپییو بسته به باری که روی آن قرار میگیرد (رفتار استاندارد برای سیپییوهای مدرن). فرکانس CPU با هرتز[1] اندازهگیری میشود از این رو نام Hertzbleed به این اشاره دارد که یک تغییر در چنین فرکانسی به نشت داده منجر میشود. این متود را میتوان جزو حملات سختافزاری دستهبندی کرد؛ یعنی آنی که آسیبپذیریها و یا سایر ضعفهای خاص سختافزار را اکسپلویت میکند. از این نوع حمله بسیار وجود دارد اما تقریباً همه به دسترسی مستقیم به کامپیوتر هدف –یا فقط یک تراشه خاص- نیاز دارند.
اما Hertzbleed میتواند تماماً ریموت عمل کند! این مطالعه بسیار جالب است و علیرغم پیچیدگی که دارد میتوان با عباراتی چند آن را خلاصه کرد. اما دست کم باید کمی درک از نکات پیچیدهترش داشته باشیم؛ منظور کمی دانش پسزمینه لازم است. از این رو در مقاله امروز قصد داریم دو کار انجام دهیم: او توضیح سادهای در مورد Hertzbleed بدهیم و بعد آرام برویم سمت تعریف پیچیدهترش (اما همچنان سعی داریم از گرافهای پر شاخ و برگ یا محاسبات مبهم دوری کنیم). با ما همراه بمانید.
توضیح ساده
سیپییوهای مدرن برای ذخیره برق همیشه یک فرکانس واحد را حفظ نمیکنند. در عوض فرکانس (همینطور ولتاژ سیپییو) بر طبق لود یا باری که دارد خودکار تنظیم میشود. وقتی تسکها کم باشند، فرکانس میتواند بسیار پایین باشد- برای مثال به جای 3.2 گیگاهرتز 900 مگاهرتز است. اگر تسکها تعدادشان زیاد شود فرکانس یکی یا همه هستههای سیپیپو میتواند از حد معمول بالا رود. در عمل، لود (تعداد و پیچیدگی تسکها) تنها ملاک تغییر فرکانس نیست. برای مثال میتواند اگر سیپییو داغ کرد پایین بیاید. محققین تصمیم گرفتند این کارایی بومی را برای اندازهگیری وضعیت سیپییو وقتی در حال اجرای برنامه رمزگذاری داده بود برداشته و سعی کنند اطلاعات حساس را سرقت کنند.
در نهایت به قابلیتی از الگوریتم مدرن رمزگذاری رسیدند که سیپییو را مجبور میکند فرکانسش را موقع پردازش دادهای خاص افزایش دهد. با افزایش فرکانس داده سریعتر پردازش میشود و کامپیوتر مورد حمله سریعتر به درخواستها واکنش نشان میدهد. با اندازهگیری زمان واکنش، محققین توانستند کلید مخفی رمزنگاری را از نو بسازند. آنها که اکنون مجهز به این کلید شده بودند میتوانند خودکار دادهی تبادلشده توسط سیستم هدف را رهگیری و رمزگشایی کنند (برای مثال با سایر کامپیوترهای موجود در شبکه خصوصی مجازی). و همه اینها بدون ذرهای شانس برای ثبت سرقت کلید. Hertzbleed ایده حملات سختافزاری را از طریق کانالهای اصطلاحاً جانبی را ایجاد میکند. در عین حال امکان سرقت داده به طور ریموت را –با ارسال درخواست به قربانی بالقوه از طریق شبکه- نیز معرفی میکند. اما در حال حاضر این فقط در سطح تئوری در جستجوی آسیبپذیریهای پیچیدهتر در سیپییوهای مدرن مانده است. با این حال این احتمال هم کامل وجود دارد که در آینده چنین حملاتی سادهسازی شوند.
توضیح کمی پیچیدهتر
حملات کانال جانبی با مشاهده غیرمستقیم عملکرد یک تراشه واحد یا کل یک کامپیوتر اجرا میشود. متود کلاسیک حمله کانال جانبی مستلزم مشاهده سویههای جریان الکتریسیته است که تراشه مصرف میکند. اگر تراشه (فرضاً) مشغول رمزگذاری داده با استفاده از کلید مخفی باشد، تغییرات در مصرف برق در برخی موارد میتواند برای نوسازی کلید استفاده شود. کانالهای جانبی میتوانند هم مبتنی بر نرمافزار و هم سختافزار باشند. Spectre معروف از چنین کانال جانبی مستقیماً در سیپییو استفاده میکند و برای سرقت اطلاعات حساس قابلیتهای گمانهزن اجرا را اکسپلویت میکند. افزون بر این برخی اوقات هیچ نیازی هم به وصل کردن ولتمتر به کامپیوتر برای نظارت مصرف برق سیپییو وجود ندارد زیرا آنها اغلب یک نسخه درونسازهای از آن دارند. استفاده از سیستمی برای نظارت متوسط مصرف برق پردازندههای اینتل یک حمله مرتبط با Hertzbleed از پیش توسعه داده شده است. اکنون برویم نگاهی کنیم به تنظیم پویای فرکانس سیپییو.
این با تکنیک DVFS میسر میشود که ولتاژ دینامیکی و مقیاسگیری فرکانس است. ولتاژ سیپییو در کنار فرکانس همچنین تغییر میکند تا تضمین دهد شرایط عملیاتی بهینه است (مصرف پایین برق در لود پایین و عملکرد پایدار در حداکثر قابلیت). محققین به تفصیل توضیح میدهند که چطور روی پردازندههای اینتل آزمایشات DVFS مختلف خود را انجام دادند (اینتل این فناوری را Turbo Boost میخواند). آنها با لود ناچیزی سیپییو را وزن دادند (محاسبات پایهای آریتمیک) و مشاهده کردند چطور فرکانس تغییر پیدا کرد. چندین الگو پدیدار شد: برای سادهسازی تا حد امکان بگذارید اینطور بگوییم که فرکانس CPU با یک مجموعه داده محاسباتی افزایش یافت اما نه با مجموعه داده محاسباتی دیگر. همچنین فرکانس افزایشیافتهای به رایانشهای سریعتری ختم شد و بر طبق آن نتیجه سریعتری هم بدست آمد.
بگذارید نگاهی بیاندازیم بر واژه فناوری سوم که به همه بحثها ربط پیدا میکند: برنامهنویسی زمان ثابت[2]. این وقتی صحبت از پیادهسازی الگوریتم رمزگذاری در برنامهای میشود اهمیت پیدا میکند. فرض کنید برنامهای داریم که عبارت خاصی را بعنوان ورودی داده است و خروجیها هم همان عبارتند اما به طور رمزگذاریشده.ما میتوانیم داده را ورودی کنیم اما نمیدانیم کلید مخفی رمزگذاری چیست که در عین حال نیز سعی داریم با مشاهده زمان اجرا آن را ایجاد کنیم زیرا زمان اجرای این کارکرد به داده ورودی بستگی دارد. این را میتوان با تلاش برای سرقت گاوصندوق با کد مخفی دیجیتال مقایسه کرد که به توالی اعداد واکنش مختلف نشان میدهد و یکجورهایی سرنخهای «گرم» و «سرد» به ما میدهد. بیشتر برنامههایی که الگوریتمهای رمزگذاری پیادهسازی میکنند دارای مکانیزم محافظتی برای جلوگیری از تلاش برای شناسای کلید به این طریق (اصل برنامهنویسی زمان ثابت) هستند. مهمترین نتیجه بررسی روی Hertzbleed این است که تنظیم دینامیک فرکانس سیپییو اصل برنامهنویسی زمان ثابت را –یعنی عدم تغییر در رمزگذاری- نقض میکند. و نویسندگان نشان دادند چطور از این حقیقت میتوان سوءاستفاده کرد.
آنها این کار را با تحت کنترل درآوردن یک سیستم مجهز به نرمافزار رمزگذاری دادههای واقعی و تغذیه در یک توالی کاراکتر انجام دادند که برنامه سپس سعی کرد رمزگشایی کند. ورودیها برای ایجاد شرایطی انتخاب شدند که به مهاجم اجازه میدهد کلید رمزگذاری را بازسازی کند. علاوه بر این، کلید از طریق یک کانال جانبی استخراج میشود - یعنی نشت داده به دلیل تغییر در فرکانس CPU و بر این اساس در زمان اجرای برنامه و زمان پاسخ به درخواست مهاجم رخ میدهد.
پیامدهای از قلمافتاده
در توضیح کمی پیچیدهترمان از Hertzbleed تقریباً 0.05 درصد اطلاعات واقعی ارائهشده توسط محققین را پوشش دادهایم. کلی ریزهکاری و اطلاعات جزئیتر مرتبط با درک کارایی آن هست که در این مقال نمیگنجد. به طور خاص محققین برای ایجاد شرایط برای میسر کردن نشتی از طریق زمان واکنش یا تغییر فرکانس از الگوریتم کپسولهسازی کلید SIKE استفاده کردند که مشابه است با همان حمله Spectre که پیشتر از آن گفتیم. این حمله برای ایجا شدن در نرمافزار مورد حمله به شرایط ویژه نیاز دارد تا سرقت دادههای مهم را ممکن کند. بر اساس نتایج این بررسی محال است بتوان گفت این آسیبپذیری صراحتاً کجاست: در سیپییو یا در خود برنامه. همچنین باید به این بعد پیادهسازی نیز اشاره کنیم:
گرچه محققین حمله را به طور عملی ارائه دادند ( و نه در سطح فرضیه) اما آن را تحت شرایط کنترلشدهای انجام دادند. این تغییر در واکنش به ازای هر داده همیشه پایدار بوده است اما اگر سیپییو همزمان سایر تسکهایی را اجرا کند که بر زمان واکنش تأثیر گذاشته و داده را شلوغتر کند چه؟ در آخر، حتی در چنین شرایط ایدهالی نیز بازسازی کلید رمزگذاری (در دو آزمایش مختلف) 36 و 89 ساعت زمان برد! در طول این زمان، هزاران درخواست به ازای هر ثانیه به برنامه رمزگذاری ارسال شد که تنها راهی بود برای تضمین اینکه همه قابلیتهای لازم عملیات نرمافزاری و سختافزاری با تولید نشت همسو بودند. این واقعاً زمان زیادی است! از این رو واکنش به چنین پژوهشی هم ابهاماتی داشت. از یک طرف آسیبپذیریها به شناساگرهای معمول تخصیص یافتند: CVE-2022-23823 برای اینتل و CVE-2022-24436 برای AMD. اینطور به نظر میرسد که با همه این تفاسیر مشکل ریشه در سیپییوها دارد.
اما دو شرکت اینتل و AMD گزارش دادند هیچ برنامهای برای ارائه آپدیت برای سیستمهای مورد حملهشان ندارد (برای اینتل سیپییوهای نسل 8 تا 11). در حقیقت تغییر در الگوریتم SIKE این حمله ترسیمشده را محال کرد. مایکروسافت و Cloudflare که از SIKE برای یکی از المانهای سیستمهای رمزگذاری خود استفاده میکنند نرمافزارهای انحصاری خود را به روز کردند. با این حال این بررسی اهمیت بسیار داشت. مانند Spectre در سال 2018 این این آخرین حمله کلاس جدید نخواهد بود. اگر یک نمونه از نشت داده توسط تنظیم دینامیک فرکانس سیپیسو پیدا شده پس بقیه هم بزودی سر و کلهشان پیدا خواهد شد. همچنین این بدنه کار مهمی برای کریپتوگرافرها به حساب میآید.
SIKE یک الگوریتم جدید است و کاندیدای عنوان «کریپتوگرافی پسا کوانتوم». در واقع از نظر استحکام در برابر هرگونه حمله کانال جانبی آنالیز شده است و کاملاً انعطاف پذیر است. اما مطالعه هرتزبلید نشان داد که گزینههای جدیدی روی کار آمده اند. در مجموع، همانطور که اغلب در مورد چنین مطالعاتی اتفاق میافتد، این حمله "کشف" شد اما نمیتوانست - به طور کامل و با موفقیت - به طور واقعی اجرا شود. توسعه دهندگان CPU و برنامههایی که به ویژه به هک حساس هستند، نتیجهگیریهای خود را انجام میدهند و قبل از اینکه امکان سرقت چیزی وجود داشته باشد، تغییراتی ایجاد میکنند. اما احتمال کمی وجود دارد که دفعه بعد این یا سایر محققین چیزی را بیابند که به مهاجمان اجازه میدهد، مثلاً، ترافیک شبکه رمزگذاری شده را رهگیری کنند یا در عین ناشناس ماندن، رمزگذاری را بشکنند.
با کمی تخیل میتوان طرحی را که در این مطالعه نشان داده شده است به این نسبت پر و بال داد. اما این هنوز باید ثابت شود، و مطالعه Hertzbleed (و مشکلی که ما در توصیف آن به زبان ساده داشتیم) نشان میدهد که این کار آسانی نیست. برای آسیبپذیریهای کلاس Spectre، چنین پیشرفتی در بیش از چهار سال گذشته نشان داده نشده است. در اینجا نیز به احتمال زیاد همه چیز به همین شکل باقی خواهد ماند: تا حدود یک سال دیگر، گزارش دیگری منتشر خواهد شد که کمی پیشرفت کرده و گزارش قبلی را روشن میکند. و این یک نکته مثبتی است. از این گذشته، ما در حال حاضر به اندازه کافی با امنیت اطلاعات مشکل داریم!
[1] Hertz
[2] constant-time programming
منبع: کسپرسکی آنلاین (ایدکو)
کسپرسکی اسم یکی از بزرگترین شرکتهای امنیتی و سازنده آنتی ویروس است که برخی از کاربران اشتباهاً این شرکت و محصولات آنتی ویروس آن را با عناوینی نظیر کسپرسکای،کاسپرسکی، کسپراسکای، کسپراسکای، و یا کاسپراسکای نیز میشناسد. همچنین لازم به ذکر است مدیرعامل این شرکت نیز یوجین کسپرسکی نام دارد.