01. CVE-2025-48647 - Pixel CPM FWTP input validation
Android / Pixel の脆弱性情報
- CVE
- CVE-2025-48647
- Advisory
- Pixel Update Bulletin - January 2026
- Type / Severity
- EoP / Critical
- Android bug ID
- A-445395606
- Patch level
- 2026-01-05 以降
- Bulletin 上の公開情報
- Pixel / CPM / EoP / Critical。詳細は bulletin では非公開扱い。
- NVD の要約
cpm_fwtp_msg_handlerにおける不適切な入力検証により memory overwrite が起こりうる。追加権限やユーザー操作なしで local escalation of privilege につながる可能性がある。- バウンティ対象判定
- Pixel コンポーネントの Google Devices / Pixel 案件として対象。Linux、他OSS、Qualcomm、MediaTek、Dolby、他ベンダー由来のものではない。
判定
ng。Pixel 10 の CPM firmware 差分と FWTP / tracepoint 関連文字列から、CPM FWTP mailbox / tracepoint IPC handler 周辺の入力検証不備による memory overwrite と推定できる。ただし、cpm_fwtp_msg_handler の関数境界、FWTP message 構造体、copy 先、どの命令差分が修正かを確定できていないため、具体的な脆弱性の完全特定には至っていない。
validated.md を表示
# CVE-2025-48647 validation ## 判定 ng ## なぜ ng か このCVEは、公開情報だけでは「具体的にどの入力フィールドが、どの検証不足で、どのメモリ領域へ上書きするか」まで確定できませんでした。 Pixel 10 (frankel) の 2025-12 から 2026-01 への CPM firmware 差分は確認でき、FWTP/tracepoint 関連の文字列も同じ CPM blob 内に存在します。しかし、CPM は bootloader 内の binary blob で、シンボルや公開ソースがなく、`cpm_fwtp_msg_handler` の関数境界・メッセージ構造体・修正命令を十分な確度で対応付けられませんでした。 ## 実施したこと 1. Pixel 8 (shiba) の 2025-12 / 2026-01 factory image から bootloader を HTTP range で抽出。 2. Pixel 8 の bootloader が 2025-12 と 2026-01 で同一であることを確認。 3. Pixel 10 (frankel) の 2025-12 / 2026-01 factory image から bootloader を HTTP range で抽出。 4. Pixel 10 の bootloader に差分があることを確認。 5. frankel bootloader 内の FBPK member `target='cpm'` を抽出。 6. CPM blob 内に FWTP / tracepoint / mailbox 関連文字列があることを確認。 7. CPM blob の byte diff、strings diff、Thumb 逆アセンブル候補を作成。 ## 抽出アーティファクト 大きい抽出物は `../binaries/cve-2025-48647/` 配下に保存しました。 - `shiba-2025-12-bootloader.zip` - `shiba-2026-01-bootloader.zip` - `bootloader-shiba-ripcurrent-16.4-14097582.img` - `bootloader-shiba-ripcurrent-16.4-14097582-jan.img` - `frankel-2025-12-bootloader.zip` - `frankel-2026-01-bootloader.zip` - `bootloader-frankel-deepspace-16.4-14378951.img` - `bootloader-frankel-deepspace-16.4-14451019.img` - `frankel-2025-12-cpm.bin` - `frankel-2026-01-cpm.bin` ローカル調査ファイル: - `artifact-hashes.txt` - `frankel-fbpk-inventory.txt` - `frankel-dec-cpm.strings.txt` - `frankel-jan-cpm.strings.txt` - `frankel-cpm-byte-diff-summary.txt` - `frankel-cpm-diff-candidate-disasm.txt` - `range_extract_factory_member.py` ## 確認できた事実 ### Pixel 8 では該当月差分が見えない Pixel 8 shiba の 2025-12 / 2026-01 bootloader はどちらも同じファイル名でした。 - `bootloader-shiba-ripcurrent-16.4-14097582.img` ハッシュも一致しました。したがって、少なくとも shiba の 2026-01 factory image からはこの CVE の firmware patch 差分を追えません。 ### Pixel 10 では bootloader / CPM に差分がある Pixel 10 frankel では bootloader が更新されています。 - 2025-12: `bootloader-frankel-deepspace-16.4-14378951.img` - 2026-01: `bootloader-frankel-deepspace-16.4-14451019.img` FBPK inventory から CPM member を特定しました。 - `target='cpm'` - offset: `0xf7ac00` - size: `0x7c000` 抽出した CPM blob の hash は 2025-12 と 2026-01 で異なります。 ### CPM blob 内に FWTP / tracepoint 関連文字列がある `frankel-2025-12-cpm.bin` と `frankel-2026-01-cpm.bin` の strings から、少なくとも次の文字列が確認できます。 - `FWTP message of size %d too big for mailbox.` - `Failed to get FWTP message CPM address for 0x%016llx.` - `CAP tracepoint buffer overflow` - `Tracepoint Assert` - `MB_FWTP` - tracepoint 関連の file/function 文字列 これは NVD の `cpm_fwtp_msg_handler` / `cpm/google/lib/tracepoint/cpm_fwtp_ipc.c` という説明と整合します。 ## 推定される脆弱性 推定レベルでは、Pixel CPM firmware の FWTP mailbox / tracepoint IPC handler が、外部から渡される FWTP message の size、address、または section 情報を十分に検証せず、CPM 側メモリへ不正な copy / write を行える問題と考えられます。 しかし、現時点では次を確定できていません。 - `cpm_fwtp_msg_handler` の正確な関数範囲 - FWTP message の struct layout - mailbox buffer の正確なサイズ - memory overwrite の copy destination - 2026-01 で追加された exact check - byte diff のうち、どの命令列が CVE-2025-48647 の修正か ## 差分解析メモ `frankel-cpm-byte-diff-summary.txt` には差分範囲をまとめています。 ただし目視した範囲では、明確に「FWTP size check が追加された」と言い切れる関数をまだ抽出できていません。 特に `0x2fxx` 近辺は table / init data のようにも見え、`0x2ccxx` 近辺は boot / image / section 処理に見えます。FWTP handler 本体と断定するには弱いです。 ## 気になる点 - NVD は source file path まで出しているが、該当 path は公開 AOSP には見当たりません。 - `cpm/google/lib/tracepoint/cpm_fwtp_ipc.c` は Google internal または firmware-side source と見られます。 - 2025-12 の Pixel bulletin には近い領域の CVE-2025-36932 があり、こちらも `cpm_tracepoint_handler` の out-of-bounds write とされます。 - 2025-12 と 2026-01 で tracepoint/FWTP 周辺が連続して修正されている可能性があります。 ## 結論 バグバウンティ対象としては Pixel / Google Devices の CPM firmware 問題であり対象です。 ただし、PoC や詳細報告に使える水準の root cause までは到達していません。現時点で書けるのは「Pixel 10 CPM firmware の FWTP/tracepoint IPC 入力検証不備により memory overwrite が起きる可能性があり、2026-01 bootloader 内 CPM blob で修正されたと見られる」までです。 そのため、このフォルダは `ng` としています。 ## 参照 - Pixel bulletin: https://source.android.com/docs/security/bulletin/pixel/2026/2026-01-01 - NVD: https://nvd.nist.gov/vuln/detail/CVE-2025-48647 - Related NVD: https://nvd.nist.gov/vuln/detail/CVE-2025-36932 - Google device CSV mirror: https://storage.googleapis.com/cve-osv-conversion/osv-output/GSD-2025-48647.json