
يفك تشفير تحديثات الميكروكود لمعالجات Intel Atom ويفك حزم XuCode باستخدام مفاتيح RC4 المستعادة، مما يكشف البنى الداخلية لميكروكود وحدة المعالجة المركزية (CPU) لأبحاث أمن العتاد.
جميع المعلومات مقدمة لأغراض تعليمية فقط. اتبع هذه التعليمات على مسؤوليتك الخاصة. لا يتحمل المؤلفون ولا جهة عملهم أي مسؤولية عن أي ضرر أو خسارة مباشرة أو تبعية تنشأ عن أي شخص أو منظمة تتصرف أو تمتنع عن التصرف بناءً على المعلومات الواردة في هذه الصفحة.
في بداية عام 2020، اكتشفنا تقنية Red Unlock التي تسمح باستخراج ميكروكود Intel Atom. تمكنا من دراسة البنية الداخلية للميكروكود ومن ثم تنفيذ تعليمات x86. كما استعدنا تنسيق تحديثات الميكروكود والخوارزمية ومفتاح التشفير المستخدم لحماية الميكروكود (انظر RC4).
لا، لا يمكنك. يتم دعم فك التشفير فقط، لأن الميكروكود يحتوي على توقيع RSA لحماية السلامة.
يعتمد مفتاح فك تشفير تحديث الميكروكود على جيل وحدة المعالجة المركزية. لقد استخرجنا مفاتيح لجيل Intel Gemini Lake (بنية Goldmont Plus الدقيقة) وجيل Intel Apolo Lake (بنية Goldmont الدقيقة). انظر قائمة وحدات المعالجة المركزية المدعومة
باستخدام ثغرات في Intel TXE، قمنا بتفعيل وضع تصحيح أخطاء غير موثق يُسمى red unlock واستخرجنا تفريغات الميكروكود مباشرةً من وحدة المعالجة المركزية. وعثرنا بداخلها على المفاتيح والخوارزمية.
شاهد محادثاتنا Chip Red Pill: How We Achived to Execute Arbitrary Microcode Inside Intel Atom CPUs من OffensiveCon22.
جميع نصوصنا البرمجية مكتوبة بلغة Python. نوصي باستخدام Python 3. تتطلب النصوص حزمة pycryptodome. لتثبيت pycryptodome، شغّل الأمر التالي:
pip3 install pycryptodome
شغّل السكربت dec_uUpd_Atom_apl.py لوحدات معالجة Apolo Lake:
C:\microcode>py -3 dec_uUpd_Atom_apl.py cpu506C9_plat03_ver00000040_2020-02-27_PRD_2FC3D618_.bin
Hash matched at length 0x3E00 (15872)
Data entropy: 6.898306
شغّل السكربت dec_uUpd_xu_Atom_glp.py لوحدات معالجة Gemini Lake:
C:\microcode>py -3 dec_uUpd_xu_Atom_glp.py cpu706A8_plat01_ver00000018_2020-06-09_PRD_1D9A5DFE.bin
Patch hash matched: enc size: 0x3480
Patch data entropy: 6.438890
XuCode hash matched: size: 0xed40
XuCode data entropy: 7.752765
شغّل السكربت XuUnp.py لوحدات معالجة Goldmont Plus:
C:\microcode>py -3 XuUnp.py cpu706A8_plat01_ver00000018_2020-06-09_PRD_1D9A5DFE.bin.xu.dec
Processing cpu706A8_plat01_ver00000018_2020-06-09_PRD_1D9A5DFE.bin.xu.dec
. ELF at 0x28
. Parking: 0xD58+944
. XuRT: 0x16EC+D404
. Decompressing 54276 -> 101448, be patient...
+ Unpacked OK

XuCode هو الجزء البرمجي من تقنية SGX، حيث توجد ملفات ELF مدمجة في تحديث الميكروكود.

انظر: XuCode: An Innovative Technology for Implementing Complex Instruction Flows
يمكن فك تشفير تحديث الميكروكود لوحدات المعالجة المركزية التالية:
Mark Ermolov (@_markel___)
Maxim Goryachy (@h0t_max)
Dmitry Sklyarov (@_Dmit)
| Processor Model | Microarchitecture | SGX / XuCode support |
|---|
| Pentium J4205 | Goldmont, Apollo Lake | - |
| Celeron J3455 | Goldmont, Apollo Lake | - |
| Celeron J3355 | Goldmont, Apollo Lake | - |
| Pentium N4200 | Goldmont, Apollo Lake | - |
| Celeron N3450 | Goldmont, Apollo Lake | - |
| Celeron N3350 | Goldmont, Apollo Lake | - |
| Atom x7 E3940 | Goldmont, Apollo Lake | - |
| Atom x5 E3930 | Goldmont, Apollo Lake | - |
| Atom x7 A3960 | Goldmont, Apollo Lake | - |
| Atom x7 A3950 | Goldmont, Apollo Lake | - |
| Atom x5 A3940 | Goldmont, Apollo Lake | - |
| Atom x5 A3930 | Goldmont, Apollo Lake | - |
| Atom C3958 | Goldmont, Denverton | - |
| Atom C3955 | Goldmont, Denverton | - |
| Atom C3858 | Goldmont, Denverton | - |
| Atom C3850 | Goldmont, Denverton | - |
| Atom C3830 | Goldmont, Denverton | - |
| Atom C3808 | Goldmont, Denverton | - |
| Atom C3758 | Goldmont, Denverton | - |
| Atom C3750 | Goldmont, Denverton | - |
| Atom C3708 | Goldmont, Denverton | - |
| Atom C3558 | Goldmont, Denverton | - |
| Atom C3538 | Goldmont, Denverton | - |
| Atom C3508 | Goldmont, Denverton | - |
| Atom C3338 | Goldmont, Denverton | - |
| Atom C3308 | Goldmont, Denverton | - |
| Pentium Silver J5005 | Goldmont Plus, Gemini Lake | + |
| Celeron J4105 | Goldmont Plus, Gemini Lake | + |
| Celeron J4005 | Goldmont Plus, Gemini Lake | + |
| Pentium Silver N5000 | Goldmont Plus, Gemini Lake | + |
| Celeron N4100 | Goldmont Plus, Gemini Lake | + |
| Celeron N4000 | Goldmont Plus, Gemini Lake | + |
| Pentium Silver N5030 | Goldmont Plus, Gemini Lake Refresh | + |
| Celeron N4120 | Goldmont Plus, Gemini Lake Refresh | + |
| Celeron N4020 | Goldmont Plus, Gemini Lake Refresh | + |