
ブートチェーンを乗っ取ろう - 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 はモジュラスと署名をBIGINT形式でスタックバッファに読み込みます。
crypto_ftbl->ModExp がバッファによって上書きされるため、secmath_BIGINT_modexp はモジュラスから私たちのシェルコードへジャンプします。
詳細は 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
これはKatanaが悪用するCVEですCVE-2021-30327をQualcommに報告しましたこのエクスプロイトのスニッフィングを手伝ってくれましたこのまさにその脆弱性を悪用するツールをくれましたスクリプトのベース