يوضح Google استغلال ثغرات Spectre من خلال تنفيذ JavaScript في المتصفح

نشرت Google العديد من نماذج الاستغلال التي تُظهر إمكانية استغلال ثغرات فئة Specter عند تنفيذ كود JavaScript في متصفح ، متجاوزًا طرق الحماية المضافة سابقًا. يمكن استخدام برامج استغلال الثغرات للوصول إلى ذاكرة عملية تقوم بمعالجة محتوى الويب في علامة التبويب الحالية. لاختبار عملية الاستغلال ، تم إطلاق الموقع leaky.page وتم نشر الكود الذي يصف منطق العمل على GitHub.

تم تصميم النموذج الأولي المقترح لمهاجمة الأنظمة باستخدام معالجات Intel Core i7-6500U في بيئة Linux و Chrome 88. يلزم إجراء تغييرات لتطبيق الاستغلال على بيئات أخرى. طريقة الاستغلال ليست خاصة بمعالجات Intel - بعد التكيف المناسب ، تم تأكيد الاستغلال للعمل على أنظمة مع وحدات المعالجة المركزية من الشركات المصنعة الأخرى ، بما في ذلك Apple M1 على أساس بنية ARM. بعد تعديلات طفيفة ، يعمل الاستغلال أيضًا على أنظمة تشغيل أخرى ومتصفحات أخرى تعتمد على محرك Chromium.

في بيئة تعتمد على معالجات Chrome 88 القياسية و Intel Skylake ، تم تسريب البيانات من العملية المسؤولة عن معالجة محتوى الويب في علامة تبويب Chrome الحالية (عملية العارض) ، بمعدل 1 كيلوبايت في الثانية. بالإضافة إلى ذلك ، تم تطوير نماذج أولية بديلة ، على سبيل المثال ، برنامج استغلال يسمح ، على حساب تقليل الاستقرار ، بزيادة معدل التسرب إلى 8 كيلو بايت / ثانية عند استخدام مؤقت الأداء .now () بدقة 5 ميكروثانية (0.005 مللي ثانية) . تم أيضًا إعداد متغير يعمل بدقة مؤقت تبلغ مللي ثانية واحدة ، والتي يمكن استخدامها لتنظيم الوصول إلى ذاكرة عملية أخرى بسرعة حوالي 60 بايت في الثانية.

يتكون الكود التجريبي المنشور من ثلاثة أجزاء. يقوم الجزء الأول بمعايرة المؤقت لتقدير وقت تنفيذ العمليات المطلوبة لاستعادة البيانات المتبقية في ذاكرة التخزين المؤقت للمعالج نتيجة التنفيذ التخميني لتعليمات وحدة المعالجة المركزية. يحدد الجزء الثاني تخطيط الذاكرة المستخدم عند تخصيص مصفوفة JavaScript.

يستغل الجزء الثالث بشكل مباشر ثغرة Spectre لتحديد محتويات ذاكرة العملية الحالية نتيجة لتهيئة الظروف للتنفيذ التخميني لعمليات معينة ، والتي يتم تجاهل النتيجة من قبل المعالج بعد تحديد التنبؤ غير الناجح ، ولكن التنفيذ يتم إيداع التتبع في ذاكرة التخزين المؤقت العامة ويمكن استعادتها باستخدام طرق لتحديد محتويات ذاكرة التخزين المؤقت بواسطة قنوات الجهات الخارجية التي تحلل التغييرات في وقت الوصول إلى البيانات المخزنة مؤقتًا وغير المخزنة مؤقتًا.

تقضي تقنية الاستغلال المقترحة على أجهزة ضبط الوقت عالية الدقة المتوفرة من خلال واجهة برمجة تطبيقات Performance.now () ، وبدون دعم لنوع SharedArrayBuffer ، الذي يسمح بإنشاء مصفوفات في الذاكرة المشتركة. يتضمن الاستغلال أداة Specter ، التي تتسبب في تنفيذ رمز مضاربة متحكم فيه ، ومحلل تسرب القناة الجانبية ، والذي يحدد البيانات التي تم الحصول عليها أثناء التنفيذ التخميني الذي تم إدخاله في ذاكرة التخزين المؤقت.

يتم تنفيذ الأداة باستخدام مصفوفة JavaScript ، حيث يتم إجراء محاولة للوصول إلى منطقة خارج حدود المخزن المؤقت ، مما يؤثر على حالة كتلة توقع الفرع بسبب فحص حجم المخزن المؤقت الذي أضافه المترجم (المعالج ، بالنظر إلى الأمام ، يؤدي الوصول إلى المضاربة ، لكنه يتراجع عن الحالة بعد الفحص). لتحليل محتويات ذاكرة التخزين المؤقت في ظل ظروف عدم كفاية دقة المؤقت ، تم اقتراح طريقة تخدع استراتيجية إخلاء ذاكرة التخزين المؤقت Tree-PLRU المستخدمة في المعالجات وتسمح ، من خلال زيادة عدد الدورات ، بزيادة الفرق في الوقت بشكل كبير عند إرجاع قيمة من ذاكرة التخزين المؤقت وعندما لا توجد قيمة في ذاكرة التخزين المؤقت.

تجدر الإشارة إلى أن Google نشرت نموذجًا أوليًا لاستغلالها لإظهار واقعية الهجمات باستخدام نقاط الضعف في فئة Specter ولتشجيع مطوري الويب على استخدام تقنيات تقلل من مخاطر مثل هذه الهجمات. في الوقت نفسه ، تعتقد Google أنه بدون مراجعة كبيرة للنموذج الأولي المقترح ، من المستحيل إنشاء ثغرات عالمية جاهزة ليس فقط للتوضيح ، ولكن أيضًا للاستخدام على نطاق واسع.

للتخفيف من المخاطر ، يتم تشجيع مالكي المواقع على استخدام سياسة الفتح عبر المنشأ التي تم تنفيذها مؤخرًا (COOP) ، وسياسة التضمين عبر المنشأ (COEP) ، وسياسة الموارد متعددة المنشأ (CORP) ، وطلب جلب البيانات الوصفية ، وخيارات الإطار X ، X -Content-Type-Options و SameSite Cookies. لا تحمي هذه الآليات بشكل مباشر من الهجمات ، ولكنها تسمح بعزل بيانات الموقع عن التسرب إلى العمليات التي يمكن فيها تنفيذ كود JavaScript الخاص بالمهاجم (يحدث التسرب من ذاكرة العملية الحالية ، والتي يتم فيها إضافة بيانات إلى رمز المهاجم من موقع آخر مفتوح في علامة التبويب نفسها). تتمثل الفكرة الرئيسية في الفصل في العمليات المختلفة بين تنفيذ كود الموقع وكود الطرف الثالث الذي تم الحصول عليه من مصادر غير موثوقة ، على سبيل المثال ، المضمنة من خلال إطار iframe.



المصدر: opennet.ru

إضافة تعليق