
انتقد الخبراء مبدأ "
الأمن من خلال الغموض " منذ عدة سنوات ، لكن هذا لا يمنع مصنعي الإلكترونيات الكبار ، بحجة حماية الملكية الفكرية ، من المطالبة بتوقيع اتفاقيات عدم الكشف لتلقي وثائق فنية. الوضع يتدهور بسبب التعقيد المتزايد للدوائر الصغيرة ودمج مختلف البرامج الثابتة الملكية فيها. هذا يجعل من المستحيل في الواقع تحليل هذه المنصات للباحثين المستقلين ، مما يعرض كل من المستخدمين العاديين ومصنعي المعدات للخطر.
ومن الأمثلة على ذلك تقنية Intel Management Engine (Intel ME) ، بالإضافة إلى إصداراتها لأنظمة الخادم (Intel SPS) والمنصات المحمولة (Intel TXE) (انظر
[5] ،
[6] لمزيد من المعلومات حول هذه التقنية. في هذه المقالة ، سنخبر كيفية استخدام الأوامر غير الموثقة (إذا كان مصطلح "موثق" ينطبق بشكل عام على Intel ME) ، يمكنك الكتابة فوق ذاكرة فلاش SPI وتنفيذ أسوأ سيناريو - الاستغلال المحلي للثغرة الأمنية في ME (INTEL-SA-00086). وكان أصل هذه المشكلة هو وضع التشغيل غير الموثق لـ Intel ME - وضع التصنيع.
ما هو وضع التصنيع
وضع التصنيع Intel ME - وضع الخدمة المصمم لتكوين وتكوين واختبار النظام الأساسي النهائي في مرحلة الإنتاج ؛ يجب إيقاف تشغيله قبل طرح المعدات للبيع وشحنها إلى المستخدم. لم يتم وصف هذا الوضع ، ولا مخاطره المحتملة في وثائق إنتل العامة. المستخدم العادي غير قادر على إيقاف تشغيله بنفسه ، لأن الأداة المساعدة لإدارته من حزمة أدوات نظام ME ME غير متاحة رسميًا. لاحظ أنه لا توجد حماية برمجية يمكنها حماية المستخدم في حالة تشغيل هذا الوضع ، أو على الأقل إخطاره بذلك. حتى الأداة المساعدة Chipsec
[2] ، المصممة خصيصًا للكشف عن أخطاء تكوين الشرائح والمعالجات على مستوى البرامج الثابتة UEFI (على وجه الخصوص ، التكوين غير الصحيح لحقوق الوصول إلى مناطق فلاش SPI) ، لا تعرف أي شيء عن وضع التصنيع Intel.
يسمح لك هذا الوضع بتعيين معلمات النظام الأساسي الحرجة المخزنة في ذاكرة الكتابة مرة واحدة (FUSES). مثال على هذه المعلمات "السلكية" في FUSES هي معلمات BootGuard (الوضع ، السياسات ، المجموع الاختباري لمفتاح التوقيع الرقمي لوحدات ACM و UEFI). بعضها يسمى FPF (الصمامات القابلة للبرمجة الميدانية). يمكن الحصول على قائمة FPFs التي يمكن كتابتها إلى FUSES (غير مكتملة في الواقع ، لا يمكن تعيين عدد من FPFs مباشرة) من خلال الأداة المساعدة FPT (أداة برمجة الفلاش) من حزمة أدوات نظام Intel ME.
الشكل 1. نتيجة خيار –FPFs للأداة المساعدة FPTوتجدر الإشارة إلى أن FPFs تمثل جزءًا فقط من إجمالي مجموعة FUSE ، وتستخدم Intel نفسها معظم هذه الذاكرة لتخزين العديد من معلمات النظام الأساسي. على سبيل المثال ، يسمى جزء من مساحة هذا الصفيف IP Fuses ويهدف إلى تخزين معلمات التكوين لوحدات الأجهزة الفردية (خاصية ذكية). لذلك ، يخزن جهاز DFx Aggregator الخاص في FUSE علامة على ما إذا كانت المنصة متسلسلة أو اختبارية.
بالإضافة إلى FPF ، في وضع التصنيع ، تتمتع الشركة المصنعة للمعدات بالقدرة على تعيين معلمات برنامج Intel ME الثابت ، والتي يتم تخزينها في نظام ملفات البرامج الثابتة الداخلي - MFS ، على وسائط SPI flash. يمكن تغيير هذه المعلمات في حالة إعادة برمجة SPI flash. يطلق عليها CVARs (NVARs القابلة للتكوين ، المتغيرات المسماة).
لتثبيت CVARs ، تكون وحدة البرامج الثابتة Intel ME ، mca_server ، مسؤولة. MCA هو اختصار لبنية تكوين خط التصنيع ، وهو الاسم الشائع لعملية تكوين النظام الأساسي خلال مرحلة التصنيع. يمكن تعريف CVARs ، مثل FPFs وقراءتها باستخدام FPTs.
الشكل 2. قائمة إخراج CVARs بواسطة الأداة المساعدة FPT لمنصة Broxton P.تختلف قائمة CVARs باختلاف النظام الأساسي وإصدار برنامج Intel ME الثابت. بالنسبة إلى الشرائح التي تدعم تقنية Intel AMT ، فإن أحد هذه المتغيرات هو كلمة المرور لإدخال MEBx (ملحق ME BIOS).
لا يمكن تثبيت FPFs ومعظم متغيرات CVARs إلا إذا كانت البرامج الثابتة Intel ME تعمل في وضع التصنيع. تنقسم عملية تثبيت FPFs نفسها إلى مرحلتين: إعداد FPFs (التي يتم تخزينها في الذاكرة المؤقتة) ونقل FPFs إلى مجموعة من الصمامات. في الوقت نفسه ، تكون المرحلة الأولى ممكنة فقط في وضع التصنيع ، ويحدث "الحرق" الحقيقي تلقائيًا ، بعد مغادرة وضع التصنيع ، إذا قامت الشركة المصنعة أثناء التشغيل في هذا الوضع بتعيين قيم FPF وفي نفس الوقت لم يتم تسجيل النطاق المقابل في مصفوفة الاندماج. وبالتالي ، إذا كان النظام يعمل في وضع التصنيع ، فمن المرجح ألا تتم تهيئة متغيرات FPF.
يتم تخزين إشارة تعطيل وضع التصنيع في الملف / home / mca / eom على MFS ، وبالتالي ، عند إعادة كتابة SPI flash باستخدام البرامج الثابتة مع نظام الملفات الأساسي (لمزيد من التفاصيل ، انظر
[9] ) ، النظام الأساسي قادر على العمل مرة أخرى في وضع التصنيع (ولكن لن يكون من الممكن استبدال FUSES) .
المفتاح العام لـ OEM
وبالتالي ، فإن إجراء تكوين أنظمة Intel معقد للغاية ويتكون من عدة مراحل. إذا انتهكت الشركة المصنعة للمعدات أو غيرت التسلسل ، فإن النظام الأساسي معرض لخطر جسيم. حتى في حالة اكتمال وضع التصنيع ، لم تتمكن الشركة المصنعة من كتابة FUSES ، مما سيسمح للمهاجم بالقيام بذلك نيابة عنه ، وكتابة قيمه بدلاً من المفتاح لتوقيع رمز التمهيد الخاص بوحدات BootGuard (ACM) و UEFI وبالتالي السماح للمنصة بالتمهيد فقط مع رمزها الخبيث ، و على أساس مستمر. سيؤدي هذا إلى خسارة لا رجعة فيها للمعدات ، حيث سيتم تسجيل المفتاح الاحتيالي في الذاكرة الدائمة ، إلى الأبد (يمكن العثور على تفاصيل هذا الهجوم في دراسة حماية الجذور الخفية: Intel BootGuard بواسطة Alexander Ermolov
[8] ).
في الأنظمة الجديدة (Apollo Lake ، Gemini Lake ، Cannon Point) في FPF ، لا يتم فقط تخزين مفتاح BootGuard ، ولكن أيضًا المفتاح العام لـ OEM (أو بالأحرى ، SHA-256 من المفتاح العام RSA OEM) ، والذي تستند إليه العديد من آليات حماية ME. على سبيل المثال ، يخزن قسم فلاش SPI خاص يسمى ملف الصورة الرئيسية الموقعة (SMIP) أشرطة PCH الخاصة بالشركة المصنعة (تكوين أجهزة PCH). تم توقيع هذا القسم على مفتاح ، SHA-256 الذي تم وضعه في ملف خاص على فلاش SPI. يُسمى هذا الملف oem.key ، الموجود في قسم FTPR ويحتوي على مفاتيح عامة متنوعة مقدمة من OEM لتوقيع مجموعة متنوعة من البيانات. فيما يلي القائمة الكاملة لمجموعات البيانات التي تم توقيعها من قبل الشركة المصنعة ، لكل منها على مفتاح فريد ، لمنصة Cannon Point:
الشكل 3. قائمة بيانات منصة CNP OEM الموقعةيتم توقيع ملف oem.key نفسه بواسطة مفتاح الجذر المشترك لـ OEM ، ويجب تسجيل مقدار التجزئة في FPFs.
الشكل 4 الشكل 4. توقيع OEMتجاوز قفل الكتابة في منطقة الشرق الأوسط
حتى وقت قريب (قبل Intel Apollo Lake) ، كان برنامج Intel ME الثابت في منطقة SPI منفصلة ، والتي كانت لها حقوق وصول مستقلة لوحدة المعالجة المركزية و GBE و ME. وهكذا ، مع التكوين الصحيح لسمات الوصول من جانب وحدة المعالجة المركزية (النظام الرئيسي) ، لم يكن من الممكن قراءة أو كتابة ME البرامج الثابتة. ومع ذلك ، فإن وحدات تحكم شرائح Intel الحديثة SPI لديها آلية خاصة بمنح رئيسية. تقوم هذه التقنية بتعيين جزء معين من فلاش SPI لكل رئيسي SPI ، هذا المالك يمتلك منطقته ، بغض النظر عن حقوق الوصول المحددة في واصف SPI. كل سيد لديه الفرصة لتوفير الوصول (للقراءة أو الكتابة) إلى منطقته (وفقطه) إلى سيد آخر ، كما يشاء.
الشكل 5. مقتطف من وثائق إنتل يصف منحة SPI الرئيسيةوبالتالي ، حتى إذا حدد المضيف حظرًا على الوصول إلى منطقة ME SPI من المضيف ، فلا يزال بإمكان ME توفير الوصول إلى بياناته. في رأينا ، تم ذلك لتمكين تحديث البرامج الثابتة Intel ME تجاوز الخوارزمية القياسية.
تجاوز حماية فلاش منطقة الشرق الأوسط
في البرامج الثابتة Intel ME ، يتم تنفيذ أمر HECI خاص ، والذي يسمح لك بفتح وصول الكتابة إلى منطقة SPI ME من وحدة المعالجة المركزية. يطلق عليه HMR FPO (تجاوز حماية فلاش المنطقة المضيفة ME). في إحدى دراساتنا السابقة ، قمنا بوصف هذا الأمر بالتفصيل [5]. لديها العديد من الميزات.
بعد تلقي أمر HMR FPO ، لن تفتح البرامج الثابتة الوصول إلى منطقتها
إلا بعد إعادة التشغيل. يوفر ME نفسه الحماية أيضًا: يتم قبول الأمر فقط خلال فترة تنفيذ UEFI BIOS ، حتى ما يسمى لحظة انتهاء المشاركة (EOP). EOP هو أمر HECI آخر يرسله UEFI BIOS قبل نقل التحكم إلى نظام التشغيل (ExitBootServices). في بعض إعدادات BIOS ، يمكنك العثور على خيار يتيح إرسال أمر HMRFPO إلى EOP.
الشكل 6. فتح منطقة ME في BIOSبعد استلام EOP ، يتجاهل البرنامج الثابت ME HMR FPO ، ويعيد الحالة المقابلة.
ولكن هذا لا يحدث إلا بعد الانتهاء من وضع التصنيع . وبالتالي ، تقبل ME البرامج الثابتة في وضع التصنيع HMR FPO
في أي وقت ، بغض النظر عن نهاية المشاركة . إذا لم تقم الشركة المصنعة بإغلاق وضع التصنيع ، فيمكن للمهاجم (بشكل رسمي ، أن يتطلب حقوق المسؤول ، ولكن حتى نواة نظام التشغيل لا تستطيع الكتابة فوق ME ME في البداية) يمكنه تغيير ME ME الثابت في أي وقت. في هذه المرحلة ، يمكن للمهاجم الكتابة فوق صورة ME ، على سبيل المثال ، لاستغلال ثغرة INTEL-SA-00086. هذا يثير الحاجة إلى إعادة التشغيل ، ولكن هذا ليس عائقًا على جميع المنصات تقريبًا باستثناء MacBook.
على أجهزة كمبيوتر Apple ، يوجد فحص إضافي في UEFI ، يتم إجراؤه في وقت البدء ويمنع النظام من البدء إذا تم فتح منطقة ME باستخدام HMRFPO. ومع ذلك ، كما سنوضح لاحقًا ، يتم التغلب على آلية الحماية هذه إذا كان البرنامج الثابت ME يعمل في وضع التصنيع.
إعادة تشغيل ME دون إعادة تشغيل وحدة المعالجة المركزية الرئيسية
في أجهزة الكمبيوتر الحديثة ، هناك العديد من الخيارات لإعادة تشغيل النظام الأساسي. من بينها موثقة: إعادة التشغيل العالمية وإعادة التشغيل فقط وحدة المعالجة المركزية الرئيسية (بدون إعادة تشغيل ME). ومع ذلك ، إذا كانت هناك طريقة لإعادة تشغيل ME
دون إعادة تشغيل وحدة المعالجة المركزية الرئيسية (بعد تنفيذ أمر HMRFPO سابقًا) ، فسيتم فتح الوصول إلى المنطقة ، وسيستمر النظام الرئيسي في العمل.
الشكل 7. إعادة تشغيل التحكم في النوععند فحص وحدات البرامج الثابتة ME الداخلية ، وجدنا أن هناك أمر HECI (
"80 06 00 07 00 00 0b 00 00 00 03 00" ، لمزيد من التفاصيل حول إرسال الأوامر انظر [
5 ]) لإعادة التشغيل فقط (!) Intel ME kernel ، والتي يمكن إرسالها في وضع التصنيع في أي وقت ، حتى بعد EOP.
الشكل 8. قائمة تفكيك دالة تعالج أوامر إعادة تحميل ME HECIوبالتالي ، فإن المهاجم ، بعد أن أرسل هذين الأمرين HECI ، يفتح منطقة الشرق الأوسط ويمكنه كتابة أي بيانات هناك دون إعادة تشغيل النظام الأساسي . في هذه الحالة ، لا يهم ما يحتوي عليه واصف SPI ، أي أن سمات الحماية الصحيحة لمناطق SPI لا تحمي البرامج الثابتة ME من التغيير إذا كان النظام يعمل في وضع التصنيع.
قمنا بتحليل العديد من المنصات من الشركات المصنعة المختلفة. وكان من بينها أجهزة الكمبيوتر المحمولة Lenovo و Apple MacBook Pr. في أجهزة الكمبيوتر التي تم فحصها من خط اليوغا و ThinkPad ، لم نجد أي مشاكل مرتبطة بوضع التصنيع ، ولكن
أجهزة كمبيوتر Apple المحمولة المستندة إلى شرائح Intel تعمل في وضع التصنيع . بعد نقل هذه المعلومات إلى Apple ، تم إصلاح هذا الخطأ (CVE-2018-4251) في تحديث نظام التشغيل macOS High Sierra 10.13.5 OS.
العمليات المحلية INTEL-SA-00086
لذلك ، باستخدام الثغرة CVE-2018-4251 ، يمكن للمهاجم كتابة الإصدارات القديمة من البرامج الثابتة ME التي تحتوي على ثغرة INTEL-SA-00086 ، وفي الوقت نفسه لم يكن بحاجة إلى مبرمج SPI أو الوصول إلى وصلة HDA_SDO (أي الوصول المادي). وبالتالي ، يتم إدراك المتجه الأكثر خطورة - المحلي - لهذه الثغرة الأمنية (تنفيذ التعليمات البرمجية التعسفية في البرامج الثابتة ME). من الجدير بالذكر أنه في شرح نشرة الأمن INTEL-SA-00086 ، لم تذكر Intel وضع التصنيع المفتوح كوسيلة لاستغلال هذه الثغرة محليًا ، دون الوصول الفعلي ، لكنها تقول فقط أن الاستغلال المحلي ممكن فقط إذا تم تكوين الوصول إلى مناطق SPI بشكل غير صحيح هذا غير صحيح. لحماية المستخدمين ، قررنا وصف كيفية التحقق من توفر وضع التصنيع وكيفية تعطيله.
كيف تحمي نفسك
تتضمن حزمة أدوات النظام لمطوري المعدات القائمة على الشرائح ومعالجات Intel (أدوات نظام Intel) أداة MEInfo (TXEInfo و SPSInfo لمنصات الهواتف المحمولة والخوادم ، على التوالي) ، والتي تم تصميمها لتلقي معلومات تشخيصية متقدمة حول الحالة الحالية للبرامج الثابتة لـ Management Engine و المنصة بأكملها ككل. أظهرنا هذه الأداة في إحدى دراساتنا السابقة حول تعطيل ME ووضع HAP (نظام ضمان عالي) غير الموثق [
6 ]. تقدم هذه الأداة المساعدة ، التي تحمل علامة –FWSTS ، وصفاً مفصلاً لسجلات حالة HECI وتقارير حالة وضع التصنيع (يتم تعيين البت الرابع من سجل حالة FWSTS للإشارة إلى أن وضع التصنيع نشط).
الشكل 9. مثال على إخراج أداة MEInfoقمنا أيضًا بتطوير برنامج [
7 ] ، والذي يمكنك من خلاله التحقق من حالة وضع التصنيع إذا لم يتمكن المستخدم لسبب ما من الوصول إلى أدوات نظام Intel ME.
الشكل 10. مثال على البرنامج النصي mmdetectيطرح السؤال كيفية إتمام وضع التصنيع بشكل مستقل ، إذا اتضح أن الشركة المصنعة لم تفعل ذلك. لإكمال وضع التصنيع ، فإن الأداة المساعدة FPT لديها خيار خاص ، - CLOSEMNF ، والذي ، بالإضافة إلى غرضه الرئيسي ، يسمح لك أيضًا بتعيين حقوق الوصول الموصى بها إلى مناطق فلاش SPI في الواصف.
شكل 11. نتيجة أداة FTP المساعدة مع خيار - CLOSEMNFفي هذا المثال ، استخدمنا المعلمة NO لخيار –CLOSEMNF حتى لا نعيد تشغيل النظام الأساسي ، والذي يتم تنفيذه افتراضيًا فور الانتهاء من وضع التصنيع.
الخلاصة
يظهر بحثنا أن مشكلة وضع تصنيع البرامج الثابتة من Intel ME موجودة ، وحتى الشركات المصنعة الكبيرة مثل Apple قادرة على ارتكاب الأخطاء عند تكوين أنظمة Intel. الأسوأ من ذلك كله ، لا توجد معلومات عامة حول هذا الموضوع ولا يدرك المستخدمون النهائيون هذه المشكلة الخطيرة التي يمكن أن تؤدي إلى فقدان المعلومات السرية ، وظهور مجموعات جذرية غير قابلة للإزالة ، وإيقاف تشغيل المعدات بشكل لا رجعة فيه.
بالإضافة إلى ذلك ، لدينا شكوك في أن القدرة على إعادة تشغيل ME دون إعادة تشغيل وحدة المعالجة المركزية الرئيسية قد تؤدي إلى مشاكل أمنية أخرى بسبب عدم مزامنة حالات BIOS / UEFI و ME.
المؤلف: مارك ايرمولوف ومكسيم جوراتشي
[1]
تحديث برنامج Intel Management Engine الحرج ، Intel-SA-00086[2]
GitHub - chipsec / chipsec: إطار عمل تقييم أمن المنصة[4] برنامج
مفتوح المصدر سريع وآمن ومرن ، Coreboot[5]
Mark Ermolov، Maxim Goryachy، كيف تصبح المالك الوحيد لجهاز الكمبيوتر الخاص بك، PHDays VI، 2016[6]
مارك إيرمولوف ، مكسيم جورياتشي ، تعطيل Intel ME 11 عبر وضع غير موثق ، مدونة التقنيات الإيجابية[7]
أدوات الكشف عن وضع التصنيع Intel ME[8]
ألكسندر إيرمولوف ، حماية الجذور الخفية: Intel BootGuard[9]
دميتري سكلياروف ، Intel ME: نظام ملفات فلاش. وأوضح