این شما و این اولین حمله مبتنی بر Spectre به نام Spook.js

12 مهر 1400 این شما و این اولین حمله مبتنی بر Spectre به نام Spook.js

روابط عمومی شرکت ایدکو (توزیع‌کننده‌ی محصولات کسپرسکی در ایران)؛ حمله فیشینگ منطقی است: کلیک روی یک لینک، فرود روی صفحه‌ای مخرب، وارد کردن یک سری اطلاعات و بعد هم سرقت آن‌ها توسط مهاجم. حال این مدل حمله را در نظر بگیرید: کلیک روی یک لینک و سرقت داده توسط مهاجم. بله درست است، امروز قرار است از صفحات آلوده‌ای بگوییم که برای سرقت داده بدون نیاز به وارد کردن اطلاعات از سوی قربانی قابلیت اساسی سی‌پی‌یو را اکسپلویت می‌کنند. این را هم بگوییم که آسیب‌پذیری مربوطه اگر رفعش محال نباشد دست کم بسیار دشوار خواهد بود. در سال 2018، محققین اثبات کردند این سناریو به لحاظ تئوریک امکان‌پذیر بود. بعدش هم در عمل شاهد دو متغیر اولیه آسیب‌پذیری Spectre بودیم. سه سال بعد سپتامبر 2021 اولین حمله در واقعیت بودیم که از  Spectre v1. تحت عنوان Spook.js استفاده می‌کرد. مفهوم این حمله پیچیده است اما در ادامه آن را خلاصه خدمتتان شرح دهیم.

پیشینه Spectre v1

اخبار دو حمله اول از این خانواده –منظور Spectre و Meltdown است- سال 2018 سر و صدا کرد.  این حملات مکانیزم پیش‌بینی شاخه[1] را که برای سرعت‌بخشی به اجرای فرمان طراحی شده است (یافت‌شده در همه سی‌پی‌یوهای مدرن) اکسپلویت کرده بود.

وقتی کاربری برای لاگین به وبسایتی پسورد خود را وارد می‌کند –اگر پسورد درست باشد- یک مجموعه دستورالعمل‌ اجرا می‌شود. اگر نه، مجموعه دیگری اجرا می‌شود. با این حال –و این جاییست که پیش‌بینی شاخه ظاهر می‌شود- پیش از دریافت جواب، سی‌پی‌یو شروع می‌کند به اجرای مجموعه‌ای از دستورالعمل‌هایی که فکر می‌کند از همه بیشتر -احتمالاً- بدان نیاز دارد. در مثال ما اگر پسورد صدها بار پیش از این درست وارد شده باشد، کاربر ارتقای عملکرد دریافت می‌کند. اگر نه، سی‌پی‌یو دستورالعمل‌های اجراشده را دور انداخته و مجموعه دیگری را اجرا می‌کند. در حمله آسیب‌پریزی Spectre یک اقدام برای خوانش محل داده انجام می‌شود؛ محلی که برنامه هیچ دسترسی بدان ندارد. در مرحله اول این حمله چندین تماس صورت می‌گیرد تا محل‌های دسترسی داده باز شود.
بدین‌واسطه سیستم پیش‌بینی شاخه آموزش می‌بیند تا عملیات‌های ممنوعه را اجرا کند. CPU با استفاده از پیش‌بینی شاخه، عملیات را زودتر اجرا می‌کند زیرا به برنامه‌ای عادت کرده که درخواست می‌دهد داده‌هایی را بخواند که مجوز خوانده شدن دارند اما یک بررسی نشان می‌دهد که این برنامه منع دسترسی دارد؛ بنابراین محاسبات اجراشده دور انداخته می‌شوند. داده‌های خوانده‌شده توسط سی‌پی‌یو مدتی در Cache–مموری اختصاصی سی‌پی‌یو- ذخیره می‌شوند. سپس نوبت بخش جذاب می‌رسد: این پروسه آلوده وقتی می‌بیند راهی برای خواندن مستقیم داده‌های محرمانه از کش سی‌پی‌یو وجود ندارد، برای سرقت همان داده از حمله کانال کناری[2] استفاده می‌کند. این شامل سنجش سرعت دسترسی به برخی اطلاعات می‌شود. اگر نسبتاً کم باش بدین‌معناست که داده در کش قرار دارد. اگر حجم داده زیاد باشد یعنی از یک رم معمول ذخیره شده است. نتیجه‌ی توالی اقدام به خوانش داده، نشتی در اطلاعات محرمانه است. نتیجه نقصی است اساسی در سی‌پی‌یو که تنها راه حلش غیرفعال کردن کامل پیش‌بینی شاخه است که البته به طور جدی‌ای عملکرد سی‌پی‌یو تحت تأثیر قرار می‌گیرد. از این روست که می‌گوییم حملات Spectre محدودیت‌های بسیار دارند:

  • مهاجم باید قادر به اجرای کد برنامه روی کامپیوتر یا دستگاه موبایل هدف باشد
  • حمله مستلزم یک برنامه کدشده با هدف خاص است تا بشود شرایط و بستر را برای یک حمله موفق مهیا کرد
  • حتی اگر حمله‌ای موفق هم باشد، استخراج داده روند کندی خواهد داشت –صدها بایت در ثانیه- و خوانش خطاها امری است بعید
  • به طور کلی، سرقت داده‌های محرمانه مورد نظر همچون پسورد، کلیدهای رمزگذاری و غیره به چندین شرایط نیازمندند

Spook.js- کاربرد Spectre v1 در دنیای واقعی

ممکن است اینطور نتیجه‌گیری شود که Spectre آنقدرها هم خطرناک نیست. از اینها گذشته اگر مهاجم بتواند کدی را روی کامپیوتر هدف اجرا کند، اکسپلویت یکی از آن همه آسیب‌پذیری در سیستم عامل یا برنامه‌های نصب‌شده برای افزایش مزایا و سرقت داده‌ها به مراتب آسانتر است. درست است اما وب پیج‌های مدرن همچنین شامل مقادیر زیادی کد برنامه هستند که در مرورگر روی کامپیوتر کاربر اجرا می‌شوند. درست به همین روش است که حملات  Spook.js آسیب‌پذیری Spectre v1 را اکسپلویت کردند. صفحه آلوده لود می‌کند، مرورگر کد را اجرا کرده و مجرم سایبری هم داده‌های محرمانه را سرقت می‌کنند. نویسندگان این گزارش برخی از این حملات عملی را نشان دادند. نخست آن‌ها از Tumblr پسورد کاربری را سرقت کردند و دوم، داده‌هایی را از Lastpass. سوم تصویر آپلودشده‌ی کاربر را از یک ذخیره‌گاه خصوصی روی سرور گوگل رهگیری کردند. ویژگی مرورگر گوگل‌کروم همه اینها را ممکن می‌سازد. از زمان انتشار اطلاعات در مورد Spectre توسعه‌دهندگان کروم با اجبار وبسایت‌ها برای لود شدن در ایزولاسیون، اقداماتی انجام دادند در راستای مبارزه با حملات بالقوه. از آنجایی که هر وبسایتی پروسه خود را ایجاد می‌کند، کد آلوده روی یک پیج نمی‌تواند برای سرقت داده از منبع دیگری مورد استفاده قرار گیرد. فقط یک استثنا وجود دارد: چندین پیج از یک سایت یا دامنه در یک پروسه مرورگر مشترک دسته‌بندی گروهی می‌شوند. اگر کد مخرب (نوشته‌‌شده به زبان جاوااسکریپت) روی یکی از آن اجرا شده باش، داده‌ها روی صفحات دیگر را می‌توان دستبرد زد.

حمله Spectre.js روی Tumblr

Tumblr به عنوان یک بلاگ جمعی دست کم به لحاظ تئوری می‌تواند میزبان کد مخرب باشد. بدین‌تریب با توجه به باز بودن صفحه مخرب در یک تب، اگر کاربری تلاش داشته باشد در تب دیگری روی سرویس به اکانت‌های خود لاگین کند، مرورگر نام کاربری و پسورد را ذخیره کرده و به طور خودکار آن‌ها را پر می‌کند- که سپس کد مخرب می‌تواند آن‌ها را سرقت کند. یک حمله با اکسپلویت آسیب‌پذیری Spectre می‌تواند به طور مماس‌گونه‌ای با تب دیگر از همان سایت تعامل ایجاد کرده و با ابزارهای غیرمستقیم داده‌ها را سرقت کند. حمله موفقی که از این رویکرد استفاده می‌کند از خود تقریباً هیچ آثاری باقی نمی‌گذارد.

حمله Specter.js روی LastPass

حمله به پسورد منیجر  LastPass سخت‌تر است زیرا کد مخصوص سرقت داده که از Spectre v1 استفاده می‌کند در افزنه مخرب مخصوص گوگل کروم جاسازی شده است. افزونه  LastPass همچنین در این مرورگر داشت اجرا می‌شد. در برخی مورد، افزونه‌ها نیز در پروسه مشترک مرورگر اجرا می‌شوند و همین سرقت داده را ممکن می‌سازد.

حمله Specter.js به ذخیره‌گاه کلود گوگل

مثال دیگر: حملاتی به ذخیره‌گاه کلود گوگل است. یک تب مرورگر حاوی صفحه مخربی است که روی سایت‌ها میزبانی می‌شود. دیگری به کاربران اجازه می‌دهد تصاویر را در ذخیره‌گاه اختصاصی خود در سرویس جی‌سوئیت آپلود کنند. در این سناریو، مهاجم می‌تواند از کد مخرب برای دسترسی پیدا کردن به عکس‌ها استفاده کند.

محدودیت‌های متود

محققین نشان داده‌اند چطور این حمله می‌تواند روی چندین سی‌پی‌یو مختلف انجام شود، از جمله چندین سی‌پی‌یو مدرن از اینتل گرفته تا مدل‌های مبتنی بر ARM مانند اپل M1. در همه موارد حمله در گوگل کروم انجام می‌شده. اصل بدین گونه بوده که چندین قابلیت منحصر به فرد این مرورگر ورود Spook.js را ممکن می‌ساخته. سایر مرورگرهای مبتنی بر کرومیوم مانند اج نیز به این حمله آسیب‌پذیری نشان داده‌اند. با این حال برخی محدودیت‌ها نیز وجود دارد. اولی سرعت پایین سرقت داده است (400 تا 600 بایت بر ثانیه بسته به سی‌پی‌یو) که برای همین هم هست که فایل هدف در دموی آخر بسیار کوچک است. دومی تعداد بالای خطا موقع سرقت داده از کش سی‌پی‌یو است. تا 4 درصد داده‌ها غلط بوده‌اند. از این رو مصنوعات موجود در کپی سرقتی تصویر هم غلط است. این حمله با پردازشگرهای AMD یا فایرفاکس موزیلا که موتور جاوااسکریپتش متفاوت عمل می‌کند کار نمی‌کند. محققین گمان ندارند روی تراشه‌های AMD و مرورگر فایرفاکس چنین حملاتی صورت گیرد اما همچنان دارند روی امکان‌پذیری آن تحقیق می‌کنند. در آخر حمله نیازمند آپلود کد مخرب است در صفحه‌ای با همان نام دامنه. به کار بردن این متود برای مثال روی یک وبسایت بانک شاید تا درصد بالایی با شکست مواجه شود.

نیازی نیست خود را نگران کنید

تحقیق روی Spook.js مهم است زیرا محققین برای اولین بار موفق شده‌اند برای اکسپلویت یکی از آسیب‌پذیری‌های Spectre سناریویی باورپذیر و قابل اجرا در دنیای واقعی نشان دهند. با این حال شانس نمود چنین حملاتی در جهان واقعی کم است. ابتدا توسعه‌دهندگان گوگل کروم به پشتوانه‌ی این پژوهش مکانیزم ایزوله‌سازی سایت‌های لودشده را از هم دیگر تقویت کرده‌اند. دوم اینکه مجرمان سایبری روش‌های به مراتب ساده‌تری دارند برای سرقت داده‌های کاربری –از بدافزار سنتی گرفته تا ترفند مهندس اجتماعی- و این یک قلم نیازمند دانش جدی در مورد ساز و کار سطح پایین سی‌پی‌یوهای مدرن است. Spook.js بدین‌منظور راه‌اندازی شده که چشم‌انداز نرم‌افزاری را از طریق معرفی چند توصیه جدید برای امنیت وبسایت تغییر دهد (برای مثال نویسندگان انتقال صفحات به نام دامنه جداگانه را پیشنهاد می‌دهند).
حتی اگر آسیب‌پذیری‌های نوع Spectre بتوانند به صورت عمده اکسپلویت شوند، ابزار محافظتی برای هر بدافزاری یکسان خواهد بود. فروشندگان امنیت فقط چند نوع جدید از حملات را به لیست آن‌هایی که باید نظارت شوند و پیش از اجرا بلاک گردند اضافه می‌کند. همچنین این امکان نیز وجود دارد که روزی محققین با یک آسیب‌پذیری شبه Spectre مواجه شوند که نیازمند تجدید نظر کلی روی اکوسیستم مدرن آی‌تی باشد. البته این بسیار بعید است. بیایید این را هم فراموش نکنیم که سه سال طول کشید از آسیب‌پذیری فرضی به اولین حمله فیزیکی برسیم (حتی آن زمان هم حمله با کلی محدودیت روبرو برود). Spectre همچنین می‌تواند برای حملات هدف‌دار هم استفاده شود؛ حملاتی که در آن‌ها نفع بالقوه از داده‌های سرقتی از هزینه‌های عملیات تجاوز می‌کند. حتی اگر این سناریو به سازمان شما هم مربوط شود می‌توانید براحتی با استفاده از مرورگرهای متفاوت برای محتوای مختلف حملات را سخت‌تر کنید. برای مثال صفحات و سرویس‌های وبی را که اطلاعات حاس دارند باز نکنید. در حالت ایده‌آل در محیطی ایزوله اطلاعات محرمانه خود را مدیریت کنید؛ یا در یک ماشین مجازی یا دستگاهی جداگانه.

 

[1] Branch Prediction

[2] Side Channel attack

 

منبع: کسپرسکی آنلاین (ایدکو)

کسپرسکی اسم یکی از بزرگترین شرکتهای امنیتی و سازنده آنتی ویروس است که برخی از کاربران اشتباهاً این شرکت و محصولات آنتی ویروس آن را با عناوینی نظیر کسپرسکای،کاسپرسکی، کسپراسکای، کسپراسکای، و یا کاسپراسکای نیز می‌شناسد. همچنین لازم به ذکر است مدیرعامل این شرکت نیز یوجین کسپرسکی نام دارد.