
استغلال شهادات لأجهزة MTK. توجد ثغرة منطقية في عملية التحقق من شهادات MTK. مشابه لـ CVE-2023-20696.
استغلال ثغرة في شهادات أجهزة MTK. يوجد خلل منطقي في عملية التحقق من الشهادات في MTK. مشابه لـ CVE-2023-20696. قد يكون قد تم تصحيحه في يونيو
هذا المشروع مخصص للبحث فقط. تأكد من حصولك على إذن قبل استخدامه. غير مسموح باستخدامه لأغراض غير قانونية. غير مسموح باستخدام هذا الاستغلال لتقديم خدمات مدفوعة.
بالنسبة لأجهزة MTK، يتحقق preloader من bl2_ext/lk/atf ثم يقفز إليه.
هذه الصور موقّعة بشهادات ASN.1.
لكن يوجد خلل منطقي في عملية تحليل ASN.1.
بالنسبة للأجهزة القديمة V5/V6، يتم تحديد محتوى الشهادة عبر bypass_mode 1.
في هذا الوضع، يتم الدخول إلى أي كائن.
لذا يمكننا إنشاء شهادة مزيفة تحتوي على كائن 0x3(bit string).
الشهادة المزيفة غير معدّلة، لذا يمكنها اجتياز التحقق.
الشهادة الحقيقية تقع تحت الشهادة المزيفة. ويمكننا وضع تجزئة الصورة وتجزئة ترويسة الصورة في بداية الشهادة الحقيقية.
بالنسبة لأجهزة V6 الجديدة، يتم تحديد محتوى الشهادة عبر bypass_mode 0
في هذا الوضع، يتم تخطي أي كائن باستثناء 0x30.
لذا يمكننا وضع تجزئة الصورة وتجزئة ترويسة الصورة في بداية الشهادة.
ثم نُبقي بقية الأشياء دون تعديل.
ثم يمكننا تعديل محتوى الصورة.
وهكذا نحصل على التحكم في EL3.
تحتاج إلى تعديل BL2_EXT لإزالة التحقق من lk أو atf.
ثم قم بتعديل LK لإزالة التحقق من lk_main_dtb (وإلا فسوف يتعطل)
كما تحتاج إلى تعديل LK لإزالة جميع أقفال bootloader بما في ذلك set_lock_state لتجنب إعادة القفل أو بعض الأعطال.
python parse-part-img.py [the original image file] --split -o out
بعد ذلك يمكنك رؤية الصور المنفصلة (مثل lk، bl2_ext، lk_main_dtb، aee)
python parse_preloader.py [preloader image]
يمكنك الحصول على عنوان تحميل lk/bl2_ext عبر هذا السكربت
بعد التعديل للأجهزة V6 الجديدة python sign_mtk_cert.py [single image file] -w للأجهزة V6 القديمة/أجهزة V5 python sign_mtk_cert.py [single image file] -w --legacy
ثم أعد إدراج الصورة الموقعة الجديدة
python build-part-img.py replace [original image file] --name [the single image name you want to insert back] -- file [the new signed single image]