گروهی از محققان یک حمله افشای داده جدید را کشف کردهاند که بر معماریهای CPU مدرنی تأثیر میگذارد که از speculative execution (معروف به اجرای گمانه زنی یا اجرای پیش بینانه) پشتیبانی میکنند. این حمله که GhostRace (CVE-2024-2193) نامیده میشود، نوعی آسیب پذیری CPU اجرای گذرا[1] است که با نام Spectre v1 (CVE-2017-5753) شناخته میشود. این رویکرد، اجرای پیش بینانه و race condition (وضعیت رقابتی یا شرایط مسابقه) را ترکیب میکند.
تصور کنید کامپیوتر شما مانند یک اَبَرقهرمان است و همیشه سعی میکند حدس بزند که در مرحله بعد چه کاری از او می خواهید انجام دهد تا بتواند آن را فوق العاده سریع به انجام رساند. اما یک فریبکار زیرک به نام GhostRace وجود دارد که میتواند حدسهای اشتباه را در گوش ابرقهرمان زمزمه کند. وقتی ابرقهرمان به این حدسهای اشتباه گوش میدهد، میتواند به طور تصادفی رازهایی را به فریبکار نشان دهد که نباید نشان میداد. افرادی که نحوه کار رایانهها را درک میکنند، اکنون سعی دارند به ابرقهرمان آموزش دهند که به سخنان فریبکار گوش ندهد، بنابراین تمام اسرار ما امن میمانند و فقط ما میتوانیم آنها را مشاهده کنیم.
محققان دریافتند که GhostRace به طور بالقوه میتواند به مهاجمان اجازه دهد تا داده های محافظت شده مانند رمزهای عبور و کلیدهای رمزگذاری را تحت شرایط خاصی مشاهده کنند. این شرایط شامل دسترسی فیزیکی به ماشین یا افزایش سطح دسترسی میشود که اجرای این اکسپلویت را چالشبرانگیزتر میکند، اما به دلیل تأثیر بالقوه آن بر حریم خصوصی داده، همچنان یک نگرانی مهم است.
GhostRace با ایجاد خطا در فرآیند اجرای پیش بینانه عمل میکند. این اهرم، ترکیبی از اجرای پیش بینانه و race condition است.
اجرای پیش بینانه، یک تکنیک بهینهسازی عملکرد برنامه است که در آن تسکها را پیش از نیاز واقعی پیش بینی و پردازش میکند. یک سیستم کامپیوتری وظایفی را انجام میدهد که ممکن است واقعا به آن نیازی نباشد. فرآیند محاسبه پیش از آن که مشخص شود آیا واقعاً به این تسک نیاز هست یا خیر صورت میپذیرد تا از تأخیری که باید با انجام کار پس از مشخص شدن نیاز به آن ایجاد شود، جلوگیری به عمل آورد. چنانچه در نهایت مشخص گردد که تسک مورد نیاز نبوده است، اکثر تغییرات ایجاد شده توسط کار بازگردانده میشود و نتایج نادیده گرفته خواهند شد. هدف این است که در صورت وجود منابع اضافی سیستم، همروندی بیشتری ارائه گردد.
GhostRace از این ویژگی برای دسترسی غیرمجاز به دادههای حساس با دستکاری speculative race conditions (SRC) استفاده میکند.
race condition نیز وضعیت نامطلوبی است که زمانی رخ میدهد که دو یا چند فرآیند تلاش میکنند به یک منبع مشترک بدون هماهنگی مناسب دست یابند که در نتیجه منجر به نتایج متناقض میشود و دریچهای از فرصتها را برای مهاجم به منظور انجام اقدامات مخرب باز میکند.
تمام اصول اولیه همگام سازی رایج که با استفاده از شاخه های شرطی[2] اجرا میشوند را میتوان از نظر ریزمعماری در مسیرهای پیش بینانه با استفاده از حمله پیش بینی نادرست شاخه[3] دور زد و تمام مناطق حیاتی عاری از وضعیت معماری را به SRC تبدیل کرد که آنگاه مهاجمان خواهند توانست اطلاعات را از هدف مورد نظر استخراج کنند.
یافتههای گروه تحقیقاتی در IBM Research Europe و VUSec موجب شناسایی این آسیب پذیری شده است. گروه تحقیقاتی VUSec، چندی پیش در دسامبر 2023 نیز حمله کانال جانبی دیگری به نام SLAM را فاش کرد که پردازندههای مدرن را مورد هدف قرار میداد.
Spectre به دستهای از حملات کانال جانبی اشاره دارد که از پیشبینی شاخه[4] و اجرای پیش بینانه در CPUهای مدرن برای خواندن دادههای دارای سطح دسترسی بالا در حافظه و دور زدن حفاظتهای جداسازی بین برنامهها، سوء استفاده میکند.
در حالی که اجرای پیش بینانه یک تکنیک بهینهسازی عملکرد است که توسط اکثر پردازندهها استفاده میشود، حملات Spectre از این واقعیت استفاده میکنند که پیشبینیهای اشتباه، آثاری از دسترسیها یا محاسبات حافظهای در حافظه پنهان پردازنده، باقی خواهند گذاشت.
محققان حمله Spectre در ژانویه ۲۰۱۸ خاطرنشان کردند که حملات Spectre، قربانی را وادار میکند تا عملیاتی را که در طول پردازش ترتیبی سریالی دستورات برنامه رخ نمیدهد، انجام دهد و اطلاعات محرمانه قربانی را از طریق یک کانال مخفی به مهاجم برساند.
کشف این آسیبپذیریها – در کنار Meltdown – از آن زمان به بررسی گستردهتر معماری ریزپردازنده منجر شده است و حتی برنامه شمارش نقاط ضعف مشترک MITER (CWE)را بر آن داشت تا چهار نقطه ضعف جدید مرتبط با ریز معماریهای سختافزاری را که از اجرای گذرا (از CWE-1420 تا CWE-1423) ناشی میشوند، در اواخر ماه گذشته اضافه کند.
چیزی که GhostRace را قابل توجه میکند این است که یک مهاجم احراز هویت نشده را قادر میسازد تا داده های دلخواه را از پردازنده با استفاده از race conditions برای دسترسی به مسیرهای کد اجرای پیش بینانه با استفاده از آنچه حمله “Speculative Concurrent Use-After-Free (SCUAF) ” نامیده میشود، استخراج کند.
مرکز هماهنگی CERT (CERT/CC) در مشاورهای توضیح داد که آسیب پذیری SRC از نظر ویژگی و استراتژی بهره برداری، مشابه race condition کلاسیک است.
با این حال، آسیب پذیری SRC از این جهت متفاوت میباشد که مهاجم از race condition گفته شده در مسیری که به طور موقت اجرا شده و از یک شاخه پیش بینانه اشتباه نشات میگیرد (مشابه Spectre v1)، سوء استفاده میکند و قطعه کد یا ابزاری را هدف قرار میدهد که در نهایت اطلاعات را برای مهاجم فاش میکند.
نتیجه نهایی این حمله این است که به یک مهاجم با دسترسی به منابع CPU اجازه میدهد تا به داده های حساس دلخواه از حافظه میزبان دست یابد.
هر نرم افزار مانند سیستم عامل، هایپروایزر، و غیره که همگام سازی اولیه را از طریق شاخه های شرطی بدون هیچ گونه دستورالعمل سریال سازی در آن مسیر پیاده سازی میکند و بر روی هر گونه ریزمعماری (مانند، x86، ARM، RISC-V، و غیره) اجرا میشود، آسیبپذیر میباشد که به شاخه های شرطی اجازه میدهد تا به صورت فرضی اجرا شوند.
AMD اعلام کرد که دستورالعملهای موجود برای Spectre همچنان برای مقابله با این آسیب پذیری قابل استفاده است. پشتیبانان هایپروایزر منبع باز Xen نیز اذعان داشتند که تمامی نسخه ها، تحت تأثیر این آسیب پذیری قرار دارند؛ اگرچه بعید است که تهدید امنیتی جدی ایجاد کند.
تیم امنیتی Xen وصلههای امنیتی از جمله افزودن مکانیزم جدید LOCK_HARDEN در x86 مشابه BRANCH_HARDEN موجود را ارائه کرده است.
[1] transient execution
[2] conditional branches
[3] branch misprediction attack
[4] branch prediction