SWAPGS هي ثغرة جديدة في آلية التنفيذ التخميني لوحدة المعالجة المركزية

باحثون من Bitdefender مكشوف ثغرة جديدة (CVE-2019-1125) في آلية تنفيذ التعليمات التخمينية لوحدات المعالجة المركزية الحديثة، والتي تسمى SWAPGS، والتي تتوافق مع اسم تعليمات المعالج المسببة للمشكلة. وهن يسمح يمكن للمهاجم الذي لا يتمتع بالامتيازات تحديد محتويات مناطق ذاكرة kernel أو تشغيل الأجهزة الافتراضية. مشكلة أكده في معالجات إنتل (x86_64) وجزئيا يؤثر معالجات AMD التي لا يظهر لها ناقل الهجوم الرئيسي. الأساليب التي تم تنفيذها مسبقًا لمواجهة ثغرات Spectre وMeltdown لا تحمي من هجوم SWAPGS عند استخدام معالجات Intel، ولكن تم بالفعل اقتراح إصلاحات لنظام التشغيل Linux وChromeOS وAndroid وWindows.

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

خصوصية الهجوم الجديد هو استخدام التسرب الذي يحدث أثناء التنفيذ التخميني لتعليمات SWAPGS، والذي يستخدم في أنظمة التشغيل لاستبدال قيمة سجل GS عندما ينتقل التحكم من مساحة المستخدم إلى نواة نظام التشغيل (GS) يتم استبدال القيمة المستخدمة في مساحة المستخدم بالقيمة المستخدمة أثناء العمليات في النواة). في Linux kernel، تقوم GS بتخزين مؤشر per_cpu المستخدم للوصول إلى بيانات kernel، وتقوم مساحة المستخدم بتخزين المؤشرات إلى TLS (Thread Local Storage).

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

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

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

يتطلب الإصلاح تثبيت تحديث kernel على كل من النظام المضيف وبيئات الضيف، متبوعًا بإعادة تشغيل النظام. لتعطيل الحماية على نظام التشغيل Linux، يمكن استخدام خيار "nospectre_v1"، والذي يؤدي أيضًا إلى تعطيل التدابير الرامية إلى حظر ثغرة SWAPGS. الإصلاح متاح ك رقعة لنواة Linux، والتي تم تضمينها بالفعل في الإصدارات 4.19.65, 5.2.7و 4.14.137 و 4.9.188 و 4.4.188. لم يتم إصدار تحديثات لتوزيعات Linux بعد (ديبيان, RHEL, فيدورا, قوس لينكس, SUSE / openSUSE, أوبونتو). على نظام التشغيل Windows، تم حل المشكلة بهدوء تحديث يوليو. شركة جوجل أعدت إصلاح لـ kernel 4.19 الذي تم شحنه مع ChromeOS و أندرويد.

وفقًا للباحثين من Bitdefender، تم إبلاغ شركة Intel بالمشكلة في أغسطس من العام الماضي. تقرر إصلاح المشكلة برمجيًا، حيث شارك مطورو Microsoft وGoogle و Linux kernel في التطوير المنسق للإصلاح. تعد معالجات Intel الأقدم، ما قبل Ivy Bridge، أكثر صعوبة في الهجوم بسبب نقص الدعم لتعليمات WRGSBASE المستخدمة في الاستغلال. لا تتأثر أنظمة ARM وPOWER وSPARC وMIPS وRISC-V بالمشكلة لأنها لا تدعم تعليمات SWAPGS.

المشكلة تؤثر بشكل رئيسي على أصحاب معالجات إنتل -
في أنظمة AMD، لم يكن من الممكن إعادة إنتاج سوى سيناريو الهجوم الثاني، والذي يقتصر على المعالجة التخمينية للقيمة الأساسية لسجل GS، والتي يمكن استخدامها للبحث عن قيم محددة في مناطق الذاكرة العشوائية. لمنع خيار الهجوم هذا يكفي طرق الحماية الحالية ضد Spectre v1.

المصدر: opennet.ru

إضافة تعليق