
MTK 기기용 Cert 익스플로잇. MTK 인증서 검증 프로세스에는 논리적 결함이 있습니다. CVE-2023-20696과 유사합니다.
MTK 기기를 위한 Cert 익스플로잇입니다. MTK 인증서 검증 프로세스에 논리적 결함이 있습니다. CVE-2023-20696과 유사합니다. 6월에 패치될 수 있습니다.
이 프로젝트는 연구 목적으로만 사용됩니다. 사용하기 전에 반드시 승인을 받으십시오. 불법적인 사용은 허용되지 않습니다. 이 익스플로잇을 사용하여 유료 서비스를 제공하는 것도 허용되지 않습니다.
MTK 기기의 경우, preloader는 bl2_ext/lk/atf를 검증한 후 해당 이미지로 점프합니다.
이러한 이미지는 ASN.1 인증서로 서명됩니다.
그러나 ASN.1 파싱 과정에 논리적 결함이 있습니다.
구형 V5/V6 기기의 경우, 인증서 내용은 bypass_mode 1로 식별됩니다.
이 모드에서는 모든 객체가 진입됩니다.
따라서 0x3(비트 문자열) 객체로 가짜 인증서를 만들 수 있습니다.
가짜 인증서는 수정되지 않으므로 검증을 통과할 수 있습니다.
실제 인증서는 가짜 인증서 아래에 있습니다. 그리고 실제 인증서의 시작 부분에 이미지 해시와 이미지 hdr 해시를 넣을 수 있습니다.
신형 V6 기기의 경우, 인증서 내용은 bypass_mode 0으로 식별됩니다.
이 모드에서는 0x30을 제외한 모든 객체가 건너뛰어집니다.
따라서 인증서 시작 부분에 이미지 해시와 이미지 hdr 해시를 넣을 수 있습니다.
그런 다음 다른 부분은 수정하지 않은 채 유지합니다.
그러면 이미지 내용을 수정할 수 있습니다.
그래서 EL3 제어권을 얻을 수 있습니다.
BL2_EXT를 패치하여 lk 또는 atf 검증을 제거해야 합니다.
그런 다음 LK를 패치하여 lk_main_dtb 검증을 제거해야 합니다(그렇지 않으면 충돌합니다).
또한 다시 잠기거나 일부 충돌이 발생하는 것을 방지하기 위해 set_lock_state를 포함한 모든 부트로더 잠금을 제거하도록 LK를 패치해야 합니다.
python parse-part-img.py [원본 이미지 파일] --split -o out
그러면 분리된 이미지(lk,bl2_ext,lk_main_dtb,aee)를 확인할 수 있습니다.
python parse_preloader.py [preloader 이미지]
이 스크립트를 통해 lk/bl2_ext 로드 주소를 얻을 수 있습니다.
패치 후
신형 v6 기기의 경우
python sign_mtk_cert.py [단일 이미지 파일] -w
구형 v6 기기/v5 기기의 경우
python sign_mtk_cert.py [단일 이미지 파일] -w --legacy
그런 다음 새로 서명된 이미지를 다시 삽입합니다.
python build-part-img.py replace [원본 이미지 파일] --name [다시 삽입하려는 단일 이미지 이름] -- file [새로 서명된 단일 이미지]