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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
TimerRoot — CVE-2026-98260 の Android フロントエンド: Shizuku 経由の root シェル + KernelSU レイトロード | Kitploit
ツール/GitHubGitHub/kpgc10kai/timerroot
Androidセキュリティ特権昇格永続化メカニズムエクスプロイトポストエクスプロイトペネトレーションテストモバイルセキュリティペイロード開発
GitHubkpgc10kai/timerroot

TimerRoot

CVE-2026-98260 の Android フロントエンド: Shizuku 経由の root シェル + KernelSU レイトロード

リポジトリを見る
40171日前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

TimerRoot

CVE-2026-98260(POSIX CPU タイマーの use-after-free)向けの Android フロントエンドです。これは CVE-2026-64560 と同じ種類のバグです。ワンタップで root シェルを取得し、その後 KernelSU(u:r:ksu:s0)を遅延ロードします。

エクスプロイト本体はここには含まれていません。このリポジトリはそれを取り巻くアプリのシェルです。つまり UI、状態検出、そして通常のアプリからシェルドメインのエクスプロイトを実行するために必要な Shizuku の配線です。

アプリに Shizuku が必要な理由

アプリは untrusted_app として動作するため、エクスプロイトがリークとトリガーに必要とする /sys/kernel/tracing を読み取ることができません。そのため TimerRoot は Shizuku ユーザーサービスを起動し、Shizuku がそれをシェルユーザー(uid 2000、u:r:shell:s0)として実行します。エクスプロイトバイナリはそのプロセス内で実行されるため、adb shell から得られるのと同じ環境を手に入れます。

MainActivity (untrusted_app)
  └─ Shizuku user service (uid 2000, u:r:shell:s0)
       ├─ extracts assets/timer to /data/local/tmp/timer
       └─ runs it; on success keeps /system/bin/sh alive

要件

  • Android 12+ (minSdk 30)、arm64
  • Shizuku が実行中であること(Shizuku アプリから ワイヤレスデバッグ経由、または ADB 経由で起動する)
  • Load KernelSU パスを使用する場合は、KernelSU マネージャーがインストールされていること
  • エクスプロイトが移植されたカーネルビルド。上流のバイナリは 6.12.69-android16-6-g242e1a07f878-ab15865446-4k をターゲットにしている。以下を参照。

エクスプロイトバイナリの入手

TimerRoot はコンパイル済みのエクスプロイトを app/src/main/assets/timer に配置することを想定しています:

git clone https://github.com/YuKongA/CVE-2026-98260
cp CVE-2026-98260/timer/timer app/src/main/assets/timer

または

scripts/fetch-timer.ps1

バイナリは作者によってMITライセンスされています。所有しているハードウェアでのみ、かつカーネルが移植先のビルドと一致する場合にのみ使用してください。

ビルド

Android Studio / Gradle

プロジェクトを開いてビルドするか、以下を実行します:

./gradlew assembleDebug

プロジェクトにはプラットフォーム36とbuild-tools 36を備えたAndroid SDKが必要です。Shizuku APIはMaven(dev.rikka.shizuku:api)から取得します。

Gradleを使わない場合

scripts/build.ps1はSDK、javac、d8、aapt2、apksignerだけでAPKをビルドして署名します。何も同梱しません。Shizuku APIのソースと一緒にアプリをコンパイルするため、まずそれらをクローンしてください:

git clone https://github.com/RikkaApps/Shizuku-API
scripts/build.ps1 -Sdk "C:\Users\<you>\AppData\Local\Android\Sdk"

使用方法

1. Shizuku を起動する

TimerRoot が動作するには、事前に Shizuku が実行されている必要があります。Shizuku は、エクスプロイトが必要とするシェルユーザーを提供するプロセスです。Shizuku は再起動のたびに停止するため、毎回これが最初のステップとなります。

ワイヤレスデバッグ(初回のペアリング以降は PC 不要)

  1. 開発者向けオプションを有効にする: 設定 -> デバイス情報 -> ビルド番号 を 7 回タップ。
  2. 設定 -> システム -> 開発者向けオプション -> ワイヤレスデバッグ -> オン。
  3. Shizuku アプリを開く -> 開始 -> ワイヤレスデバッグ経由で開始。
  4. 通知を許可し、ペア設定コードによるデバイスのペア設定 で、スマートフォンに表示される 6 桁のコードを入力します。
  5. Shizuku が「Shizuku is running」と報告します(通知にサーバーが起動していることが表示されます)。

USB 経由

スマートフォンを接続し、USB デバッグを許可した状態で:

adb shell sh /sdcard/Android/data/moe.shizuku.privileged.api/start.sh

新しい Shizuku リリースでは、そのスクリプトが同梱されなくなっている可能性があります。見つからない場合は、上記のワイヤレスデバッグの方法を使用してください。

サーバーが起動していることを確認します:

adb shell ps -A | grep shizuku_server
# shell  12345  1  ...  shizuku_server

ps に moe.shizuku.privileged.api のみが表示される場合、マネージャーアプリは開いているものの、サーバーは実行されていません。サーバーが起動するまでエクスプロイトは開始できません。

2. 初回起動

  1. TimerRoot を開きます。
  2. Shizuku が TimerRoot に Shizuku へのアクセスを許可しますか? と尋ねてきたら、常に許可を選択します。
  3. カードが Ready に変わります(Shizuku は接続済み、まだ root は取得していません)。それでも Not connected と表示される場合は、ツール行の Shizuku を押して再度リクエストしてください。

3. 準備

Prepare は assets/timer を /data/local/tmp/timer に展開します:

installed 307192 bytes

4. root シェルを取得する

ワンタップ。アプリは権限を昇格し、サービス内に uid=0 のシェルを保持したうえで、 KernelSU の遅延ロードを自動的に開始します:

[child] woke uid=0
root shell ready - loading KernelSU...
Loading KernelSU... 12s
KSU_LOADED

カードは Root shell -> Jailbreak mode(u:r:ksu:s0)へと進みます。KernelSU ステージが競合に敗れると、カードは KernelSU failed とともに赤くなり、再試行する前に再起動する必要があります。

5. 再起動

Reboot ピルを使用します。これはサービス(svc power reboot)を経由するため、まだ root シェルが開いていなくても動作します。再起動は、待機中のプロセスを削除し、KernelSU をアンロードする唯一のクリーンな方法でもあります。

再起動後は、ステップ 1 から再度開始します。Shizuku は停止しており、KernelSU は失われています。

ステータスカードは、su -c id を実行して u:r:ksu:s0 をチェックすることで検出された、実際に稼働中の状態を反映します:

カード意味
Not connectedShizuku が実行されていない / バインドされていない
ReadyShizuku は接続済み、まだ root なし
Root shelluid=0、u:r:shell:s0
Jailbreak modeKernelSU がロードされ、su が u:r:ksu:s0 で動作する

トラブルシューティング

ログに KernelSU failed と base calibration failed が表示される

fake-credential ステージにはカーネルのリニアマップベースが必要であり、エクスプロイトはこれを page-alloc トレースイベントから導出します。これは 4 KB ページを前提としています:

[base] made=512 best=0 count=0
[-] base calibration failed

デバイスのページサイズを確認します:

adb shell getconf PAGE_SIZE
  • 4096: レイアウトが別の理由で異なります。uname -r、モデル、完全なログを収集し、upstream に報告してください。
  • 16384: このエクスプロイトは出荷状態のこのデバイスでは動作できません。16 KB ページ用に再ビルドする必要があります(ページシフト、マスク、オーダーサイズ)。これはアプリ設定ではなく移植作業です。

ルートシェルはそのようなデバイスでも依然として成功し得ます。その経路はリークされた認証情報アドレスのみを必要とし、リニアマップのベースは必要としないためです。

カードが Not connected のままになる

Shizuku が実行されていません。再度起動し(再起動のたびに停止します)、ステップ 1 を参照してください。

Prepare が何も報告しない

システムダイアログがアプリを覆っている可能性があります(Shizuku のペアリング、OPPO インストーラーのスキャン)。それを閉じて、もう一度 Prepare を押してください。

安全性

これはカーネルエクスプロイトです。何かを押す前にこれを読んでください。

  • パークされたプロセスを kill しないでください。 エクスプロイトは、偽の認証情報ページをソケットバッファに固定したままプロセスを生かし続けます。それを回収するとカーネルがパニックする可能性があります。再起動がそれを除去する唯一のクリーンな方法です。
  • 再起動はすべてをクリアします: KernelSU、ルートシェル、パークされたプロセス。これが意図された停止方法です。
  • SELinux は次回の再起動まで permissive のままになります。
  • 失敗した試行は古い timerqueue ノードを残します。再起動するまで他のアプリがクラッシュする可能性があります。
  • 自分が所有する、または明示的に変更を許可されたデバイスでのみ使用してください。

レイアウト

app/src/main/java/com/kpgc/timerroot/MainActivity.java   UI and state
app/src/main/java/com/kpgc/timerroot/UserService.java    runs as the shell user
app/src/main/aidl/com/kpgc/timerroot/IUserService.aidl   service interface
app/src/main/assets/timer                                exploit binary (not in git)
scripts/build.ps1                                        Gradle-free build

クレジット

  • Exploit: YuKongA/CVE-2026-98260 (MIT)、woshigenm 氏およびその他の 98260 移植版の成果に基づく。
  • Shizuku および Shizuku-API (Apache-2.0)、Rikka 氏による。
  • レイトロードパス用の KernelSU (GPL-2.0)。

ライセンス

このリポジトリ内のアプリコードは MIT。Exploit バイナリと Shizuku API はそれぞれ独自のライセンスに従う。

ツールをダウンロード