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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
honor-6.12.38-43499-research — Honor YLP-W00 カーネル 6.12.38 における CVE-2026-43499 futex UAF のエクスプロイト試行を記録した研究リポジトリ。PoC ソース、カーネルオフセット、失敗した権限昇格チェーンの分析を含む。 | Kitploit
ツール/GitHubGitHub/pyyyc/honor-6.12.38-43499-research
Androidセキュリティ特権昇格メモリフォレンジック脆弱性分析エクスプロイトリバースエンジニアリング論文と研究バイナリエクスプロイト

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
GitHub
pyyyc/honor-6.12.38-43499-research

honor-6.12.38-43499-research

Honor YLP-W00 カーネル 6.12.38 における CVE-2026-43499 futex UAF のエクスプロイト試行を記録した研究リポジトリ。PoC ソース、カーネルオフセット、失敗した権限昇格チェーンの分析を含む。

リポジトリを見る
8日前未レビュー

CVE-2026-43499 Honor YLP-W00 (6.12.38 PGO) 権限昇格研究

研究状況:脆弱性は確認済みでトリガー可能、PI walk は成功しクラッシュしないが、完全な権限昇格チェーンは未実装。上流の更新を待機中。

本リポジトリは、Honor YLP-W00 タブレット(カーネル 6.12.38、+pgo+bolt+lto+mlgo)上で CVE-2026-43499 を利用した一時的な権限昇格の完全な研究過程を記録したものである。

一言結論

脆弱性トリガー成功(EDEADLK)、PI chain walk 成功(sched_setattr=0、クラッシュなし)。しかし PGO コンパイルにより do_futex がインライン化され、スタック再利用キャリアはすべて失敗。CyberMeowfiaNS の late_refs 書き込みプリミティブも slab ジオメトリの不一致によりヒットしない。

デバイス情報

項目値
機種Honor YLP-W00(タブレット)
システムHONORYLP-W00/10DLDLD170SP3C00E144
システムバージョン10.0.0.170 (MagicOS 10.0)
カーネル6.12.38-android16-5-gfde7767f6ef6-abogki481467632-4k
コンパイル+pgo,+bolt,+lto,+mlgo (clang 19.0.1)
Kernel SHA-25648b622a20a700cdde0b8f2f6e83959df00a7efedf52f347377cf542f7b58948e
Bootloaderロック済み
SELinuxEnforcing
kstack ランダム化無効
ashmemRust 書き換え
MTEハードウェアサポートありだが KASAN 未使用

脆弱性確認

CyberMeowfiaNS の監査により VULNERABLE_PATTERN_PRESENT を確認。同一 kernel SHA-256 上に 2 件の成功事例(honor-mt6993, honor8e5)があるが、それらは late_refs 書き込みプリミティブを使用しており、本デバイスでは再現できない(詳細は後述)。

カーネルジオメトリ(PGO による do_futex インライン化)

Honor 6.12.38 カーネルは +pgo+bolt+lto+mlgo でコンパイルされており、__arm64_sys_futex が直接 futex_wait_requeue_pi を呼び出し、do_futex 中間層をスキップする。futex 呼び出しチェーンは標準の 3 層から 2 層に変化する:

標準 GKI:  __arm64_sys_futex -> do_futex -> futex_wait_requeue_pi
本デバイス: __arm64_sys_futex -> futex_wait_requeue_pi (do_futex がインライン化)

これにより waiter はより浅いスタック位置(深さ 0x130、標準の 0x1b0+ ではない)に置かれ、すべての標準スタック再利用キャリアのカバレッジジオメトリが一致しなくなる。

rt_mutex_waiter レイアウト

フィールドオフセットサイズ
tree_entry (rb_node)+0x0024B
pi_tree_entry (rb_node)+0x1824B
lock+0x388B
prio+0x444B
deadline+0x488B
task+0x508B
ww_ctx+0x588B
合計サイズ0x70112B

主要シンボルオフセット

シンボルオフセット
init_task0x023ecf00
init_cred0x02402cb0
root_task_group0x0261a740
selinux_state.enforcing0x026663c8
rb_erase0x00bce274
rt_mutex_adjust_prio_chain0x115060c
commit_creds0x00b89c10
worker_thread0x00adfef8
remove_waiter0x0112b20

研究アプローチと結果

方向 1:スタック再利用キャリア(すべて失敗)

safe mode で UAF トリガーと PI walk 成功を確認:

[futex] CMP_REQUEUE_PI ret=-1 errno=35 (EDEADLK)    ← UAF トリガー成功
[futex] consumer sched_setattr ret=0 errno=0         ← PI walk 成功, クラッシュなし

デバイスはオンラインを維持し、boot_id は変化せず、SELinux は依然 Enforcing。rb_erase は有効だが無意味なアドレスに書き込んだ。

試行したスタック再利用キャリア:

キャリア原理結果
pselectfd_set スタックコピーshift=26(PGO インライン化)、fd_set 容量不足
MCAST_JOIN_SOURCE_GROUP0x108 バイトスタックコピーWAITER_OFF=0x308 >> 0x108、重複なし
adjtimextimex 構造体スタックコピーbuf depth 0x118 < waiter 0x130、重複なし
io_submitstruct iocb スタック上書きwaiter[0x28..0x67] を上書き、lock@0x58 は範囲外
PR_SET_MM_MAPprctl スタック書き込みEPERM
シグナル配送 (do_signal)pt_regs スタック保存フレームが waiter[0x00..0x28] を上書き、task@0x50 と lock@0x58 が他のフレームで無効値に上書きされクラッシュ
rt_sigreturnfpsimd vregs 512B6.12.38 では ldtr で per-cpu 領域にロードされ、カーネルスタックを経由しない

核心的な障害:waiter は深さ 0x130 にあり、tree_entry(+0x00) と pi_tree_entry(+0x18) は一部のキャリアで上書き可能だが、task(+0x50) と lock(+0x58) はより深くにあり、既知のキャリアでは到達できない。tree_entry を上書きしても rb_erase を空パス(NULL 書き込み)にしか導けず、目標アドレスに誘導できない。

方向 2:CyberMeowfiaNS late_refs 書き込みプリミティブ(失敗)

CyberMeowfiaNS はまったく異なる手法でスタック再利用問題を回避する:

  1. KernelSnitch で mm_struct カーネルアドレスをリーク(futex hash 衝突サイドチャネル経由)
  2. 既知のページに偽 eventpoll 構造を書き込む(direct-map エイリアス経由)
  3. late_refs epoll/MCAST 競合:epitem を解放 → SKB がページを回収 → ep_loop_check_proc が偽 eventpoll を走査 → gen フィールドに書き込み
  4. 書き込みプリミティブで libdumpstateaidl.so のコンストラクタをパッチ
  5. dumpstatez が uid 0 でパッチ済みコンストラクタを実行 → su デーモン

前段チェーンはすべて成功:

  • コンパイル成功(target.h の適配完了)
  • --info 通過:カーネル識別検証成功
  • --check 通過:carrier DSO (libdumpstateaidl.so) プリチェック確認
    • コンストラクタは 0x8db0、preimage バイトが完全一致
    • dumpstatez/bugreportd はいずれも root で実行
  • KernelSnitch mm_struct リーク成功(毎回の実行でアドレス取得可能)

late_refs 競合失敗:

  • 256 ラウンドの競合、すべての遅延設定で reclaim_hits=0
  • ロック画面状態でも通常状態でもヒットせず
  • デバイスはクラッシュしない

失敗の根本原因:slab ジオメトリの不一致。

  1. ep_get_upwards_depth_proc 関数は 6.12.38 に存在しない(6.12.58 参考カーネル特有)。ただし ep_loop_check_proc は確かに eventpoll.gen (+0xa8) に書き込むため、これが直接の原因ではない。

  2. eventpoll 構造体のサイズは 0xdc0 (3520 バイト) で、kmalloc-4k から割り当てられる(order=3、32KB slab、8 オブジェクト)。コードが仮定する eventpoll_size=0xd0 (208 バイト) は誤り。

  3. eventpoll_epi (epitem) は 128 バイト、order=0、4KB ページ、1 ページあたり 32 オブジェクト。late_refs は 1 ラウンドにつき 1-2 個の epitem しか解放せず、4KB ページ全体を空にして page allocator に回収させるには不十分。

  4. late_refs はクロスキャッシュページ回収(cross-cache page reclaim)を必要とする:解放された epitem ページ → page allocator → SKB order-3 ページ。しかしこれには同一ページ上の 32 個すべての epitem が解放される必要があり、コードの epoll graph レイアウトではこれを保証できない。

  5. 6.12.58 参考カーネルは異なる SLUB 設定または slab レイアウトを持ち、クロスキャッシュ回収がよりトリガーしやすい可能性がある。

ファームウェアファイル

ファイル説明サイズ
firmware/boot_10.0.0.170.imgシステムバージョン 10.0.0.170 の boot.img96 MB
firmware/honor_kernel_6.12.38.imgboot.img から抽出したカーネル ELF(シンボルテーブル含む)44 MB
firmware/libdumpstateaidl_honor.soCarrier DSO(デバイスから取得)52 KB

boot.img は llvm-nm でカーネルシンボルテーブルを抽出でき、llvm-objdump で逆アセンブルして関数レイアウトを分析できる。

リポジトリ内容

ソースコード

ファイル説明
src/test_safemode.csafe mode futex トリガー + PI walk 検証(stamp なし)
src/test_trigger.cfutex UAF トリガーテスト
src/futex_trigger.cfutex トリガーコアコード
src/exploit_rtsig.crt_sigreturn シグナルフレーム stamp テスト
src/exploit_rtsig2.crt_sigreturn シグナルフレーム stamp(改良版)
src/exploit_regstamp.cdo_signal レジスタ stamp テスト
src/exploit_adjtimex.cadjtimex primer テスト
src/exploit_iosubmit.cio_submit AIO primer テスト
src/exploit_v3.cKASLR + futex + adjtimex の組み合わせ
src/kaslr_tracefs.ctracefs バイナリ ring buffer KASLR リーク
src/kaslr_tracefs_v2.ctracefs KASLR リーク(改良版)
src/dump_sigframe.cシグナルフレーム読み取り専用診断
src/cmwns_*.c/hCyberMeowfiaNS ソースコード(適配版)
src/cve_2026_43499_audit.pyCyberMeowfiaNS CVE-2026-43499 監査スクリプト

設定

ファイル説明
config/offsets.jsonカーネルシンボルオフセット(BTF 検証済み)
config/target.hHonor YLP-W00 ターゲット設定(ghostlock ルート)
config/target_honor_ylp_w00.hHonor YLP-W00 ターゲット設定(CyberMeowfiaNS ルート)

ドキュメント

ファイル説明
docs/ANALYSIS.mdスタックフレーム分析とシンボルオフセット
docs/ALL_POC_ANALYSIS.md130+ PoC プロジェクト分析まとめ
docs/ADJTIMEX_BREAKTHROUGH.mdadjtimex キャリア発見(後に重複なしと確認)
docs/CRITICAL_FIX.mdadjtimex 重複計算の修正
docs/FINAL_STATUS.md最終状況と全手法
docs/MULTI_PLAN.md複数手法の比較
docs/PLAN.md全体アーキテクチャ計画
docs/STATUS.md段階的状況

Carrier DSO 分析

libdumpstateaidl.so

属性値
パス/system/lib64/libdumpstateaidl.so
サイズ52200 バイト (0xcbe8)
SHA-256d5765759437291dc406ffe8775b3b2830c89ca5891956a3b58fcca7227815ff9
.init_array 位置ファイルオフセット 0xb950
.init_array[0]0x72ec (BnDumpstateListener::onTransact thunk)
.init_array[1]0x8db0 (BnDumpstate::onTransact thunk)
コンストラクタ preimagefd 7b bd a9 f5 0b 00 f9 f4 4f 02 a9 fd 03 00 91

dumpstate.rc サービス定義

service dumpstatez /system/bin/dumpstate -S
    socket dumpstate stream 0660 shell log
    class main
    disabled
    oneshot
    user root

service bugreportd /system/bin/dumpstate -w
    class main
    disabled
    oneshot
    user root

CyberMeowfiaNS late_refs 失敗分析

ep_loop_check_proc 逆アセンブル主要命令

ep_loop_check_proc:
    paciasp
    stp x29, x30, [sp, #-0x40]!
    ...
    ldr x0, [x19, #0x80]        ; fllink (子 epitem リスト) を読み取り
    ldr x8, [x22, #0xf88]       ; グローバル generation counter を読み取り
    str x8, [x19, #0xa8]        ; eventpoll.gen (+0xa8) に書き込み
    ...
    ldr x8, [x8, #0x20]         ; 子 epitem の ep ポインタを読み取り
    ldr x9, [x8, #0xa8]         ; 子 eventpoll.gen を読み取り (環検出)
    ...
    bl ep_loop_check_proc       ; 再帰走査
ツールをダウンロード