
Exploit de certificado para dispositivos MTK.Hay una falla lógica en el proceso de verificación de certificados de MTK.Similar a CVE-2023-20696.
Exploit de certificados para dispositivos MTK. Hay una falla lógica en el proceso de verificación de certificados de MTK. Similar a CVE-2023-20696. Puede estar parcheado en junio.
Este proyecto se utiliza únicamente para investigación. Asegúrate de obtener autorización antes de usarlo. No está permitido su uso ilegal. No está permitido utilizar este exploit para ofrecer servicios de pago.
Para dispositivos MTK, el preloader verifica bl2_ext/lk/atf y luego salta a él.
Estas imágenes están firmadas con certificados ASN.1.
Pero hay una falla lógica en el proceso de análisis ASN.1.
Para dispositivos V5/V6 antiguos, el contenido del certificado se identifica mediante bypass_mode 1.
En este modo, se recorre cualquier objeto.
Así que podemos crear un certificado falso con un objeto 0x3(bit string).
El certificado falso no está modificado. Así que puede pasar la validación.
El certificado real está debajo del certificado falso. Y podemos poner el hash de la imagen y el hash de la cabecera de la imagen al principio del certificado real.
Para dispositivos V6 nuevos, el contenido del certificado se identifica mediante bypass_mode 0.
En este modo, se omite cualquier objeto excepto 0x30.
Así que podemos poner el hash de la imagen y el hash de la cabecera de la imagen al principio del certificado.
Luego mantén el resto sin modificar.
Entonces podemos modificar el contenido de la imagen.
Así obtenemos control sobre EL3.
Necesitas parchear BL2_EXT para eliminar la verificación de lk o atf.
Y luego parchear LK para eliminar la verificación de lk_main_dtb (de lo contrario, fallará).
Y necesitas parchear LK para eliminar todos los bloqueos del bootloader, incluido set_lock_state, para evitar que se vuelva a bloquear o que ocurran algunos fallos.
python parse-part-img.py [the original image file] --split -o out
Luego puedes ver imágenes separadas (como lk,bl2_ext,lk_main_dtb,aee).
python parse_preloader.py [preloader image]
Puedes obtener la dirección de carga de lk/bl2_ext mediante este script.
después de parchear Para dispositivos v6 nuevos python sign_mtk_cert.py [single image file] -w Para dispositivos v6 antiguos/v5 python sign_mtk_cert.py [single image file] -w --legacy
Luego inserta de nuevo la nueva imagen firmada.
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]