
Huawei ハードニングカーネル向け CVE-2019-2215 PoC
CVE-2019-2215 を介した Huawei 強化カーネル向けの一時 root
このコードは P20 Pro (CLT-AL00) 向けに書かれており、カーネルオフセットはビルドフィンガープリントが 'HUAWEI/CLT-AL00/HWCLT:8.1.0/HUAWEICLT-AL00/176(C00):user/release-keys' のファームウェアから取得されています。
Samsung の KNOX と同様に、Huawei はハッカーによるエクスプロイトを防ぎ「セキュリティ」を向上させるために多くの仕組みを追加しました。
DEBUG_SPINLOCK が有効化されており、スピンロックに追加のチェックが入るkti_offset によって難読化されている(KASLR と同様)get_fs() は KERNEL_DS または USER_DS のいずれかを返すため、current_thread_info()->addr_limit を変更しても機能しないcommit_creds() を使わずに root になった場合、アクセスチェック中にプロセスは即座に強制終了されるCONFIG_SECURITY_SELINUX_DEVELOP が設定されておらず、SeLinux をグローバルな permissive 状態にできないss_initialized policydb->permissive_map security_hook_heads など、多くの重要な変数が初期化後に読み取り専用になるか、ハイパーバイザによって保護されるこれらの仕組みにより、たとえ古い Huawei デバイスが CVE-2019-2215 に対して脆弱であっても、エクスプロイトは困難になっています。
まず、patch_system.c をコンパイルして実行します。これにより、selinux マッピングを乱して avc_ss_reset() を呼び出し、selinux を無効化します。
次に、poc.c をコンパイルして実行し、root シェルを取得します。
(任意)su デーモンをコンパイルし、poc によって起動して、他のアプリが root を使用できるようにします(scripts/termux-boot を参照)。
su デーモンは https://github.com/corellium/sud から取得して変更したものです。