
우리의 부트체인을 하이재킹하자 - CVE-2021-30327
2016년부터 2019년 사이에 출시된 Qualcomm 기기를 위한 BootROM 익스플로잇입니다.
MSM8998 (Nazgul) SoC에서는 0x13 (SAHARA_RESET_STATE_MACHINE_ID) 명령이 추가되었습니다. 이 명령은
boot_sahara_entry를 호출하는데, 이 함수는 Sahara를 재초기화하기 위한 것입니다. 취약점은 이 함수를 호출할 때마다
스택 포인터가 0x60만큼 감소하고 스택 보호 장치가 없다는 점입니다. 충분히 많은 호출을 통해 사용 가능한 스택 공간(0x3000)을
소진시키고, 스택 너머의 메모리를 손상시켜 스택 버퍼가 일부 전역 함수 포인터 테이블과 겹치게 만듭니다.
secboot_verify_cert_signature는 modulus와 서명을 BIGINT 형식으로 스택 버퍼에 읽어들입니다.
crypto_ftbl->ModExp가 버퍼에 의해 덮어씌워졌기 때문에 secmath_BIGINT_modexp는 modulus에서 우리의 셸코드로 점프하게 됩니다.
자세한 내용은 HEXACON2023 - Bug Tales : Life and Death in the Sahara에서 확인할 수 있습니다.
[!CAUTION] SoC가 취약하다고 해서 반드시 익스플로잇할 수 있다는 의미는 아닙니다! 여기에 나열된 SoC가 있다면, 해당 기기에 비밀 정보를 저장하지 마십시오. Cellebrite, MSAB 및 Oxygen Forensics는 이 CVE 덕분에 해당 SoC가 장착된 기기의 사용자 데이터를 복호화할 수 있습니다.

usage: katana.py [-h] -s SOC -e EXPLOIT [-f FIREHOSE]
A PoC for the CVE-2021-30327 vulnerability in Qualcomm Sahara
options:
-h, --help show this help message and exit
-s, --soc SOC SoC model
-e, --exploit EXPLOIT
Exploit PBL (CVE-2021-30327) with a payload
-f, --firehose FIREHOSE
DevPrg image in case the payload reinitializes Sahara
This is the CVE which Katana exploitsReported CVE-2021-30327 to QualcommHelped with sniffing this exploitGave me a tool which was exploiting this exact VulnerabilityScript base