
إثبات المفهوم لـ Intel Management Engine JTAG - تعليمات 2022
جميع المعلومات مقدمة لأغراض تعليمية فقط. اتبع هذه التعليمات على مسؤوليتك الخاصة. لا يتحمل المؤلفون ولا جهة عملهم أي مسؤولية عن أي ضرر أو خسارة مباشرة أو تبعية تنشأ عن قيام أي شخص أو منظمة بالتصرف أو الامتناع عن التصرف بناءً على المعلومات الواردة في هذه الصفحة.
مقدمة
البرمجيات المطلوبة
توليد الحمولة
توليد رمز الفتح
تحضير صورة ذاكرة SPI
دمج الملفات في صورة البرنامج الثابت
تعطيل توقيع OEM
بناء صورة البرنامج الثابت
تشغيل المعالج الرئيسي
كتابة الصورة إلى ذاكرة SPI
تحضير كابل تصحيح USB
ترقيع ملفات إعدادات OpenIPC
فك تشفير ملفات إعدادات OpenIPC
إضافة نواة LMT إلى الإعدادات
تعيين متغير البيئة IPC_PATH
إجراء فحص أولي لقابلية تشغيل JTAG
عرض خيط ME للمعالج
إيقاف النوى
تصحيح أخطاء ME: بداية سريعة
قراءة ذاكرة عشوائية
قراءة ROM
لماذا TXE؟
قائمة المنصات المختبرة
المؤلفون
الترخيص
تتيح الثغرة الأمنية INTEL-SA-00086 تفعيل JTAG لنواة Intel Management Engine. قمنا بتطوير [JTAG PoC][8] الخاص بنا لمنصة Gigabyte Brix GP-BPCE-3350C. على الرغم من أننا نوصي الباحثين الطموحين باستخدام نفس المنصة، إلا أن منصات الشركات المصنعة الأخرى المزودة بمجموعة شرائح Intel Apollo Lake يجب أن تدعم هذا الـ PoC أيضًا (لإصدار TXE 3.0.1.1107).
نظرًا لأن Gigabyte Brix GP-BPCE-3350C لم يعد متاحًا تجاريًا على نطاق واسع، تم تحديث هذه التعليمات لاستهداف AAEON UP Squared SKU UPS-APLX7-A20-0864 (Intel Atom® x7-E3950) بدلاً من ذلك. إذا قمت بشراء هذه اللوحة، فتأكد أيضًا من الحصول على مصدر الطاقة، المحول التسلسلي، وأي محول USB-to-serial. بالإضافة إلى ذلك، لا يحتاج UP Squared سوى كابل تصحيح USB أساسي لإجراء تصحيح أخطاء DCI. يجب توصيل كابل تصحيح USB بالمنفذ الذي يظهر فيه كابل USB الأصفر هنا.
تتضمن الثغرة الأمنية INTEL-SA-00086 تجاوز سعة المخزن المؤقت عند معالجة ملف مخزّن على MFS ([نظام ملفات ME الداخلي][6]). مسار الملف الكامل هو /home/bup/ct. ستحتاج إلى دمج نسخة تستغل الثغرة من هذا الملف في برنامج ME الثابت باستخدام Intel Flash Image Tool (FIT)، وهي إحدى أدوات نظام إنتل التي توفرها إنتل لمصنّعي المعدات الأصلية (OEM) للأجهزة القائمة على شرائح Intel PCH.
لا تُصمم الأدوات المساعدة لأدوات نظام Intel ME (TXE, SPS) للمستخدمين النهائيين—لذلك لا يمكنك العثور عليها على موقع إنتل الرسمي. ومع ذلك، تنشر بعض الشركات المصنعة للمعدات الأصلية (OEM) هذه الأدوات كجزء من تحديثات البرمجيات إلى جانب برامج تشغيل الأجهزة. لذلك، لدمج إثبات المفهوم الخاص بنا، تحتاج إلى "CSTXE System Tools v3"، والتي يمكن العثور عليها هنا.
تحتاج إلى تثبيت Intel System Studio لإجراء تصحيح أخطاء JTAG. في تجاربنا الأصلية، استخدمنا Intel System Studio 2018. تم تحديث هذه التعليمات لـ Intel System Studio 2020 والتي يمكن الحصول عليها من هنا.
يستهدف إثبات المفهوم (PoC) إصدار برنامج Intel TXE الثابت 3.0.1.1107. يحتوي مستودع صور "CSTXE 3.0" في منتديات Win-Raid على إصدار برنامج TXE الثابت المطلوب.
جميع نصوصنا البرمجية مكتوبة بلغة Python. نوصي باستخدام Python 2.7 كما تتطلب السكربتات حزمة pycrypto. لتثبيت pycrypto، قم بتشغيل الأمر التالي:``` pip install pycrypto
## إجراء تصحيح أخطاء x86 الأساسي عبر DCI
بينما الهدف من هذا الدليل هو تمكين تصحيح أخطاء JTAG في ME عبر استغلال ثغرة، فمن الممارسات الجيدة أولاً إجراء فحص سلامة والتأكد من أنه يمكنك إجراء تصحيح أخطاء JTAG عادي للوحة UP Squared عبر DCI. لم تعد AAEON تشحن BIOS الخاص بها مع تمكين DCI، حيث صرّحت في منتدياتها أن ذلك يؤدي إلى عدم الاستقرار. (وبالإصدارات الأقدم من BIOS قبل v5.0 التي كان DCI مفعّلاً فيها لن تعمل بعد الآن مع الأجهزة الأحدث، بسبب تغيير في عتاد مورد DRAM.) لذلك، لتمكين DCI JTAG على UP Squared، يجب عليك تنفيذ 3 خطوات:
1) قم بالتصحيح الثنائي (binary patching) الذي وصفه Satoshi Tanda [هنا](https://forum.up-community.org/discussion/comment/12877#Comment_12877) (على الرغم من أنه ينبغي أن يُذكر استخدام UEFITool 0.28 وليس 2.8).
2) قم بتمكين DCI من خلال قائمة تكوين BIOS بالضغط على F7 عند الإقلاع، وإدخال كلمة مرور UP الافتراضية (*upassw0rd*)، ومن القائمة الرئيسية، انتقل إلى "CRB Setup" -> "CSB Chipset" -> "South Cluster Configuration" -> "Miscellaneous Configuration" -> "DCI Enable (HDCIEN)" واضبطها على enabled. ثم اخرج من قائمة إعداد BIOS، واحفظ تغيير التكوين، وأعد تشغيل النظام.
3) افتح "C:\IntelSWTools\system_studio_2020\system_debugger_2020\target_indicator\bin\TargetIndicator.exe" وتأكد من أنه عند توصيل هذا النظام بـ UP Squared عبر كابل التصحيح، تظهر مؤشر أزرق يشير إلى أن DCI ممكن، مثل الصورة أدناه:

يمكنك بعد ذلك تشغيل ":\Program Files (x86)\IntelSWTools\sw_dev_tools\system_debugger_2020\system_debug_legacy\xdb.bat"، والاتصال بالهدف، والدخول إليه، والتنفيذ خطوة بخطوة للتأكد من أن لديك قدرات تصحيح أخطاء أساسية.
(يمكنك أيضًا متابعة سلسلة المدونات التي كتبها Alan Sguigna [هنا](https://www.asset-intertech.com/resources/blog/2020/05/open-source-firmware-explorations-using-dci-on-the-aaeon-up-squared-board/) حول كيفية بناء نسخة Debug من الكود مفتوح المصدر لهذه المنصة، والتي ستكون قابلة لتصحيح الأخطاء عبر DCI من متجه إعادة التعيين. ومع ذلك، لاحظ أنه بسبب تغيير في عتاد DRAM، لن يتمكن هذا الكود المبني من المصدر من الإقلاع الكامل على الأجهزة الجديدة - بل سيتعطل عند وقت الإقلاع كما هو مذكور [هنا](https://forum.up-community.org/discussion/comment/12877). وقد رفض مطورو Intel TianoCore إصلاح هذا.)
# توليد الحمولة
قم بتشغيل السكربت **me_exp_bxtp.py**:```
me_exp_bxtp.py -f <file_name>
يقوم البرنامج النصي بتوليد البيانات اللازمة وتصديرها إلى الملف المحدد (حدد إما مسار الملف الكامل أو، داخل الدليل الحالي، اسمًا فقط، ct.bin افتراضيًا). سيُستخدم هذا الملف لاحقًا بواسطة FIT.
شغّل البرنامج النصي utock_gen.py:``` utock_gen.py -f <file_name>
يولّد البرنامج النصي البيانات اللازمة ويصدّرها إلى الملف المحدد (حدد إما مسار الملف الكامل أو، داخل المجلد الحالي، اسمًا فقط، *utok.bin* افتراضيًا). سيُستخدم هذا الملف لاحقًا بواسطة *FIT*.
# تجهيز صورة SPI Flash
## دمج الحمولة
لدمج الملفين *ct.bin* و *utok.bin*، قم بتشغيل الأداة *FIT* (ملف *fit.exe*) التي تحصل عليها من *CSTXE System Tools v3*. أولًا استخدمها لفتح صورة BIOS الخاصة بلوحة UP Squared لديك والتي تم فيها تمكين DCI (مثل "UPA1AM61_DCI_Enabled.bin").