
CVE-2026-43499を標的としたOPPO MT6835 Androidデバイス向けの概念実証エクスプロイトチェーン。プリロードペイロード、ビルドシステム、防御研究のための分析ノートを含む。
GhostLock: Linux カーネルの futex PI ユースアフターフリー脆弱性、CVE-2026-43499。 攻撃者は PI-futex の依存関係ループを悪用して競合状態を引き起こし、
CONFIG_FUTEX_PI=yのカーネルでローカル権限昇格を達成します。Target: OPPO PLS120 (OP5E1C) — Android 17、カーネル
5.15.180-android13-8-o-g7b9cfca06464分析環境: Ubuntu 24.04 x86_64 + Android NDK r29 (clang 21.0.0, API 35)
本プロジェクトは、OPPO PLS120 (OP5E1C) デバイス上で GhostLock (CVE-2026-43499) を悪用して root 権限を取得する実現可能性を研究します。既知の KASLR リーク経路をすべて体系的に検証した結果、このデバイスのセキュリティ強化の組み合わせが回避不可能な防御チェーンを構成していることを確認しました。
| フェーズ | 状態 | 説明 |
|---|---|---|
| フェーズ1:boot.img 分析 & シンボル抽出 | ✅ 完了 | OTA パッケージから boot.img を抽出 → vmlinux-to-elf でシンボルテーブルを再構築(159,668 個のシンボル) |
| フェーズ2:preload.so のコンパイル | ✅ 完了 | Android NDK r29 によるクロスコンパイル、リアルタイム書き込みログ機構を強制 |
| フェーズ3:障害診断と反復修正 | 🔄 進行中 | MM_STRUCT_SZ、MTE サポート、SLIDE スキップロジックを修正済み |
OPPO PLS120 のセキュリティ強化は exploit チェーンを全面的に封鎖しています:
| 強化項目 | 影響 |
|---|---|
CONFIG_SLAB_FREELIST_HARDENED=y | KernelSnitch の slab 衝突を阻止 |
CONFIG_KASAN_HW_TAGS=y (MTE) | アドレスタグがブルートフォースの複雑さを増大 |
CONFIG_CFI_CLANG=y | 制御フロー整合性 |
| SELinux shell ドメインポリシー | perf_event_open + /proc/kallsyms を阻止 |
CONFIG_CHECKPOINT_RESTORE=n | PR_SET_MM_MAP 経路を阻止 |
| wchan 修正のバックポート | /proc/<pid>/stat によるカーネル VA リークを阻止 |
| 手法 | 状態 | 理由 |
|---|---|---|
| perf_event_open callchain | ❌ | EACCES (SELinux shell ドメインによる封鎖) |
| /proc/kallsyms | ❌ | EACCES (kptr_restrict + SELinux) |
| wchan (/proc/<pid>/stat フィールド 35) | ❌ | カーネルに v5.16 修正が適用済み (カーネル VA ではなく 1 を返す) |
| SLIDE サイドチャネル (boot_id 上書き) | ❌ | nfulnl モジュールがロード不可 |
| PR_SET_MM_MAP スタック再利用 | ❌ | CONFIG_CHECKPOINT_RESTORE=n |
| KernelSnitch (futex ハッシュタイミング) | ⚠️ 散発的成功 | big.LITTLE のタイミングノイズが安定性に影響 |
SLIDE_MAX_ATTEMPTS=1 により SLIDE の無限ループをスキップ!route_signal での即時 break を削除し、24 回のリトライを許可本プロジェクトは、OPPO PLS120 (OP5E1C) デバイス上で GhostLock (CVE-2026-43499) を悪用した root 権限昇格の実現可能性を研究します。既知の KASLR リーク経路をすべて体系的にテストした結果、このデバイスのセキュリティ強化設定は、この exploit に対する回避不可能な防御チェーンを構成しています。
| フェーズ | 状態 | 説明 |
|---|---|---|
| フェーズ 1: boot.img 分析 | ✅ 完了 | OTA から boot.img を抽出 → vmlinux-to-elf によるシンボル再構築 (159,668 シンボル) |
| フェーズ 2: preload.so ビルド | ✅ 完了 | Android NDK r29 でクロスコンパイル、リアルタイムのディスクログを強制 |
| フェーズ 3: 診断とイテレーション | 🔄 進行中 | MM_STRUCT_SZ、MTE サポート、SLIDE バイパスロジックを修正 |
OPPO PLS120 は複数の層で exploit チェーンを阻止します:
| ハードニング機能 | 影響 |
|---|---|
CONFIG_SLAB_FREELIST_HARDENED=y | KernelSnitchのスラブ衝突をブロック |
CONFIG_KASAN_HW_TAGS=y (MTE) | アドレスタグがブルートフォースの複雑さを増大 |
CONFIG_CFI_CLANG=y | 制御フロー整合性 |
| SELinuxシェルドメインポリシー | perf_event_open + /proc/kallsymsをブロック |
CONFIG_CHECKPOINT_RESTORE=n | PR_SET_MM_MAPパスをブロック |
| wchan修正のバックポート | /proc/<pid>/statのカーネルVAリークをブロック |
| 手法 | ステータス | 理由 |
|---|---|---|
| perf_event_openコールチェーン | ❌ | EACCES (SELinuxシェルドメイン) |
| /proc/kallsyms | ❌ | EACCES (kptr_restrict + SELinux) |
| wchan (/proc/<pid>/statフィールド35) | ❌ | カーネルにv5.16修正のバックポートあり (カーネルVAではなく1を返す) |
| SLIDEサイドチャネル (boot_id上書き) | ❌ | nfulnlモジュールがロード不可 |
| PR_SET_MM_MAPスタック再利用 | ❌ | CONFIG_CHECKPOINT_RESTORE=n |
| KernelSnitch (futexハッシュタイミング) | ⚠️ 断続的 | big.LITTLEのタイミングノイズが安定性に影響 |
SLIDE_MAX_ATTEMPTS=1 によりSLIDEのデッドロックを回避!route_signal の早期ブレークを削除し、24回のリトライを許可/home/ubuntu/CyberMeowfia/
├── devices/ # Target device artifacts (OTA zip, config.gz, etc.)
├── work_bootimg/ # boot.img analysis output
│ └── oppo/ # OPPO-specific kernel data
│ ├── kernel.dec # Decompressed ARM64 Image (47MB)
│ ├── vmlinux_extracted.elf # Reconstructed vmlinux with symbols (159,668)
│ ├── kallsyms_oppo.txt # Full symbol table
│ └── kernel_config_oppo # Kernel .config (189KB)
├── IonStack/CVE-2026-43499/exploit/ # Exploit source code
│ ├── src/ # Source files (slide.c, fops.c, main.c, etc.)
│ │ ├── kernelsnitch/ # KernelSnitch futex hash timing module
│ │ └── targets/
│ │ └── oppo-pls120-BP2A.250605.015/ # OPPO-specific target configuration
│ └── build/ # Compiled binaries
├── unpack_bootimg.py # Python boot.img unpacker (v3/v4)
├── report.md # Phase 1 analysis report (Chinese)
├── GhostLock_CVE202643499_OPPO_PLS120_研究报告.md # Full research report (Chinese, 620 lines)
└── CVE202643499.txt # Research plan document
| ファイル | 説明 |
|---|---|
report.md | フェーズ1分析: boot.imgのアンパック、vmlinuxの抽出、オフセットの検証 |
GhostLock_CVE202643499_OPPO_PLS120_研究报告.md | 完全な調査レポート: 全プロセス、すべてのイテレーション、失敗分析、結論 (620行) |
IonStack/CVE-2026-43499/exploit/src/targets/oppo-pls120-BP2A.250605.015/target.h に配置:
| パラメータ | 値 |
|---|---|
KIMAGE_TEXT_BASE | 0xffffffc008000000 |
MM_STRUCT_SZ | 0x3e8 (1000バイト、mm_cache_initから検証済み) |
KERNELSNITCH_MTE_ENABLED | 1 (MTEアドレスタグ検索を有効化) |
KSNITCH_COLLISIONS | 2 (big.LITTLEの許容範囲) |
KERNELSNITCH_MAX_MISMATCH | 1 (タイミングノイズの許容範囲) |
SLIDE_MAX_ATTEMPTS | 1 (nfulnlが利用不可、FOPSパスへスキップ) |
KERNEL_PAGE_SETUP_ATTEMPTS | 6 |
SLIDE_KERNEL_PAGE_SETUP_ATTEMPTS | 12 |
FOPS_KERNEL_PAGE_SETUP_ATTEMPTS | 72 |
# Cross-compilation for ARM64 Android
# Requires Android NDK r29 installed at /home/ubuntu/android-ndk-cache/android-ndk-r29/
# Build preload.so for OPPO PLS120
cd IonStack/CVE-2026-43499/exploit
export ANDROID_NDK_HOME=/home/ubuntu/android-ndk-cache/android-ndk-r29
make PROJECT=oppo-pls120-BP2A.250605.015 preload
# Build for default Pixel target
make PROJECT=blazer-CP2A.260605.012 preload
| リソース | リンク |
|---|---|
| GhostLock 脆弱性の詳細 | Mallory AI |
| IonStack Part II 解説記事 | NebuSec AI |
| KernelSnitch ヒープ KASLR リーク | Lukas Maar |
| CVE-2026-43499 ソース | GitHub NebuSec |
ステータス: ❌ OPPO PLS120 は多層的なセキュリティ強化により、GhostLock (CVE-2026-43499) を悪用することはできません。研究用の成果物は、強化が緩いデバイスで使用するために保存されています。