Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
GhostLock-for-OnePlus — (CVE-2026-43499)ブートローダーがロック解除されていない OnePlus デバイス向けカーネルエクスプロイトプログラム。 | Kitploit
ツール/GitHubGitHub/p2p3p/ghostlock-for-oneplus
Androidセキュリティ特権昇格エクスプロイトポストエクスプロイト学習と教育ペイロード開発バイナリエクスプロイト
GitHubp2p3p/ghostlock-for-oneplus

GhostLock-for-OnePlus

(CVE-2026-43499)ブートローダーがロック解除されていない OnePlus デバイス向けカーネルエクスプロイトプログラム。

リポジトリを見る
3613482ヶ月前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

GhostLock — OnePlus

中文

ロックされたブートローダーを搭載した OnePlus 端末を対象とするカーネルエクスプロイトです。CVE-2026-43499 を使用して、ブートローダーのロック解除や boot.img の変更なしに root 権限を取得します。

認可されたセキュリティ研究および教育目的のみに使用できます。


目次

  • 脆弱性の概要
  • 対応デバイス
  • 前提条件
  • ビルド
  • 使用方法
  • 実行モード
  • 技術詳細
  • ファイル構成
  • 新しいデバイスの追加
  • FAQ

脆弱性の概要

項目詳細
CVECVE-2026-43499
種別Futex PI(優先度継承)Use-After-Free
影響範囲Linux kernel 2.6.39 ~ 7.1
修正バージョンMainline 7.1(コミット 3bfdc63936dd)
Android の状態GKI 6.12.x は依然として脆弱

根本原因

pselect6 システムコールは fd_set をカーネルスタックにコピーします。futex PI ウェイター機構と組み合わせると、解放されたスタックフレームが rt_mutex_waiter 構造体として再割り当てされる可能性があります。PI チェーンの走査中に、rb-tree のリバランス処理によって制御されたデータが任意のカーネルアドレスに書き込まれます。

チェーン

futex PI UAF (CVE-2026-43499)
  ├─ Forge rt_mutex_waiter object
  ├─ Control kernel stack via pselect/select fd_set layout
  ├─ Trigger rt_mutex PI operation for arbitrary write
  ├─ Write 1: selinux_state.enforcing = 0
  └─ Write 2: cred → init_cred (uid=0, full capabilities)

対応デバイス

デバイスコードネームSoCカーネルファームウェアステータス
OnePlus Ace 6TPLR110SM8845 (Snapdragon 8s Elite)6.12.38-android16-5-...-ab14275539-4kColorOS 16.0.2.403✅ 検証済み
OnePlus Ace 6TPLR110SM8845 (Snapdragon 8s Elite)6.12.38-android16-5-...-ab14552068-4kColorOS 16.0.8.301✅ 検証済み
OnePlus 15PLK110SM8845 (Snapdragon 8s Elite)6.12.23-android16-5-...-ab14541642-4k—✅ 検証済み

同じ SoC ファミリー、Android 16、またはカーネル 6.12.x を搭載した他の OnePlus 端末は、boot.img のオフセット抽出によって対応できます。


前提条件

ksud(KernelSU に必須)

GhostLock は権限昇格を処理します。KernelSU のインストールには ksud が必要です(KMI 固有の kernelsu.ko に同梱されています)。

入手元備考
ReSukiSU APK(推奨)ReSukiSU をインストールしてください。APK には libksud.so がバンドルされています。
CI リリースReSukiSU CI からダウンロードします(ksud-aarch64-linux-android.zip)

ksud がない場合、エクスプロイトは依然として uid=0 の root シェルを取得できますが、KernelSU はインストールされず、su は永続化されません。


ビルド

前提条件

  • Android NDK (r25+)
  • ANDROID_NDK_HOME または ANDROID_NDK_ROOT を設定します。

ビルド

# Default (API 35)
make

# Specify API level
make API=34

# Specify NDK path
NDK=/path/to/android-ndk make

成果物

ghostlock — 静的リンクされた ARM64 ELF 実行ファイルです。


使用方法

初回セットアップ

# 1. Enable ADB TCP mode
adb tcpip 5555

# 2. Push ADB key (required for bootstrap mode)
adb push ~/.android/adbkey /data/local/tmp/a/adbkey

# 3. Push the exploit
adb push ghostlock /data/local/tmp/a/e
adb shell chmod 755 /data/local/tmp/a/e

初回成功後、resetprop が自動的に persist.adb.tcp.port=5555 を設定するため、以降の再起動では完全自動実行が可能になります。


実行モード

フルエクスプロイト(ADB シェルコンテキスト)

/data/local/tmp/a/e
  • perf が利用可能で、正確な子プロセスの task_struct リークが可能
  • 2段階: W1 で SELinux 無効化 → W2 で権限昇格 → KernelSU ロード

ブートストラップモード(アプリコンテキスト、seccomp 制限あり)

/data/local/tmp/a/e --bootstrap
  1. Write 1 → SELinux を無効化
  2. 解放された権限を使用して setprop で ADB TCP 5555 を有効化
  3. 内蔵 Mini ADB クライアントが 127.0.0.1:5555 に接続
  4. 事前にプッシュされたキーによる RSA 認証
  5. ADB シェル経由でフルエクスプロイトを実行(seccomp なし)

Write 1 のみ

/data/local/tmp/a/e --write1
  • 最大 20 回試行
  • デバッグや一時的な SELinux 無効化に有用

技術詳細

1. 実行時カーネルマッチング

オフセットは src/devices/offsets.h のルックアップテーブルに格納され、uname -r をキーとします。プログラムは起動時に自動マッチングを行い、未知のカーネルは拒否されます。

static const struct kernel_offsets known_offsets[] = {
  OFFSETS_ENTRY("6.12.38-android16-5-...-ab14275539-4k", ...),
  OFFSETS_ENTRY("6.12.38-android16-5-...-ab14552068-4k", ...),
  OFFSETS_ENTRY("6.12.23-android16-5-...-ab14541642-4k", ...),
  { .uname_r = NULL }  /* sentinel */
};

オフセットのソース

種類数抽出方法
kallsyms グローバルシンボル28tools/extract_target.py
BTF 構造体フィールド57tools/extract_btf.py
導出値9自動計算
固定定数12ハードコード

BTF 検証済み構造体

構造体フィールド数目的
task_struct17プロセス記述子、cred、seccomp
rt_mutex_waiter6UAF 偽造対象
cred4資格情報、ケーパビリティ
seccomp3seccomp フィルタの状態
pipe_inode_info11パイプバッファ操作
file_operations13偽の fops テーブル
mm_struct1メモリ記述子の所有者

2. KASLR バイパス

SLIDE モード — boot_id リーク

カーネルポインタが制限されている場合(kptr_restrict)、カーネルアドレスで上書きされた boot_id を介してベースアドレスをリークします。

Read /proc/sys/kernel/random/boot_id
  └─ UUID contains nfulnl_logger address
      └─ KASLR slide = leaked_addr - image_offset
          └─ kaslr_base

FOPS/CFI モード — fops テーブルリーク

ashmem デバイスにアクセスできる場合、configfs の読み書きプリミティブを使用して ashmem fops テーブルから関数ポインタを読み取り、KASLR オフセットを計算します。

3. カーネルヒープスプレー

order-3(32KB)ページ上にカーネルオブジェクトを偽造します。

  • 偽の file_operations — ashmem miscdevice の fops ポインタを乗っ取ります
  • 偽の rt_mutex_waiter — PI チェーンのウェイターノードをシミュレートします
  • 偽の task_struct — PI 走査中のタスク参照
  • 偽の rt_mutex(ロック) — 正しいウェイター/オーナー情報

SKB(ソケットバッファ) + KernelSnitch を介して実装されます。

  • KernelSnitch — futex ハッシュ衝突による mm_struct アドレスのリーク
  • SKB スプレー — sendmsg によるカーネルヒープの充填

4. 物理メモリ読み書き(パイプ)

KASLR ベースを取得した後、パイプバッファを使用して物理レベルでのメモリアクセスを行います。

1. Locate pipe buffer in physmap
2. Forge pipe_buffer ops table pointing to known pipe_buf_ops
3. Hijack pipe_buffer.page to target physical address
4. Arbitrary physical read/write via normal pipe operations

対応: pipe_read64、pipe_write64、pipe_phys_read_data、pipe_phys_write_data

5. 2段階書き込み

Write 1 — SELinux の無効化

Target: selinux_state.enforcing (offset 0x00)
Method: child-node PI write → forge waiter __rb_parent_color
        pointing to selinux_enforcing - 8
        rb-tree rebalance writes 0x00

Write 2 — Root への権限昇格

Target: child process cred pointer
Method: 1. fork child → perf_find_task() locate task_struct
        2. calculate cred field offset
        3. child-node PI write → cred = init_cred (uid=0, full caps)
        4. clear seccomp (TIF_SECCOMP + seccomp struct zeroed)

cred の上書き後に、ケーパビリティの読み戻し検証が実行されます。

6. 内蔵 Mini ADB クライアント

src/core/miniadb.c — ブートストラップモード用の軽量 ADB プロトコルクライアントです。

1. TCP connect 127.0.0.1:5555
2. A_CNXN → connection request
3. A_AUTH → RSA token challenge
4. dlopen("libcrypto.so") → PEM_read_bio_RSAPrivateKey → RSA_sign
5. A_AUTH (AUTH_SIGNATURE) → signed response
6. A_CNXN → connection established
7. A_OPEN "shell:/data/local/tmp/a/e" → full exploit

SHA-1 および SHA-256 署名アルゴリズムに対応しています。


ファイル構成

ツールをダウンロード