
CVE-2026-98260 の Android フロントエンド: Shizuku 経由の root シェル + KernelSU レイトロード
CVE-2026-98260(POSIX CPU タイマーの use-after-free)向けの Android フロントエンドです。これは CVE-2026-64560 と同じ種類のバグです。ワンタップで root シェルを取得し、その後 KernelSU(u:r:ksu:s0)を遅延ロードします。
エクスプロイト本体はここには含まれていません。このリポジトリはそれを取り巻くアプリのシェルです。つまり UI、状態検出、そして通常のアプリからシェルドメインのエクスプロイトを実行するために必要な 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
minSdk 30)、arm64Load 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ライセンスされています。所有しているハードウェアでのみ、かつカーネルが移植先のビルドと一致する場合にのみ使用してください。
プロジェクトを開いてビルドするか、以下を実行します:
./gradlew assembleDebug
プロジェクトにはプラットフォーム36とbuild-tools 36を備えたAndroid SDKが必要です。Shizuku APIはMaven(dev.rikka.shizuku:api)から取得します。
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"
TimerRoot が動作するには、事前に Shizuku が実行されている必要があります。Shizuku は、エクスプロイトが必要とするシェルユーザーを提供するプロセスです。Shizuku は再起動のたびに停止するため、毎回これが最初のステップとなります。
ワイヤレスデバッグ(初回のペアリング以降は PC 不要)
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 のみが表示される場合、マネージャーアプリは開いているものの、サーバーは実行されていません。サーバーが起動するまでエクスプロイトは開始できません。
Not connected と表示される場合は、ツール行の Shizuku を押して再度リクエストしてください。Prepare は assets/timer を /data/local/tmp/timer に展開します:
installed 307192 bytes
ワンタップ。アプリは権限を昇格し、サービス内に 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 とともに赤くなり、再試行する前に再起動する必要があります。
Reboot ピルを使用します。これはサービス(svc power reboot)を経由するため、まだ root シェルが開いていなくても動作します。再起動は、待機中のプロセスを削除し、KernelSU をアンロードする唯一のクリーンな方法でもあります。
再起動後は、ステップ 1 から再度開始します。Shizuku は停止しており、KernelSU は失われています。
ステータスカードは、su -c id を実行して u:r:ksu:s0 をチェックすることで検出された、実際に稼働中の状態を反映します:
| カード | 意味 |
|---|---|
| Not connected | Shizuku が実行されていない / バインドされていない |
| Ready | Shizuku は接続済み、まだ root なし |
| Root shell | uid=0、u:r:shell:s0 |
| Jailbreak mode | KernelSU がロードされ、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 を押してください。
これはカーネルエクスプロイトです。何かを押す前にこれを読んでください。
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
このリポジトリ内のアプリコードは MIT。Exploit バイナリと Shizuku API はそれぞれ独自のライセンスに従う。