
عتلات خلفية للأجهزة في معالجات x86
: ثغرات أجهزة في معالجات x86
github.com/xoreaxeaxeax/rosenbridge // domas // @xoreaxeaxeax
project:rosenbridge يكشف عن ثغرة أجهزة في بعض معالجات x86 المكتبية والمحمولة والمدمجة.
تسمح الثغرة لتعليمات البرنامج في الحلقة 3 (المستخدم) بتجاوز حماية المعالج للقراءة والكتابة بحرية لبيانات الحلقة 0 (النواة). بينما يتم تعطيل الثغرة عادةً (مما يتطلب تنفيذًا في الحلقة 0 لتفعيلها)، وجدنا أنها مفعلة افتراضيًا في بعض الأنظمة.
يحتوي هذا المستودع على أدوات للتحقق مما إذا كان المعالج متأثرًا، وإغلاق الثغرة إذا كانت موجودة، بالإضافة إلى البحث والأدوات المستخدمة لاكتشاف وتحليل الثغرة.
ثغرة rosenbridge هي نواة صغيرة غير تابعة لـ x86 مدمجة بجانب النواة الرئيسية x86 في المعالج. يتم تفعيلها بواسطة بت تحكم في سجل خاص بالطراز (MSR)، ثم يتم تشغيلها بواسطة تعليمة إطلاق. يتم تغذية النواة المدمجة بأوامر ملفوفة في تعليمة x86 مصممة خصيصًا. تنفذ هذه النواة الأوامر (التي نطلق عليها 'مجموعة التعليمات المدمجة عميقًا') متجاوزة جميع الحمايات المتعلقة بالذاكرة وصلاحيات الوصول.
بينما يجب أن يتطلب تنشيط الثغرة صلاحيات مستوى النواة، فقد لوحظ أنها مفعلة افتراضيًا في بعض الأنظمة، مما يسمح لأي كود غير مميز بتعديل النواة.
تختلف ثغرة rosenbridge تمامًا عن المعالجات المساعدة الأخرى المعروفة عمومًا في معالجات x86، مثل محرك الإدارة (Management Engine) أو معالج أمان المنصة (Platform Security Processor)؛ فهي مدمجة بشكل أعمق من أي معالج مساعد معروف، حيث تتمتع بالوصول ليس فقط إلى جميع ذاكرة المعالج، بل إلى ملف السجلات وخط أنابيب التنفيذ أيضًا.
يُعتقد أن معالجات VIA C3 فقط هي المتأثرة بهذه المشكلة. تُسوق معالجات السلسلة C للتطبيقات الصناعية الآلية، ونقاط البيع، وأجهزة الصراف الآلي، والأجهزة الصحية، بالإضافة إلى مجموعة متنوعة من أجهزة الكمبيوتر المكتبية والمحمولة الاستهلاكية.
نطاق هذه الثغرة محدود؛ الأجيال اللاحقة من المعالجات بعد C3 لم تعد تحتوي على هذه الميزة.
يُقدم هذا العمل كدراسة حالة وفكرة تجريبية، توضح كيف يمكن أن تنشأ الثغرات الخلفية في المعالجات المتزايدة التعقيد، وكيف يمكن للباحثين والمستخدمين النهائيين تحديد هذه الميزات. الأدوات والبحث المقدم هنا يوفر نقطة انطلاق لأبحاث أعمق في ثغرات المعالجات.
للتحقق مما إذا كان معالجك متأثرًا:
git clone https://github.com/xoreaxeaxeax/rosenbridge
cd rosenbridge/util
make
sudo modprobe msr
sudo ./bin/check
يجب تشغيل الأداة المقدمة على جهاز فعلي (ليس في بيئة افتراضية)، وهي في حالة ألفا. قد تتعطل أو تصاب بالذعر أو تعلق الأنظمة التي لا تحتوي على الثغرة.
الأدوات المقدمة هنا مصممة لعائلة معالجات ونواة محددة؛ للأسف، ستفوت الأدوات الثغرة إذا تم تعديلها ولو بشكل طفيف عن الشكل الذي تم بحثه.
بعض الأنظمة تفعل الثغرة افتراضيًا، مما يسمح للكود غير المميز بالوصول إلى مستوى النواة دون إذن. إذا أشارت الخطوات في 'فحص المعالج' إلى أن معالجك عرضة للخطر، يمكنك تثبيت سكريبت لإغلاق الثغرة مبكرًا في عملية الإقلاع:
cd fix
make
sudo make install
reboot
لاحظ أنه حتى مع ذلك، يمكن للمهاجم الذي لديه صلاحيات مستوى النواة إعادة تفعيل الثغرة. يُقدم هذا السكريبت كمخطط أولي لتصحيح المشكلة أثناء عملية الإقلاع، ولكنه سيتطلب تكييفًا لأنظمة مختلفة.
أداة sandsifter تستخدم بشكل مكثف في هذا البحث لاكتشاف تعليمات غير معروفة.
asm
مُجمّع لمجموعة التعليمات المدمجة عميقًا (DEIS). يحول البرامج المكتوبة بلغة تجميع rosenbridge المخصصة إلى تعليمات x86، والتي عند تنفيذها بعد تعليمة الإطلاق سترسل الأوامر إلى نواة المعالج المخفية.
esc
دليل على المفهوم (PoC) لاستخدام ثغرة rosenbridge لتصعيد الصلاحيات.
fix
مخطط أولي تقريبي لإغلاق الثغرة على الأنظمة المتأثرة، بقدر الإمكان من خلال تحديثات السجلات الخاصة بالطراز.
fuzz
مجموعة من الأدوات المستخدمة لاختبار التشويش على كل من نوى x86 وrosenbridge، بهدف عزل تعليمة الإطلاق وتعليمة الجسر غير المعروفتين، وحل تنسيق تعليمات نواة rosenbridge.
deis
أداة التشويش المستخدمة لاستكشاف تأثيرات وقدرات نواة المعالج المخفية.
exit
يُعتقد أنه في بعض المعالجات، هناك حاجة لتسلسل خروج للتبديل مرة أخرى إلى نواة x86 في نهاية تسلسل DEIS. يحتوي هذا الدليل على الأدوات المستخدمة للبحث عن تسلسل الخروج في المراحل المبكرة من البحث، ولكن تم التخلي عنها عندما تم العثور على معالج لا يتطلب أي تسلسل من هذا القبيل.
manager
مجموعة من أدوات بايثون مصممة لمراقبة وإدارة مهام التشويش الموزعة عبر شبكة من العمال.
wrap
نسخة مبسطة من أداة تشويش sandsifter، تستخدم لتحديد تعليمة الجسر التي سترسل الأوامر من نواة x86 إلى نواة rosenbridge المخفية.
kern
مجموعة من الأدوات المساعدة المستخدمة لمراقبة ذاكرة النواة والسجلات للتغيرات الناتجة عن تعليمات DEIS المشوشة.
lock
أدوات لقفل أو فتح ثغرة rosenbridge.
proc
أداة لتحديد الأنماط من سجلات التشويش لتحديد فئات سلوكيات تعليمات DEIS.
test
أداة استخدمت في بداية البحث، لمحاولة تحديد بنية النواة المخفية عن طريق تنفيذ تعليمات RISC معروفة.
util
أداة في حالة ألفا للكشف عما إذا كان المعالج متأثرًا بـ rosenbridge.
(TODO: رابط للورقة البيضاء)
(TODO: رابط للشرائح)
التفاصيل والآثار المقدمة في هذا العمل هي استنتاجات وآراء المؤلفين، المستمدة من البحث الموصوف. يتم إجراء البحث وتقديمه بهدف تحديد وإصلاح ثغرة أمنية محسوسة في المعالجات الموصوفة. تشتهر معالجات VIA باستهلاكها المنخفض للطاقة وتميزها في التصميمات المدمجة؛ نحن نعتقد أن الوظيفة الموصوفة قد أُنشئت بحسن نية كميزة مفيدة للسوق المدمج، وتركت عن غير قصد مفعلة على بعض الأجيال المبكرة من المعالج. لا يُقصد بها أي نية خبيثة.
project:rosenbridge هو جهد بحثي من كريستوفر دوماس (@xoreaxeaxeax).