أصدرت جوجل مؤخرًا العديد من النماذج الأولية للاستغلال التي توضح إمكانية استغلال ثغرات فئة Spectre عن طريق تنفيذ كود JavaScript في المتصفح، دون المرور بإجراءات الأمان المضافة مسبقًا.
يمكن استغلال الثغرات الأمنية للوصول إلى ذاكرة عملية تعالج محتوى الويب في علامة التبويب الحالية. ولاختبار فعالية هذه الثغرة، تم فتح موقع الويب الخاص بالصفحة المسربة، ونُشر الكود الذي يصف منطق العملية على منصة GitHub.
تم تصميم النموذج الأولي المقترح لمهاجمة الأنظمة المزودة بمعالجات Intel Core i7-6500U في بيئة تحتوي على Linux و Chrome 88، على الرغم من أن هذا لا يستبعد إمكانية إجراء تغييرات لاستخدام الثغرة في بيئات أخرى.
لا تقتصر طريقة عمل هذه الثغرة على معالجات إنتل فقط ؛ فبعد إجراء التعديلات اللازمة، تأكد أنها تعمل على أنظمة بمعالجات من شركات مصنعة أخرى، بما في ذلك معالج 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 المستخدمة في المعالجات وتسمح ، عن طريق زيادة عدد الدورات ، بزيادة وقت الاختلاف بشكل كبير عند القيمة يتم إرجاعها من ذاكرة التخزين المؤقت وفي حالة عدم وجود قيمة في ذاكرة التخزين المؤقت.
أصدرت جوجل نموذجًا أوليًا للاستغلال لإثبات جدوى الهجمات باستخدام ثغرات من فئة Spectre ولتشجيع مطوري الويب على استخدام تقنيات تقلل من مخاطر مثل هذه الهجمات.
في الوقت نفسه ، تعتقد Google أنه بدون مراجعة كبيرة للنموذج الأولي المقترح ، من المستحيل إنشاء ثغرات عالمية جاهزة ليس فقط للتوضيح ، ولكن أيضًا للاستخدام على نطاق واسع.
المصدر: https://security.googleblog.com