
Androidのmedia.swcodecにおけるCVE-2026-0006 APVデコーダのヒープオーバーフローを悪用した、リーク支援型ROPチェーンを実証するリサーチパッケージ。ペイロードジェネレータとtombstoneの証拠を含みます。
CVE-2026-0006(APVデコーダのヒープオーバーフロー)に関する、小さく自己完結した研究パッケージ。
これは media.swcodec 内での制御されたネイティブ呼び出しを実演し、最終的に
__android_log_assert(NULL, NULL, "RCE-7F3A92C1") を実行し、実際の
tombstone(Abort message: 'RCE-7F3A92C1')にナンスが表示される。
要件: Pixel 9 が root 化済み(/debug_ramdisk/su)、adb、NumPy 付き Python 3.12。
デバイスは純正の libobs.so を使用している必要がある(インストルメンテーションのオーバーレイなし)。
scripts/build_device.sh # thumb3.dex と apvscan をインストール
scripts/run.sh 12 # 最大12回の新規試行
成功すると RCE PROVATA と表示され、out/APVRCE_success.txt が書き出される。
artifacts/tombstone_rce.txt は参照実行でキャプチャされた成功例である。
media.swcodec が CLEAN_MSG.mp4(ナンスを保持するメタデータ)をデコードする。apvscan)がライブ値を導出する:
release@448 - 0x29044 → codec ベース;GOT[malloc] @ codec+0x2d448 → malloc@libc+0x596f0 → libc ベース。gen/gen_forge.py が APV comb ペイロードを構築する:
release@448 = libc + 0xede9c(__libunwind_Registers_arm64_jumpto);PC = liblog + 0xc250(__android_log_assert);x0=x1=0、x2 = RCE-7F3A92C1` を保持するメタデータのアドレス;SP は有効なプレーンを指す。JT_LOG.mp4 をデコードする。偽造された release が jumpto に到達し、
これがレジスタを復元して制御された log/assert 呼び出しを行う。これは対象プロセス内でのエンドツーエンドの ROP 実演であり、PC/SP のみの証拠ではない。
release と2つの GOT 読み取りに対する読み取り専用リークオラクルとして apvscan を使用する。
hdr10-plus-info 出力リークは研究ノートで別途検証された;
ランナーは、ファイル単体がそれらの値をリモートの第三者に流出させると主張するものではない。media.swcodec 内でのネイティブコード実行であり、サンドボックスエスケープやカーネル LPE ではない。artifacts/JT_LOG.mp4 はポインタ/レイアウト固有の証拠である。実行ごとに再生成すること;
これが汎用的であると期待してはならない。scripts/pipeline_logprint.py — リーク/オラクル、生成、攻撃、証拠キャプチャ。scripts/build_device.sh — デバイス上にランタイムファイルをインストールする。scripts/run.sh — チェーン全体を開始する。gen/ — ペイロードジェネレータと Thumb3 のソース/dex。scanner/ — apvscan のソースとビルド済み arm64 バイナリ。artifacts/ — 参照用 MP4 と成功した tombstone。docs/ — 英語とイタリア語のブログ草稿、およびビルド固有のオフセット。このパッケージは、PC/SPの制御だけでなく、media.swcodec における制御されたネイティブ呼び出しを実証している。経路は、フレッシュデコーダ → アドレスの導出 → jumpto → トゥームストーン内のノンス RCE-7F3A92C1 を用いた __android_log_assert である。これはゼロクリックの実証でもサンドボックスからの脱出でもなく、上記の制約と脅威モデルを伴う、コーデックプロセス内でのROPの証明である。