پژوهشگران گروه VUSec از دانشگاه Vrije Universiteit آمستردام و Scuola Superiore Sant’Anna ایتالیا، گونه جدیدی از حمله Spectre v2 را معرفی کردهاند که پردازندههای شرکتهای Intel، AMD و Arm را تحت تأثیر قرار میدهد.
مکانیسم حمله Branch Target Reuse (BTR)
این حمله که Branch Target Reuse (BTR) نامیده شده است، کامپایلرهای Just-In-Time (JIT) را هدف قرار میدهد؛ ابزارهایی که هسته سیستمعاملها، مرورگرهای وب و محیطهای اجرای کد (Runtimes) به شدت به آنها وابسته هستند.
در این روش، مهاجم با اجرای کد روی سیستم هدف، از BTR برای سرقت دادههای حساس از حافظه (Memory)، مانند هشهای رمز عبور (Password Hashes)، استفاده میکند. اگرچه پژوهشگران هنوز یک اکسپلویت کامل برای مرورگرها نساختهاند، اما امکان اجرای این حملات از طریق صفحات وب مخرب را محتمل دانستهاند.
نحوه عملکرد فنی
حمله BTR از نحوه مدیریت کدهایی که در زمان اجرا (Runtime) تغییر میکنند، بهره میبرد. نکته کلیدی این است که در حالی که CPUهای مدرن، انسجام کد معماری را پس از تغییرات خودکار (Self-modification) بازیابی میکنند، اما لزوماً ورودیهای قدیمی پیشبینی شاخه غیرمستقیم (Indirect Branch Prediction) را باطل نمیکنند.
در موتورهای JIT، این پیشبینیهای قدیمی میتوانند پس از حذف کد اصلی باقی بمانند و زمانی که کد جدیدی در همان فضای حافظه نوشته شود، مجدداً مورد استفاده قرار گیرند. این وضعیت منجر به ایجاد یک قابلیت speculative execute-after-free میشود که به مهاجم اجازه میدهد اجرای گمانهزن (Speculative Execution) را به سمت کدهای جدید در آفستهای منسوخ منحرف کند.
تأثیر بر هسته لینوکس و مرورگرها
- هسته لینوکس: پژوهشگران دو اکسپلویت End-to-End علیه هسته لینوکس توسعه دادند که از cBPF سوءاستفاده میکند. در پردازندههای مدرن Intel، این اکسپلویت میتواند حافظه دلخواه را نشت داده و تمامی مکانیزمهای دفاعی فعال را دور بزند. در یک دمو، آنها موفق شدند هش رمز عبور کاربر root را پس از بارگذاری در حافظه، استخراج کنند.
- مرورگر فایرفاکس: در Firefox، این حمله میتواند از طریق کدهای JavaScript در یک وبسایت مخرب اجرا شود. به دلیل عدم تکمیل کامل قابلیت Site Isolation در موزیلا، دادههای تبهای دیگر ممکن است در فضای آدرس مهاجم قرار گرفته و نشت کنند.
- GraalVM: در محیط GraalVM، حمله BTR میتواند باعث دور زدن Memory Masking شود که برای محافظت از Sandbox در برابر Spectre استفاده میشود.
راهکارهای مقابله و وضعیت اصلاحیه
تولیدکنندگان CPU اشاره کردهاند که مکانیزمهای موجود مانند Indirect Branch Prediction Barrier (IBPB) میتوانند اثرات BTR را کاهش دهند، اما پیادهسازی نهایی باید در سطح نرمافزار صورت گیرد.
توسعهدهندگان هسته لینوکس یک اصلاحیه برای معماری x86 معرفی کردهاند که هرگاه یک برنامه cBPF در ناحیهای از حافظه قرار گیرد که قبلاً توسط کدهای BPF استفاده شده بود، یک IBPB را در تمامی هستههای CPU فعال میکند. شرکت Oracle نیز برخی اصلاحات را اعمال کرده و موزیلا در حال حاضر اولویت خود را بر تکمیل Site Isolation قرار داده است.
در نهایت، پژوهشگران هشدار دادند که هیچ CPU فعلی مکانیزمی برای همگامسازی دائمی پیشبین شاخه (Branch Predictor) با کدهای موجود در حافظه ندارد و تا زمان ارائه راهکار سختافزاری توسط سازندگان، این آسیبپذیری به صورت بنیادین باقی خواهد ماند.