
Honor WIN RT (AAK-AN00) CVE-2026-43499 一時的root - 調査ノート
(全部deepseekが書いたもので、私は何もわかっていません)
デバイスのBootloaderは永久にロック(
ro.oem_unlock.supportedが空)、fastbootなし、永続suなし、Magiskなし。 唯一残された道はカーネル脆弱性。本リポジトリは「攻撃可能かどうか」から「攻撃後にどれだけ安定するか」までの完全な過程を記録する。
性質:一時的なroot、再起動で無効。
本リポジトリは、本人所有デバイス上で行ったセキュリティ研究の過程を記録するものであり、目的はカーネルPI競合の成因と安定性の境界を理解することにある。
唯一通り抜けられた経路は:
CVE-2026-43499(futex PI競合 write-what-where) + rt_sigreturn キャリア
→ LD_PRELOADでshellドメインプロセスに注入
→ 二段階式:まずSELinux Permissiveを攻撃、次にtask->real_cred / credをinit_credに変更
→ uid=0(root) context=u:r:kernel:s0、さらにsuデーモンを植え込む
しかし本当に書き残す価値があるのは「どうやってrootを取るか」ではない——取った後に起きることだ。
得られるのは安定したrootではなく、「いつでも起爆されうる状態」である。
exploitの書き込みプリミティブは偽造された
rt_mutex_waiterを本物のfutex PIチェーンに繋ぎ込み、 このwaiterのキャリアは後続のシステムコールで再利用されるカーネルスタック / スプレーページである。 ゆえにrootが着地した瞬間から、あらゆるシステムレベルのスケジューリングや優先度変更がそれを踏み、直接カーネルpanicで再起動しうる。 これはバグではなく、この攻撃手法の固有の代償である —— 詳細はdocs/03参照。
なぜカーネルバージョンを厳密に固定する必要があるか:欠陥は6.6.140で修正され、本機は6.6.118 < 6.6.140なのでまだ残っている;
同時にexploitのすべてのカーネルシンボルアドレスと「キャリア幾何」はこの一つのbuildに固定されており、カーネルが変わればオフセット表は即座に無効となり、かつ一般的にロールバック不可である。
┌─ 材料 ────────────────────────────────────────────────┐
│ boot.img + xbl_config.elf(デバイスファームウェアから抽出)│
│ ↓ シンボル解決 │
│ target.h(カーネルシンボルアドレス、kallsymsとバイト単位で照合済み)│
│ ↓ ビルド │
│ preload.so ──► デバイス側 /data/local/tmp/*.so │
└────────────────────────────────────────────────────────┘
↓ LD_PRELOAD注入
┌──────────── 二段階式(必ず二つの独立プロセス)────────────┐
│ 段階A GW_SELINUX=1 → selinux_state.enforcing = 0 │
│ 段階B GW_CHAIN=1 RTSIG_TASK_INIT=1 GW_SU=1 │
│ → task->real_cred ← &init_cred │
│ → task->cred ← &init_cred(「プリセットライター」プロセスが実行)│
│ → setresuid(0,0,0) 正規化 │
│ → 内蔵su + daemonを植え込む │
└─────────────────────────────────────────────────────────────┘
↓
uid=0(root) context=u:r:kernel:s0
必ず正しく行わなければならない三つの点(誤るとフリーズまたは直接panic):
real_cred、後にcred。 逆順だと瞬時に全権限となり、スレッドが制御不能になる。cred ≠ real_credの過渡状態が存在する。 この時いかなるsched_setaffinityもEPERMとなる → 全体がフリーズ。
正解は最初の書き込みの前に「プリセットライター」プロセスをforkしておくこと(資格情報がクリーン)。親プロセスが最初の書き込みを行い、ライターが二番目の書き込みを行い、誰も過渡状態でsyscallを発行しない。alias(image) = PAGE_OFFSET | (image − KIMAGE_TEXT_BASE + Δ)、再起動を跨いで安定;
いわゆる「slide段階」の真の価値は書き込みプリミティブの自己検証であり、KASLRの回避ではない。上流フレームワーク:
Linuxoid-cn/CVE-2026-43499-Poc-Analysis。 これはGhostLockではないことに注意 —— GhostLockはpselect経路を通り、本buildのwaiter着地点幾何と一致しない。 詳細はdocs/06参照。
もしあなたもBLロックされた機種を攻撃しているなら、まずrootを取って何をするのかをはっきり考えてほしい。 なぜならこの種の機種ではrootはおそらく十数分しか使えないウィンドウだからだ。 「rootが必要で再起動を跨いで保持できる」操作をリストアップし、一度に全部実行し、その後
rebootでクリーンな状態に戻す。 「副作用を消そう」としないこと —— それは手法そのものの代償である。
| 項目 | 値 | 説明 |
|---|
| 機種 | HONOR WIN RT、型番 AAK-AN00 | 販売名「HONOR WIN RT」 |
| SoC | Snapdragon 8 Elite SM8750-AB | HONOR WIN(AAP-AN00、SM8850-AC)とはファームウェア互換なし |
| システム | Android 16 / MagicOS 10 | — |
| カーネル | 6.6.118-android15-8-gf17133276a57-abogki518694926-4k | ★ 必須条件、文字単位で一致 |
| カーネル設定 | 4K pages、VA_BITS=39、CONFIG_FUTEX_PI=y | キャリア幾何の前提 |
| ファームウェアパッケージ | .170 | .160 / .175は未検証 |
| Bootloader | 永久ロック | fastbootなし / 永続suなし |
| ドキュメント | 内容 |
|---|
| 01 · 実現可能性分析 | なぜrt_sigreturn一本のキャリアしか残らないのか |
| 02 · 権限昇格チェーンと成功要素 | 書き込みプリミティブ、六段階チェーン、プリセットライター、成功判定 |
| 03 · 安定性の真因:PIチェーン残留 | ★ 核心。ネット切断ではなくpanic;クラッシュ点の逆アセンブリ含む |
| 04 · PC不要チャネル:Shizuku | Shizukuのrishでadbの代わりにexploitを起動 |
| 05 · KernelSUのlate-load | LKMのアクティベーション方式と、それが最も危険な起爆装置である理由 |
| 06 · 死路リスト | 試したが通れなかった道、他の人の再試行を省くため |
| 07 · 落とし穴と環境 | rootなしでpanicスタックを取得、スクリプト環境の落とし穴 |
| tools/ | 再利用可能なスクリプト(匿名化汎用版) |
| 日付 | 進展 |
|---|
| 09-08 | BL永久ロック、OEMアンロックチャネル削除済みを確認 ⇒ 公式ルートを断念、脆弱性ルートへ転換 |
| 09-09 | ベンダーアフターサービスファームウェアライブラリを攻略、boot.imgを取得、カーネルとシンボルを抽出 |
| 09-10 | キャリア探索がrt_sigreturnに収束;権限昇格成功(20:14)、uid=0 |
| 09-11 | PC不要チャネル(Shizuku)を開通;KernelSUがアクティベート可能;「ネット切断」の真因 = PIチェーン残留と定性 |