
ロジクールGクラウド · GhostLock CVE-2026-43499 root 試み
⚠️ 研究および防御目的のみ
本リポジトリの全コンテンツは DeepSeek AI によって生成されており、セキュリティ研究、脆弱性分析、防御的セキュリティ評価のみを目的としています。
標準のエクスプロイトチェーンは適用不可
CVE-2026-43499 の脆弱性は存在し、futex PI race を介してトリガー可能です(EDEADLK 確認済み)。ただし Qualcomm は rtmutex のコアコードを書き換えており(rbtree → bitmap/リンクリスト)、標準 IonStack の書き込みプリミティブ(rb_erase 制約付き書き込み)はこのカーネルには存在しません。
| 項目 | 値 |
|---|
| 端末モデル | Logitech G Cloud (HALO) |
| ファームウェアバージョン | SQ02K.60.0228 (2025-08-27) |
| SoC | Qualcomm Snapdragon 720G (SM7125, ATOLL) |
| GPU | Adreno 618 (700MHz) |
| CPU | Kryo 465: 2×Cortex-A76 @2.3GHz + 6×Cortex-A55 @1.8GHz |
| プロセス | 8nm |
| メモリ | 4GB LPDDR4X |
| ストレージ | 64GB UFS |
| ディスプレイ | 7インチ IPS LCD, 1920×1080, 60Hz |
| バッテリー | 6000mAh |
| 接続 | Wi-Fi 5, Bluetooth 5.1, USB-C 3.1 |
| カーネル | Linux 4.14.190-perf+ (Clang 10.0.7, GNU ld 2.27) |
| カーネルビルド | scm@a9b0f71b66dc, SMP PREEMPT, 2025-08-27 |
| カーネルベース | Qualcomm LA.UM.9.1.r1-09200-SMxxx0.0 |
| Android バージョン | Android 11 (API 31) |
| ビルド元 | Tencent Level Infinite (Zing build system) |
| Bootloader | ロック済み, avb=vbmeta, dm-verity 有効 |
| KASLR | 有効(perf_event_open で迂回可能) |
| カーネル保護 | KPTI ✅ / PAN ✅ / SCS ❌ / CFI ❌ / PAC ❌ |
| SELinux | Enforcing |
| ハードウェア ID | GR0006 (Logitech HALO CN) |
| ソフトウェアパートナー | Logitech (ハードウェア) + Tencent Games (ソフトウェア) |
📥 Mega.nz ダウンロードリンク:
[https://mega.nz/folder/I2MUkQyD#n6bG8gzsjqKNdpk8napniQ]含まれるファイル:
Logitech-HALO_CN-SQ02K.60.0228-USER.zip— 完全なファームウェア (1.37 GB)boot.img— 完全な boot イメージ (64 MB)kernel— 非圧縮の ARM64 カーネル (35 MB)kernel.gz— 圧縮カーネル (15 MB)ramdisk— 起動用 ramdisk (87 KB)config.txt— 完全なカーネルビルド設定 (61 KB)
GhostLock-SD720G-CVE-2026-43499/
├── exploit/ # カーネルエクスプロイトのソースとバイナリ
│ ├── sd720g_exploit.c # メインエクスプロイト(競合トリガー + KASLR + ログ)
│ ├── sd720g_exploit # コンパイル済み ARM64 バイナリ (2.1 MB)
│ ├── target_sd720g.h # コアシンボルオフセット(12 個の関数)
│ ├── target_sd720g_complete.h # 完全な 37 シンボルテーブル
│ ├── perf_leak_sd720g.c # KASLR ベースアドレスリークツール
│ ├── perf_leak # コンパイル済みバイナリ (2.1 MB)
│ └── compile_perf_leak.bat # NDK ビルドスクリプト
│
├── preload/ # LD_PRELOAD 共有ライブラリ
│ ├── sd720g_preload.c # コンストラクタによるエクスプロイト自動実行
│ ├── arm.so # コンパイル済み ARM64 .so (16 KB)
│ └── compile_preload.bat # ビルドスクリプト
│
├── tools/ # 解析・抽出スクリプト
│ ├── extract_kallsyms.py # 純 Python の kallsyms パーサー(PIE 対応)
│ ├── extract_symbols.py # シンボルオフセット抽出ツール
│ ├── find_ghostlock_bug.py # pi_blocked_on=NULL パターンのバイナリ検索
│ ├── reanalysis.py # 0x105aeb0 と rb_erase の呼び出しチェーン追跡
│ ├── trace_waiter.py # rt_mutex_waiter フィールド書き込み検索
│ ├── analyze_pi_state.py # pi_state 割り当て/解放ライフサイクル解析
│ └── kgsl_uaf_test.c # KGSL GPU UAF トリガーテスト
│
├── docs/ # 総合解析ドキュメント
│ ├── CVE2026-43499_SD720G_分析.md # 完全な解析レポート(中国語)
│ ├── GHOSTLOCK_SD720G_PORT_RECORD.md # 移植記録と発見事項
│ ├── CVE2026-43499_SD720G_参考数据汇总.md # 参考データとシンボルテーブル
│ ├── ALTERNATIVE_STRATEGY.md # 代替攻撃経路
│ ├── HEAP_ANALYSIS.md # ヒープ/pi_state ライフサイクル
│ ├── STACK_ANALYSIS.md # スタック回収の実現可能性
│ ├── WRITE_PRIMITIVE.md # 書き込みプリミティブ研究
│ ├── BOOT_ANALYSIS.md # ブートイメージ構造
│ └── FINAL_ANALYSIS.md # 最終結論
| 項目 | 説明 |
|---|---|
| KASLR リーク | perf_event_open が PERF_TYPE_SOFTWARE 経由で正常に動作(paranoid=-1) |
| Futex PI 競合 | EDEADLK (errno=35) でデッドロック経路への到達を確認 |
| シンボル抽出 | kallsyms から 37 個のシンボルを抽出(commit_creds, prepare_kernel_cred, init_task など) |
| LD_PRELOAD 読み込み | arm.so は正常にコンパイルされ、デバイス上で読み込み・実行可能 |
| 項目 | 理由 |
|---|---|
| Qualcomm Bitmap RT Mutex | rt_mutex_adjust_prio_chain は標準の rbtree の代わりに bitmap 優先キューを使用 |
| スタック上 Waiter なし | remove_waiter のフレームはわずか 0x30(48 バイト)で、ローカルの struct rt_mutex_waiter は存在しない |
| デッドコード | remove_waiter (0xCEAA0) はカーネルバイナリ内で直接の呼び出し元なし |
| rb_erase チェーンなし | 0x105aeb0 は ring buffer の操作関数であり、rb_erase ではない |
| pi_state ライフサイクル | 直接の kfree ではなく refcount+RCU を使用しており、標準 Linux とは異なる |
| Big.LITTLE | KernelSnitch の mm_struct リークは A76+A53 のヘテロジニアス CPU では失敗する |
| CONFIG_CRYPTO_USER_API_AEAD | 未有効 — CVE-2026-31431 (Copy Fail) は利用不可 |
CVE-2026-43499 の脆弱性は存在: ✅ (str xzr at 0xdbf10)
標準の IonStack エクスプロイトチェーン: ❌ (Qualcomm のコードは異なる)
代替の書き込みプリミティブ: ⚠️ 現在の解析では未発見
# ファイルをプッシュ
adb push preload/arm.so /data/local/tmp/
adb push exploit/perf_leak /data/local/tmp/
adb shell chmod 755 /data/local/tmp/arm.so /data/local/tmp/perf_leak
# ステップ 1:KASLR ベースアドレスをリーク
adb shell /data/local/tmp/perf_leak
# ステップ 2:GhostLock 競合をトリガー
adb shell LD_PRELOAD=/data/local/tmp/arm.so env
# クラッシュ後に dmesg を確認
adb shell dmesg | grep -A 30 "PC\|Call trace\|Internal error"
研究目的のみ
本リポジトリのコンテンツはサイバーセキュリティ研究および防御目的のみに使用されます。著者は悪用について一切責任を負いません。
DeepSeek AI により生成
本リポジトリのすべてのコードと解析内容は DeepSeek AI の支援により生成されており、学習・研究の参考のみを目的としています。