روابط عمومی شرکت ایدکو (توزیعکنندهی محصولات کسپرسکی در ایران)؛ در تاریخ 14 نوامبر، گوگل بولتنی منتشر کرد که در آن آسیبپذیریای در چندین پردازندهی اینتل (شروع از نسل Ice Lake منتشرشده در سال 2019) گزارش داده شده بود. این آسیبپذیری بالقوه میتواند به انکار سرویس، افزایش مزیت یا بسته شدن اطلاعات حساس منجر شود. تا زمان نگارش این مقاله بهروزرسانیهای میکروکد که مسئول رسیدگی به این مسائل بودند برای نسل 12 و 13 پردازندههای اینتل (Alder Lake و Raptor Lake به ترتیب) منتشر شدهاند. پچ برای پردازندههای نسل 10 و 11 Ice Lake) و Tiger Lake) در حال انجام است. فهرست کامل پردازندههای درگیر در وبسایت اینتل در قالب صفحه گسترده مبسوط وجود دارد. طبق گفتهی نمایندگان اینتل، مهندسین این شرکت از رفتار غیرعادی پردازندهها خبر داشتند اما این مسئله را غیرحیاتی خوانده و از این رو برنامه رفع آن به نیمه اول 2024 موکول شد. با این وجود، وقتی محققین گوگل به طور مستقل اقدام به کشف این مشکل کردند شرایط تغییر کرد. در حقیقت، همه جزئیات در مورد این آسیبپذیری از متخصصین گوگل خصوصاً از همین مقاله که تاویس اورماندی ارائه داده بدست آمده است.
آزمون فاز[1] پردازنده
تاویس اورماندی چندین آسیبپذیری اصلی را در برنامهها و دستگاههای مختلف کشف کرده است. اخیراً نیز آسیبپذیری Zenbleed را در پردازندههای AMD پیدا کرده است. آنجا بود که تاویس در واقع در مورد انجام فازینگ یا آزمون فاز برای پیدا کردن آسیبپذیریهای سختافزاری صحبت کرد. فازینگ متود تستی است شامل فید کردن اطلاعات رندوم در ورودی سیستم اطلاعاتی مورد آزمایش. معمولاً فازینگ برای خودکارسازی سرچ آسیبپذیریهای نرمافزاری استفاده میشود: برای تعامل با برنامه و نظارت وضعیت آن، ابزار فازینگ ویژهای ساخته شد و پس از آن دهها یا صدها تست برای شناسایی رفتار ناهنجار در کد تستشده انجام شد. وقتی حرف از پردازندههای تست میشود اوضاع پیچیدهتر نیز میشود. باید برنامههای رندومی را تولید کرد که بدون شکستی از سمت خود اجرا شده و بشود آنها را روی پردازنده اجرا کرد. چطور میشود در چنین شرایطی فرق بین رفتار نرمال پردازنده را از رفتار غیرنرمال تشخیص داد؟ از اینها گذشته هر خطایی در طول اجرای نرمافزار به خرابی منجر نمیشود. اورماندی تکنیکی ارائه داده است که همان کد رندوم همزمان روی چندین پردازنده اجرا میشود. به لحاظ تئوری، خروجی برنامه همسان باید همسان باشد اما اینطور نیست! و این نشان میدهد مشکلی وجود دارد. همین رویکرد بود که نشان داد در پردازندههای اینتل، آسیبپذیری وجود دارد.
کدی بیهوده اما خطرناک
برای درک اینکه چطور آسیبپذیری Reptar کار میکند باید برویم سروقت پایینترین درجه برنامهریزی- کد ماشین که پردازندهها مستقیم آن را اجرا میکنند. زبان اسمبلی برای بازنمایی سادهترِ دستورالعملهای این چنین پایه استفاده میشود. یک قطعه کد زبان اسمبلی چیزی شبیه به این است:
آخرین خط دارای دستورالعمل movsb است که به پردازنده میگوید داده ها را از یک ناحیه حافظه به منطقه دیگر منتقل کند. قبل از آن اصلاح کننده rep وجود دارد که نشان میدهد دستور movsb باید چندین بار پشت سر هم اجرا شود. چنین پیشوندهایی برای همه دستورالعمل ها مرتبط نیستند. پردازنده های اینتل میدانند که چگونه از پیشوندهای بی معنی عبور کنند. Tavis Ormandy مثالی را ارائه میدهد:
بیایید پیشوند دیگری به نام rex.rxb اضافه کنیم. این در کنار معماری x86-64 برای کنترل هشت رجیستر پردازنده اضافی معرفی شد. اگرچه دقیقاً چه کاری انجام میدهد چندان مهم نیست - تنها چیزی که باید بدانیم این است که این پیشوند هنگام استفاده با دستور movsb معنی ندارد:
در واقع، این پیشوند رفتار پردازندههای اینتل را تغییر میدهد (از Ice Lake شروع میشود)، اگرچه اینطور نیست. در این نسل از پردازنده ها، فناوری به نام "حرکت سریع کوتاه تکراری" اضافه شد. این برای تسریع عملیات مربوط به حرکت داده در RAM طراحی شده است. از جمله اینکه این فناوری می تواند اجرای دستور rep movsb را بهینه کند. همراه با ویژگی «Fast Short Repeat Move»، نقصی در منطق پردازنده وجود داشت که ابتدا توسط مهندسین اینتل و بعداً توسط کارشناسان گوگل کشف شد.
تهدید فوری
اجرای این دستورالعمل که رفتار طبیعی پردازنده را مختل میکند، به چه چیزی میتواند منجر شود؟ به گفته Ormandy، نتایج غیر قابل پیشبینی است. محققین اجرای کد رندوم را مشاهده کردند که بخشهایی از برنامه نادیده گرفته شد و شکستهای مختلف از سمت پردازنده همگی دست به دست دادند تا شکستی عظیم صورت گیرد. در مورد دومی (شکستهای مختلف از سمت پردازنده) باید آسیبپذیری روی جفتی از هستههای پردازنده همزمان اکسپلویت شود. برای چک کردن این آسیبپذیری در سیستمهای خود، تیمی از محققین گوگل برنامه تست تهیه کردند. رفتار غیرقابل پیشبینی خود به اندازه کافی بد است. مهمترین فرق بین این باگ پردازنده و همه باگهای دیگر در این است که این مستقیم ارائهدهندگان خدمات میزبانی سرور خصوصی مجازی یا ارائهدهندگان راهکار کلود را به طور کلی تهدید میکند. این صنعت بر پایه توانایی در اشتراکگذاری سرور واحد نیرومند از میان صدها کلاینت دیگر (هر یک سیستم عامل مجازی خود را مدیریت میکنند) بنا شده و مهم است که تحت هیچ شرایطی کلاینت نباید دادههای کلاینت دیگر یا دادههای میزبان را ببیند. حال توصر کنید کلاینتی بتواند برنامهای را در سیستم عامل مجازی خود که باعث خرابی میزبان میشود اجرا کند. دست کم این میتواند روی ارائهدهنده حمله DoS را فعال کند. در واقع، اورماندی هیچ سناریوی اکسپلویت دیگری را ارائه نکرد و این حقیقت را بازگو نمود که سخت میشود رفتار پردازندهای را در حالت بلک باکس یا جعبه سیاه پیشبینی کرد. هرچند از حیث نظری این امکان وجود دارد که مهاجم بتواند به جای تکیه بر شکستهای رندوم، کد مخرب خاصی را اجرا کند. نمایندگان اینتل خود اعتراف کردند که اجرای کد و بسته شدن اطلاعات امکانپذیر است. از این رو به شدت مهم است که آپدیتهای میکروکد آمادهشده توسط اینتل، نصب شود (دست کم برای ارائهدهندگان سرویس میزبانی مجازی).
[1]Fuzzing: آزمون فاز یک فرایند آزمون نرمافزار است که شامل فراهم کردن دادههای ناصحیح، غیرمنتظره، اعداد تصادفی بهعنوان ورودی به یک نرمافزار رایانهای است. برنامه معمولاً برای رخدادهایی از جمله کرش، شکست Assertionهای داخلی یا برای یافتن نشتهای حافظه احتمالی استفاده میشود. به طور معمول، فازرها جایی استفاده میشوند که برنامه ورودی ساختاریافته دریافت میکند.
منبع: کسپرسکی آنلاین (ایدکو)
کسپرسکی اسم یکی از بزرگترین شرکتهای امنیتی و سازنده آنتی ویروس است که برخی از کاربران اشتباهاً این شرکت و محصولات آنتی ویروس آن را با عناوینی نظیر کسپرسکای،کاسپرسکی، کسپراسکای، کسپراسکای، و یا کاسپراسکای نیز میشناسد. همچنین لازم به ذکر است مدیرعامل این شرکت نیز یوجین کسپرسکی نام دارد.