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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
smt878u-ionstack-poc — UNFINISHED/WIP - CVE-2026-43499 (IonStack/GhostLock) の Samsung SM-T878U / gts7l 向け研究用POC。トリガーとジオメトリは検証済みだが、root取得はまだ未成功。 | Kitploit
ツール/GitHubGitHub/wtrwx/smt878u-ionstack-poc
Androidセキュリティ特権昇格脆弱性分析エクスプロイトペネトレーションテストペイロード開発バイナリエクスプロイト
GitHubwtrwx/smt878u-ionstack-poc

smt878u-ionstack-poc

UNFINISHED/WIP - CVE-2026-43499 (IonStack/GhostLock) の Samsung SM-T878U / gts7l 向け研究用POC。トリガーとジオメトリは検証済みだが、root取得はまだ未成功。

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

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

smt878u-ionstack-poc

[!CAUTION] このプロジェクトは未完成です — まだ動作しません。 2026-10-06 時点で、どのデバイスでも動作する root は存在しません。以下の クイックスタートが成功することを期待しないでください。ビルドや実行の前に 現在のステータスをお読みください。

[!WARNING] ステータス: 作業中 — ring 1 は未到達

  • 未達成: SM-T878U における永続的な、あるいは単発の root すらも。
  • 最後に確認された失敗: スタック再利用ペイロードがカーネルの書き込み パスに到達しない。約470回の計測実行を通じて、偽造ロックが rtmutex.c:585 で取得されることは一度も観測されず、したがって ストア *(ASHMEM_MISC_FOPS) = fake_fops は決して実行されない。
  • 以前のブロッカー、現在は解決済み: クラッシュフォレンジックは以前、 uid 2000 shell から利用できなかった(/proc/kmsg、/proc/last_kmsg、 /sys/fs/pstore、dmesg → すべて EACCES)。永続的な write()+fsync() ログミラー(IONSTACK_LOG_MIRROR)が CONFIG_PANIC_ON_OOPS=y を生き延びる ようになり、パニックした実行でも完全な記録が残る。
  • 完全な証拠の記録については docs/RTMUTEX_WEAPONIZATION.md §15.16–§15.18 を参照。

Samsung Galaxy Tab S7 (SM-T878U / gts7l) を対象とした、CVE-2026-43499 (IonStack / GhostLock)に対する純粋な C によるホスト支援型再 root の概念実証。

ランタイムチェーンはネイティブの C/ELF コンポーネントのみを使用する。Android ターゲット上で Python、Java、DEX、app_process、JVM を必要としない。ADB は デプロイと検証に使用する。


現在のステータス(未完成)

root は取得されていない。 このセクションは、チェーンがどこまで進んでいるか についての権威ある最新の記録である(最終改訂 2026-10-06)。以下のすべては 理論ではなく、実機(SM-T878U、T878USQS8DXE1、カーネル 4.19.113-27114284)で測定されたものである。

動作することが証明されているもの

ステージステータス証拠
ターゲット識別 + KASLR リーク動作[reroot] LEAK_OK kaslr_base=… task=…(perf サイドチャネル)
CVE トリガー: FUTEX_CMP_REQUEUE_PI → -EDEADLK動作[*] requeue ret=-1 errno=35 — Linux では EDEADLK == 35
バグのあるロールバックが宙に浮いた pi_blocked_on を残す上流の修正と一致上流の 3bfdc63936dd は current->pi_blocked_on → waiter->task->pi_blocked_on に変更
struct rt_mutex_waiter のレイアウト(4.19)ソースから検証済みtree_entry@0x00 pi_tree_entry@0x18 task@0x30 lock@0x38 prio@0x40 deadline@0x48
スタックジオメトリ paint == rt_waiter + 0x284回検証済み(objdump を含む)rt_waiter = do_futex_sp+0xC0; address = ___sys_sendmsg_sp+0xB8
永続的なクラッシュフォレンジック動作IONSTACK_LOG_MIRROR の write()+fsync() 記録がパニック再起動を生き延びる
メッセージごとの frag ページ識別タグ動作reclaim-scan tag=1 sent=8201 range=1..8201 ok=8192 bad=0 dup=0 undecoded=0 absent=9
キュー走査: カーネルはキューに入った 8192 個の frag ページに 0 バイトも書き込まなかった検証済み256 MB をペイロードとバイト単位で比較、hits=0
rt_mutex_adjust_prio_chain が書き込みパスに到達する逆アセンブリから検証済みtop_waiter == NULL ⇒ requeue は true のまま ⇒ 664/682/685/716-725 に構造的に到達可能

動作していないもの

  1. 書き込みパスは決して実行されない。 約470回の計測実行を通じて、174件の page-dump と45件の ring1-page の観測はすべて first_diff=8000 (pristine)、owner_cpu=00000000、case1_gate=0、そして lock_root/lock_leftmost がペイロード値と完全に一致することを報告している。このウォークが rtmutex.c:585 で fake_lock->wait_lock を取得する様子は 一度も 観測されておらず、したがって *(ASHMEM_MISC_FOPS) に書き込む唯一の分岐である 664/682/685/716-725 は一度も実行されていない。 _raw_spin_trylock()/_raw_spin_unlock() はアウトオブラインのヘルパーを経由し、このベンダーツリーには arm64 の queued_spin_unlock オーバーライドが存在しない ため、 wait_lock.val == 1 が信頼できる 585 の証拠であり、 owner_cpu != 0 は二次的な証拠にすぎないことに注意されたい。
  2. 公開されている攻撃手法はここでは利用できない。 このCVEで公に成功した唯一のエクスプロイト (NebuSec、IonStack part II) は prctl(PR_SET_MM, PR_SET_MM_MAP, …) でフレームを再利用する。 このカーネルは # CONFIG_CHECKPOINT_RESTORE is not set でビルドされているため、そのシステムコールは コンパイルから除外されている。また、そのエクスプロイトは sendmsg — 我々の攻撃手法 — を一切使用しておらず、 これが(1)の根本原因である可能性が非常に高い。
  3. ring1-read は一度も実行されていない。 リング1の唯一のユーザー空間からの読み戻し (configfs_read_once(fd, data_addr(ASHMEM_MISC_FOPS), …)) は、キュー走査ゲートの背後にあり、 さらにハーネスの MARKER デフォルトの背後にあるため、8秒早い ring1-page で停止してしまう。 ゲートに到達したすべての実行は、page-dump tag=pre-arm と page-dump tag=post-arm の間で 停止した。

直近の次のステップ (優先順)

  1. 664/682/685 が 我々自身のページ内で 完了しうる唯一の構成 — IONSTACK_FOPS_WAIT_LOCK_WORD=0 かつ IONSTACK_PAINT_WAITER_TASK_MODE=fake-task — を再実行し、 page-dump tag=post-arm / ring1-lock585 で wait_lock=00000001 を確認する。
  2. ring1-read を実行させる: IONSTACK_RECLAIM_SCAN_QUEUE を未設定にし、 MARKER='ring1-read|…' を指定して、ハーネスが ring1-page で停止しないようにする。
  3. 保持されているページを特定する: IONSTACK_RECLAIM_TAG=1 で実行し、 page-dump 内の pipe_tag と msg_tag を比較する。すべてのフラグページはペイロードの バイト単位で同一のコピーであるため、first_diff だけでは区別できない。
  4. IONSTACK_FOPS_WAIT_LOCK_WORD の問いを、適切に設定した条件で再検証する — IONSTACK_RECLAIM_TAG を一定に保ったまま wlw=0 と wlw=1 を比較する。 以前の相関は、2つの変数が同時に変化していたために交絡していた。
  5. K40 4.19 ポートから res_in/res_out の pselect6 ペイント面を移植する。
  6. その後になって初めて、書き込みプリミティブを権限昇格へと変換する。

無関係な未解決バグ

fops.c:3157 reason=selinux_write ret=-1 errno=22 EINVAL — 依然として未解決。


ドキュメント

ドキュメント内容
docs/RTMUTEX_WEAPONIZATION.mdrtmutex チェーンの完全な証拠記録 (最大のドキュメント)
docs/ROOT_CHAIN_THEORY.mdリング0→4のエンドツーエンド root チェーン設計
docs/PAINT_ORACLE_ANALYSIS.mdスタックペイントオラクルがそのような読み取り結果になる理由
docs/PSELECT_GEOMETRY_FINDINGS.md代替ペイント手法としての pselect6
docs/RING1_RECLAIM_IDENTITY_2026-10-06.mdメッセージごとのフラグページ識別タグ; キュー走査による検証
docs/RING1_585_NEVER_SUCCEEDED_2026-10-06.mdrtmutex.c:585 が一度も成功しなかったことの証明
docs/RING1_ORACLE_FIX_2026-10-05.mdオラクルの修正
docs/RING1_ORACLE_WRONG_FRAGMENT_2026-10-06.md保持されていたフラグメントが誤って特定された理由

ターゲット成果物 (外部分析用)

target-artifacts/ には、デバイス なしで このターゲットを分析するために 必要なすべてのものが含まれている:

  • 対象カーネルを未ストリップの ELF として(60 MB、git 履歴に残らないようリリースアセットとしてホスト)、
  • 152,788 個すべてのシンボルを grep 可能なテキストとして、
  • /proc/config.gz(生データ + 展開済み)、
  • src/exploit/offset.h 内のすべてのアドレス様定数に対する、ELF 自身のシンボルテーブルとの機械的検証、
  • チェーンが依存する 12 個の関数の逆アセンブリ。

主要な結果: ELF に埋め込まれた linux_banner はデバイスとバイト単位で一致し(したがって T878USQS8DXE1 / 4.19.113-27114284 が確認済み)、ELF は未ストリップであり、アドレス様の offset.h 定数 27 個中 24 個がシンボルと完全一致し、解決不能は 0 件でした。完全なレポートは target-artifacts/README.md を参照してください。これには 1 つの命名の罠も含まれます: CONFIGFS_READ_FILE_OFF は実際には configfs_read_file ではなく configfs_read_bin_file を指しています。


サポート対象プロファイル

この POC は、すべてのプロファイルチェックが一致しない限り、意図的にフェイルクローズします:

device:      gts7l
Android:     13 / SDK 33
fingerprint: samsung/gts7lsqwnc/gts7l:13/TP1A.220624.014/T878USQS8DXE1:user/release-keys
kernel:      4.19.113
build:       T878USQS8DXE1

サポートされていない、または失敗した実行は、デバイスのパニックや再起動を引き起こす可能性があります。リカバリ手段を常に確保しておいてください。

このリポジトリは上記のファームウェアプロファイルに限定された範囲です。汎用的なルート化ツールではなく、オフセットや前提条件を独立した検証なしに他のデバイスで再利用してはなりません。

セキュリティ研究専用

  • 自身が所有するハードウェア、または明示的にテストを許可されたハードウェアでのみ使用してください。
  • エクスプロイトが成功すると、デバイスのパニック、再起動、または文鎮化を引き起こす可能性があります。
  • このPOCによって取得されるrootは一時的なものであり、AVB、ブートイメージ、システムパーティションを変更しません。再起動すると削除されます。

クイックスタート

  1. macOSまたはLinuxホスト上でビルドします(ビルドを参照)。
  2. 公式のAndroid SDK Platform Toolsをインストールし、USBデバッグを有効にして対応デバイスを接続します。
  3. ADBがデバイスを認識していることを確認します:
adb devices -l

次に:

./build/smt878u-ionstack-reroot -s SERIAL --preflight-only
./build/smt878u-ionstack-reroot -s SERIAL --validate-only
./build/smt878u-ionstack-reroot -s SERIAL

ホストが成功を報告したら、root を確認してシェルを開きます:

adb -s SERIAL shell /data/local/tmp/su -c id
adb -s SERIAL shell /data/local/tmp/su

-s SERIAL は、ADB デバイスが 1 台だけ接続されている場合は省略可能です。

ビルド

要件:

ツールをダウンロード