
Exploit de cert para dispositivos MTK. Existe uma falha de lógica no processo de verificação de cert da MTK. Semelhante ao CVE-2023-20696.
Exploit de certificado para dispositivos MTK. Há uma falha lógica no processo de verificação de certificados da MTK. Semelhante à CVE-2023-20696. Pode ser corrigido em junho.
Este projeto é usado apenas para pesquisa. Certifique-se de obter autorização antes de usá-lo. Não é permitido o uso ilegal. Não é permitido usar este exploit para fornecer serviços pagos.
Para dispositivos mtk, o preloader verifica bl2_ext/lk/atf e então salta para ele.
Essas imagens são assinadas com certificados ASN.1.
Mas há uma falha lógica no processo de parsing do ASN.1.
Para dispositivos V5/V6 antigos, o conteúdo do certificado é identificado por bypass_mode 1.
Nesse modo, qualquer objeto será percorrido.
Então podemos criar um certificado falso com um objeto 0x3 (bit string).
O certificado falso não é modificado. Portanto, ele pode passar na validação.
O certificado real está sob o certificado falso. E podemos colocar o hash da imagem e o hash do cabeçalho da imagem no início do certificado real.
Para novos dispositivos V6, o conteúdo do certificado é identificado por bypass_mode 0.
Nesse modo, qualquer objeto será ignorado, exceto 0x30.
Então podemos colocar o hash da imagem e o hash do cabeçalho da imagem no início do certificado.
Depois, manter as demais coisas inalteradas.
Então podemos modificar o conteúdo da imagem.
Assim, obtemos controle EL3.
Você precisa aplicar patch no BL2_EXT para remover a verificação de lk ou atf.
E então aplicar patch no LK para remover a verificação de lk_main_dtb (caso contrário, ele irá travar)
E você precisa aplicar patch no LK para remover todos os bloqueios do bootloader, incluindo set_lock_state, para evitar que ele volte a bloquear ou cause travamentos.
python parse-part-img.py [the original image file] --split -o out
Então você pode ver as imagens separadas (como lk, bl2_ext, lk_main_dtb, aee)
python parse_preloader.py [preloader image]
Você pode obter o endereço de carregamento de lk/bl2_ext por meio deste script
depois de aplicar o patch Para novos dispositivos v6 python sign_mtk_cert.py [single image file] -w Para dispositivos v6 antigos/dispositivos v5 python sign_mtk_cert.py [single image file] -w --legacy
Em seguida, insira a nova imagem assinada de volta
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]