
CVE-2026-64560 ツールキット: Go シングルバイナリツールチェーン + realme RMX5010 (A16, SM8750) ターゲットポート
CVE-2026-64560 は Linux カーネル posix-cpu-timers の use-after-free
(ローカル非特権レース、CVSS 3.1 = 7.8;6.6.118 では未修正、6.6.147 でようやく修正)。
このリポジトリには二つの目的がある:上流では Python スクリプト群でしか駆動できなかったツールチェーンを単一の静的 Go バイナリにすること、
そして上流にはない realme RMX5010(A16 / SM8750) ターゲットを補うこと。
[!WARNING] これは実験的なカーネル exploit コードである。デバイスを再起動させたり、カーネル状態を破壊したり、データ損失を引き起こす可能性がある。 自分が所有するか、明確な許可を得たデバイスでのみ使用すること。まずバックアップを取ること。
| profile | デバイス | カーネル | 状態 |
|---|---|---|---|
rmx5010-a16 | realme RMX5010 / RE6018L1、A16 BP2A.250605.015 | 6.6.118-android15-8-g93e223c276e7-abogki500782043-4k | 本リポジトリで新規追加;静的ペイロードは実機で --preflight ゲートを通過、完全な権限昇格はまだ実機検証されていない |
dada | Xiaomi 15 | 6.6.118-android15-8-gb9cc6ec16bc8-…-4k | 上流のまま保持(上流の説明を参照) |
op13 | OnePlus 13 | 上流と同一 | 上流のまま保持 |
Go も Python もインストール不要:
v* タグを打つと自動リリース、各プラットフォームのツール + 各ターゲットのペイロード + SHA256SUMS.txt を含むmain への push ごとに出力
cve64560-<os>-<arch>:linux/amd64、linux/arm64、android/arm64、darwin/arm64、windows/amd64payloads:各 profile の aarch64 静的ペイロード(rmx5010-a16-…、op13-…、
それぞれ別ディレクトリに書き出され、もはや互いを上書きしない)android/arm64 のものは直接 adb push で /data/local/tmp に送ってスマホ上で実行できる。
go build -o cve64560 ./gotool # ツール(純粋な Go、依存なし)
./cve64560 build --profile profiles/rmx5010/rmx5010-40850e5ff6a5.json # ペイロード(cc が必要)
コマンドライン一覧、--dry-run の空実行、profile の導出方法については docs/GOTOOL.md を参照。
元のフローは python3 + tools/*.py + 大量の shell を必要とした:テストマシンには python がなく、
スマホにはなおさらあり得ない。今では単一の静的バイナリが
kallsyms → derive → render → patch → build → campaign の全フローをカバーし、
クロスコンパイルすればどこでも動く。
Python 実装は削除していない:tools/ に参考実装および CI の突き合わせベースラインとして残っており、
CI は各 profile ごとに Go と Python をそれぞれ実行して diff -r し、バイト単位で不一致なら赤になる。
.github/workflows/build.yml)gotool/ Go ツールチェーン(1 コマンド 1 ファイル)
profiles/ ターゲット profile(ターゲットごとに 1 つの JSON、レンダリングの唯一の真実源)
src/ 上流テンプレート + レンダリング済みデバイスソース
tools/ 上流 Python 参考実装 + musl/bionic 互換層 + CI スクリプト
scripts/ 上流のキャンペーン/計測スクリプト(Go 版は gotool/cmd_campaign.go)
targets/ ターゲットごとのカーネルシンボル/オフセット記録
symbols/ 出荷される 2 つの profile のカーネルシンボルテーブル(残りのターゲットは派生データ)
docs/GOTOOL.md Go ツールチェーンのドキュメント
リポジトリにはファームウェアイメージ、デバイスキー、デバイス固有識別子は含まれない。ベンダーカーネルイメージが必要な再現手順 (シンボル抽出、profile 導出)は元のイメージを同梱し、リポジトリには入れない。
唯一の例外は出荷される 2 つの profile のカーネルシンボルテーブル(symbols/symbols_*.json、各約
9 MB):build はテーブルが見つからないと直接失敗する(定数が検証されていないペイロードを出さないため)、そして CI の手元には
カーネル Image がなく、テーブルを再構築できない。これらにはシンボル名とアドレスのみが含まれ、イメージ自体は含まれない。
ペイロードは一時的な root:再起動で失効し、ディスクに残らず、パーティションも変更しない。
| job | 役割 |
|---|
gotool | 5 プラットフォームのクロスコンパイル + gofmt/go vet/go test |
parity | Go と Python の出力をバイト単位で比較;tools/golden.sha256 でゴールデン成果物を厳格検証 |
payload | arm64 Alpine コンテナ(qemu)内でペイロードをコンパイル、ツールチェーンは当時実機検証済みの aarch64 musl gcc と同種 |
release | タグで自動 Release |