
Exploit dei certificati per dispositivi MTK. C'è un difetto logico nel processo di verifica dei certificati MTK. Simile a CVE-2023-20696.
Exploit dei certificati per dispositivi MTK. C'è un difetto logico nel processo di verifica dei certificati MTK. Simile a CVE-2023-20696. Patchato. CVE-2023-20696 CVE-2025-20730
Ci sono alcuni problemi con il rilevamento dell'architettura. Devono essere corretti quando avrò tempo. Oppure chiunque può fare una pull request. Questa è una versione vibe-coded e la riscriverò più tardi. Ma per ora è utilizzabile.
Questo progetto è usato solo per scopi di ricerca. Assicurati di ottenere l'autorizzazione 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 vi salta.
Queste immagini sono firmate con certificati ASN.1.
Ma c'è un difetto logico nel processo di parsing ASN.1.
Per i vecchi dispositivi V5/V6, il contenuto del certificato è identificato da bypass_mode 1.
In questa modalità, qualsiasi oggetto verrà attraversato.
Quindi possiamo creare un certificato falso con un oggetto 0x3(bit string).
Il certificato falso non è modificato. Quindi può superare la validazione.
Il certificato reale si trova sotto il certificato falso. E possiamo mettere l'hash dell'immagine e l'hash dell'header 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'header dell'immagine all'inizio del certificato.
Poi manteniamo tutto il resto invariato.
Poi possiamo modificare il contenuto dell'immagine.
Quindi otteniamo il controllo EL3.
Puoi patchare BL2_EXT per rimuovere la verifica di lk, atf o gz.
E poi patchare LK per rimuovere la verifica di lk_main_dtb (altrimenti andrà in crash).
E devi patchare LK per rimuovere tutti i blocchi del bootloader, incluso set_lock_state, per evitare che si blocchi di nuovo o alcuni crash.
python parse-part-img.py [the original image file] --split -o out
Poi puoi vedere le immagini separate (come lk, bl2_ext, lk_main_dtb, aee)
dopo il patching Per i nuovi dispositivi v6 python sign_mtk_cert.py [single image file] -w Per i vecchi dispositivi v6/v5 python sign_mtk_cert.py [single image file] -w --legacy
Poi reinserisci la nuova immagine firmata
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]
