
Exploit per certificati per dispositivi MTK. C'è un difetto logico nel processo di verifica dei certificati MTK. Simile a CVE-2023-20696.
Exploit di certificazione per dispositivi MTK. C'è un difetto logico nel processo di verifica dei certificati MTK. Simile a CVE-2023-20696. Potrebbe essere risolto a giugno.
Questo progetto è utilizzato solo per scopi di ricerca. Assicurati di essere autorizzato prima di usarlo. Non è consentito l'uso illegale. Non è consentito utilizzare questo exploit per fornire servizi a pagamento.
Per i dispositivi MTK, il preloader verifica bl2_ext/lk/atf e poi salta ad essi. Queste immagini sono firmate con certificati ASN.1. Ma c'è un difetto logico nel processo di analisi ASN.1. Per i vecchi dispositivi V5/V6, il contenuto del certificato è identificato da bypass_mode 1. In questa modalità, qualsiasi oggetto verrà esaminato. Quindi possiamo creare un certificato falso con l'oggetto 0x3 (bit string). Il certificato falso è non modificato. Quindi può superare la validazione. Il certificato reale è sotto quello falso. E possiamo mettere l'hash dell'immagine e l'hash dell'intestazione dell'immagine all'inizio del certificato reale. Per i nuovi dispositivi V6, il contenuto del certificato è identificato da bypass_mode 0. In questa modalità, qualsiasi oggetto verrà saltato tranne 0x30. Quindi possiamo mettere l'hash dell'immagine e l'hash dell'intestazione dell'immagine all'inizio del certificato. Poi mantenere tutto il resto invariato. Quindi possiamo modificare il contenuto dell'immagine. Così otteniamo il controllo EL3. Devi patchare BL2_EXT per rimuovere la verifica di lk o atf. E poi patchare LK per rimuovere la verifica di lk_main_dtb (altrimenti si blocca). E devi patchare LK per rimuovere tutti i blocchi del bootloader, incluso set_lock_state, per evitare che si blocchi di nuovo o crash.
python parse-part-img.py [il file immagine originale] --split -o out
Poi vedrai immagini separate (come lk, bl2_ext, lk_main_dtb, aee)
python parse_preloader.py [immagine preloader]
Puoi ottenere l'indirizzo di caricamento di lk/bl2_ext tramite questo script
dopo aver patchato Per i nuovi dispositivi v6 python sign_mtk_cert.py [file immagine singolo] -w Per vecchi dispositivi v6/v5 python sign_mtk_cert.py [file immagine singolo] -w --legacy
Poi reinserisci la nuova immagine firmata
python build-part-img.py replace [file immagine originale] --name [il nome della singola immagine che vuoi reinserire] -- file [la nuova singola immagine firmata]