
GhostLock(CVE-2026-43499)対応 Galaxy S25 FE(作業中)
CVE-2026-43499 を Samsung Galaxy S26 シリーズに移植 — Android 16 / GKI 6.12。 単一バイナリ、3つのカーネルライン、実行時の動的パラメータ マッチングにより、理論上はビルドごとのコンパイルなしでS26シリーズ全体をカバーします。
ほとんどのGhostLock移植作業は単一デバイスまたは単一ファームウェアを対象としています。 このリポジトリは、S26ターゲット向けにすべてのメカニズムを書き直した新しい移植であり、 ファミリー全体をカバーすることが期待されています。
snothin/CyberMeowfia を保守している際に、 元のpipe physrwチャネルが不安定であること(ネットワークを切断する)に気づいたため、 そのルートを放棄して代替手段を模索しました。その後、monovibeが私が模索していた道を さらに進んでいることを発見し、そのアプローチを採用して、繰り返しデバッグを行った結果、 このリポジトリが形になりました。
uid=0(root) context=u:r:kernel:s0 として実行され、抽象unixソケット上の
su_daemon による永続的なrootシェルを実現。system_unbound_wq 上に
call_usermodehelper_exec_work を関数とする work_struct を偽造するため、カーネルは
init資格情報でデーモンを実行します。資格情報ページに対するKDPのEL2ガードは
決してトリガーされません。pselect + futex PI レース
→ ラウンドごとに1回の整列されたqword書き込み
→ attrキャリア(2つの偽のmisc fd)
controller fdがデータポインタをリターゲット
data fdが任意のカーネルアドレスを読み書き
→ slideオラクル(tracefs)
→ UMH root(workqueueインジェクション)
system_unbound_wq
ptmx open/closeストームがワーカーを起動
カーネルがinit資格情報でデーモンを実行
→ DEFEXバイパス(bind-mount)
→ su_daemon が /data/local/tmp/temp_su.sock で待機
パラメータは個々のビルドではなくカーネルライン(cn、intl、exynos の3ライン)で
マッチングされます。不明なOTAビルドは、モデルとCSCによって最も近い既知のラインに
フォールバックします。完全に不明なモデルは拒否されます(フェイルクローズ)。
組み込みビルドリストは exploit/src/params_table.c が正となります。
新しいデバイスまたはファームウェアへの移植に必要なパラメータについては PORTING.md を参照してください。
Android NDK (r26+) が必要です。実行するだけです:
cd exploit
make preload
# build/bin/preload.so (エクスプロイト) と build/embed/su_daemon_aarch64_pie (組み込みデーモン) を生成
preload.so、su_daemon_aarch64_pie、ksud をデバイスにプッシュします(adb
シェルセッション、uid 2000 から実行):
adb push exploit/build/bin/preload.so /data/local/tmp/
adb push exploit/build/embed/su_daemon_aarch64_pie /data/local/tmp/cve-2026-43499-root
adb push <ksud> /data/local/tmp/ksud
adb shell chmod 755 /data/local/tmp/cve-2026-43499-root /data/local/tmp/ksud
# 単一試行:
adb shell "env LD_PRELOAD=/data/local/tmp/preload.so sh"
このエクスプロイトは確率的(レース)であり、通常は繰り返しの試行が必要です。
成功した実行では、su_daemon が /data/local/tmp/temp_su.sock で待機し、任意の
ローカルプロセスが接続できます。
ブートクレームガード(/data/local/tmp/ghostlock-boot.log)は各ブートの実行結果を
記録します。同じブート内での2回目のフルチェーン実行は拒否されます(デバイスが
クラッシュする可能性があります)。ファイルを削除するか、BOOT_FORCE=1 を設定して
上書きします。
exploit/src/kernelsnitch/ にベンダリング)このリポジトリはApache-2.0ライセンスの下で公開されています。全文は LICENSE を、 コードの出典については NOTICE を参照してください。
| モデル | デバイスコードネーム | テスト済みビルド |
|---|
| SM-S942x (S26 Snapdragon) | m1q | S9420ZCS4AZG1, S942QOPU1AZDE, S942U1UES4AZG3, S942USQS4AZG3 |
| SM-S947x (S26+ Snapdragon) | m2q | S9470ZCS4AZG1, S947USQS4AZG3 |
| SM-S9480 (S26 Ultra CN) | m3q | S9480ZCS3AZF1, S9480ZCS4AZG1 (テスト済みビルド) |
| SM-S948x (S26 Ultra) | m3q | S9480ZHS4AZG1, S948BXXS4AZG5/6, S948NKSS4AZG3, S948U1UES2AZE1, S948USQS4AZG3 |
| SM-S942B (S26 Exynos) | m1s | S942BXXS4AZG5 |
| SM-S947B (S26+ Exynos) | m2s | S947BXXS3AZF1, S947BXXS4AZG5 |