
Эксплойт сертификата для устройств MTK. Существует логическая ошибка в процессе верификации сертификата MTK. Аналогично CVE-2023-20696.
Эксплойт сертификатов для устройств MTK. В процессе верификации сертификатов MTK есть логическая ошибка. Аналогично CVE-2023-20696. Исправлено. CVE-2023-20696 CVE-2025-20730
Есть некоторые проблемы с определением архитектуры. Нужно будет исправить, когда будет свободное время. Или кто-то может сделать pull request. Это версия, написанная на вибрациях (vibe-coded), и я перепишу её позже. Но сейчас она рабочая.
Этот проект предназначен только для исследований. Убедитесь, что вы получили разрешение перед использованием. Запрещено использовать в незаконных целях. Не разрешается использовать этот эксплойт для оказания платных услуг.
Для устройств MTK прелоадер проверяет bl2_ext/lk/atf, а затем переходит к нему.
Эти образы подписаны сертификатами ASN.1.
Но в процессе разбора ASN.1 есть логическая ошибка.
Для старых устройств V5/V6 содержимое сертификата определяется через bypass_mode 1.
В этом режиме любой объект будет обработан.
Поэтому мы можем создать поддельный сертификат с объектом 0x3 (битовая строка).
Поддельный сертификат не изменён. Так что он проходит проверку.
Настоящий сертификат находится под поддельным. И мы можем поместить хэш образа и хэш заголовка образа в начало настоящего сертификата.
Для новых устройств V6 содержимое сертификата определяется через bypass_mode 0
В этом режиме все объекты, кроме 0x30, пропускаются.
Поэтому мы можем поместить хэш образа и хэш заголовка образа в начало сертификата.
Затем остальное оставить без изменений.
Затем мы можем изменить содержимое образа.
Так мы получаем контроль над EL3.
Вы можете пропатчить BL2_EXT, чтобы удалить проверку lk, atf или gz.
А затем пропатчить LK, чтобы удалить проверку lk_main_dtb (иначе произойдет сбой).
И вам нужно пропатчить LK, чтобы удалить все блокировки загрузчика, включая set_lock_state, чтобы избежать обратной блокировки или некоторых сбоев.
python parse-part-img.py [the original image file] --split -o out
Затем вы увидите отдельные образы (такие как lk, bl2_ext, lk_main_dtb, aee)
после патчинга Для новых устройств 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]
