گروهی از محققان از دانشگاههای آمریکا، استرالیا و اسرائیل تکنیک حمله کانال جانبی جدیدی را برای سوء استفاده از آسیبپذیریهای کلاس Spectre در مرورگرهای مبتنی بر موتور کرومیوم پیشنهاد کردهاند. این حمله با اسم رمز Spook.js به شما این امکان را می دهد که مکانیسم جداسازی سایت را با اجرای کد جاوا اسکریپت دور بزنید و محتویات کل فضای آدرس فرآیند فعلی را بخوانید. به داده های صفحاتی که در برگه های دیگر اجرا می شوند، اما در همان فرآیند پردازش می شوند، دسترسی داشته باشید.
از آنجایی که کروم سایتهای مختلفی را در فرآیندهای مختلف اجرا میکند، توانایی انجام حملات عملی به سرویسهایی محدود میشود که به کاربران مختلف اجازه میدهد صفحات خود را میزبانی کنند. این روش اجازه می دهد تا از صفحه ای که مهاجم فرصت دارد کد جاوا اسکریپت خود را در آن جاسازی کند، وجود صفحات دیگری را که توسط کاربر از همان سایت باز شده است، تعیین کند و اطلاعات محرمانه را از آنها استخراج کند، به عنوان مثال، اعتبارنامه یا جزئیات بانکی جایگزین شده است. توسط سیستم پر کردن خودکار فیلدها در فرم های وب. به عنوان نمونه، نشان داده میشود که اگر صاحب وبلاگ وبلاگ مهاجمی را که در همان سرویس در یک برگه دیگر میزبانی میشود، باز کند، چگونه میتوانید به وبلاگ شخص دیگری در سرویس Tumblr حمله کنید.
یکی دیگر از گزینههای استفاده از این روش، حمله به افزونههای مرورگر است که به هنگام نصب افزونهای که توسط مهاجم کنترل میشود، اجازه میدهد تا دادهها را از سایر افزونهها استخراج کند. به عنوان مثال، ما نشان می دهیم که چگونه با نصب یک افزونه مخرب می توانید اطلاعات محرمانه را از مدیر رمز عبور LastPass استخراج کنید.
محققان نمونه اولیه یک اکسپلویت را منتشر کرده اند که در کروم 89 روی سیستم هایی با CPUIntel i7-6700K و i7-7600U کار می کند. هنگام ایجاد این اکسپلویت، نمونههای اولیه کد جاوا اسکریپت که قبلاً توسط گوگل منتشر شده بود، برای انجام حملات کلاس Spectre استفاده شد. خاطرنشان میشود که محققان توانستند برای سیستمهای مبتنی بر پردازندههای Intel و Apple M1، اکسپلویتهای کاری آماده کنند که امکان سازماندهی خواندن حافظه را با سرعت ۵۰۰ بایت در ثانیه و دقت ۹۶ درصد فراهم میکند. فرض بر این است که این روش برای پردازنده های AMD نیز قابل اجرا است، اما امکان تهیه یک اکسپلویت کاملاً کاربردی وجود نداشت.
این حمله برای هر مرورگر مبتنی بر موتور کرومیوم از جمله Google Chrome، Microsoft Edge و Brave قابل اجرا است. محققان همچنین معتقدند که این روش میتواند برای کار با فایرفاکس سازگار باشد، اما از آنجایی که موتور فایرفاکس بسیار متفاوت از کروم است، کار روی ایجاد چنین اکسپلویتی برای آینده باقی مانده است.
برای محافظت در برابر حملات مبتنی بر مرورگر مربوط به اجرای گمانهزنی دستورالعملها، Chrome تقسیمبندی فضای آدرس را پیادهسازی میکند - جداسازی جعبه ایمنی به جاوا اسکریپت اجازه میدهد فقط با اشارهگرهای 32 بیتی کار کند و حافظه کنترلکنندهها را در انبوهی از 4 گیگابایت به اشتراک بگذارد. برای دسترسی به کل فضای آدرس فرآیند و دور زدن محدودیت 32 بیتی، محققان از تکنیکی به نام Type Confusion استفاده کردند که موتور جاوا اسکریپت را مجبور به پردازش یک شی با نوع نادرست می کند، که امکان تشکیل یک 64 بیتی را فراهم می کند. اشاره گر بر اساس ترکیبی از دو مقدار 32 بیتی است.
ماهیت حمله این است که هنگام پردازش یک شی مخرب طراحی شده خاص در موتور جاوا اسکریپت، شرایطی ایجاد می شود که منجر به اجرای حدس و گمان دستورالعمل هایی می شود که به آرایه دسترسی دارند. شی به گونه ای انتخاب می شود که فیلدهای کنترل شده توسط مهاجم در ناحیه ای که نشانگر 64 بیتی استفاده می شود قرار می گیرد. از آنجایی که نوع شی مخرب با نوع آرایه در حال پردازش مطابقت ندارد، در شرایط عادی، چنین اقداماتی در کروم توسط مکانیزمی برای بهینهسازی کد مورد استفاده برای دسترسی به آرایهها مسدود میشوند. برای حل این مشکل، کد حمله Type Confusion در یک بلوک شرطی "if" قرار می گیرد که در شرایط عادی فعال نمی شود، اما در حالت فرضی اجرا می شود، اگر پردازنده به اشتباه انشعاب بیشتر را پیش بینی کند.
در نتیجه، پردازنده به طور فرضی به اشاره گر 64 بیتی تولید شده دسترسی پیدا می کند و پس از تعیین یک پیش بینی ناموفق، وضعیت را به عقب برمی گرداند، اما آثار اجرا در حافظه پنهان مشترک باقی می ماند و می توان با استفاده از روش های تشخیص کش کانال جانبی که تغییرات را تجزیه و تحلیل می کند، بازیابی کرد. زمانهای دسترسی به دادههای حافظه پنهان و ذخیرهنشده. برای تجزیه و تحلیل محتویات کش در شرایط عدم دقت کافی تایمر موجود در جاوا اسکریپت، از روش پیشنهادی گوگل استفاده می شود که استراتژی حذف کش Tree-PLRU مورد استفاده در پردازنده ها را فریب می دهد و با افزایش تعداد چرخه ها، اجازه می دهد تا زمانی که یک مقدار در حافظه پنهان وجود دارد و وجود ندارد، تفاوت زمانی را به طور قابل توجهی افزایش دهید.
منبع: opennet.ru