Android / Pixel 2026-01 CVE 検証サマリ

PC版

01. CVE-2025-48647 - Pixel CPM FWTP input validation

ng

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

02. CVE-2025-36911 - Fast Pair pairing-state predicate

ok

Android / Pixel の脆弱性情報

CVE
CVE-2025-36911
Advisory
Pixel Update Bulletin - January 2026
Type / Severity
ID / Critical
Android bug ID
A-445196906
Patch level
2026-01-05 以降
Bulletin 上の公開情報
Pixel / Bluetooth / ID / Critical。詳細は bulletin では非公開扱い。
NVD の要約
Key-based pairing における logic error により information disclosure が起こりうる。近接または隣接ネットワーク上の攻撃者が、追加権限やユーザー操作なしでユーザー会話または位置情報の disclosure につながる可能性がある。
バウンティ対象判定
Google Devices / Pixel の Pixel Bluetooth 案件として対象。公開調査では Google Fast Pair accessory firmware に紐づくが、Linux、他OSS、他ベンダー由来として除外するものではない。

具体的な脆弱性・原因・特定根拠

validated.md を表示
# CVE-2025-36911 validation

## 判定

ok

## 結論

CVE-2025-36911 の具体的な root cause は、Google Fast Pair Provider が「新規の Key-based Pairing request は Provider が明示的に pairing mode のときだけ処理する」という pairing-state predicate を強制できていないことです。

Fast Pair の initial pairing では、Seeker が anti-spoofing public key を使って encrypted request を送り、Provider が private key で shared secret を作って応答します。本来、request に Public Key field が含まれる initial Key-based Pairing の場合、Provider は最初に pairing mode かどうかを確認し、pairing mode でなければ write を無視して終了しなければなりません。

脆弱な accessory firmware はこの check を落としている、または迂回可能であるため、攻撃者が BLE 範囲内から idle / connected / not-pairing 状態の Provider に Key-based Pairing request を送り、encrypted response を得られます。その後、Bluetooth BR/EDR pairing / passkey / account key write / Find Hub association へ進められる可能性があります。

## 具体的な脆弱性

対象は Fast Pair Provider 側、つまり Pixel Buds 系のような Google Fast Pair accessory firmware 側の pairing state validation です。

攻撃条件は次の通りです。

1. 対象が Google Fast Pair Provider の Bluetooth accessory。
2. Provider が Fast Pair GATT service `0xFE2C` と Key-based Pairing characteristic `FE2C1234-8366-4814-8EB0-01DE32100BEA` を expose している。
3. 攻撃者が BLE 範囲内にいる。
4. Provider が pairing mode ではない。
5. 攻撃者が model ID に対応する anti-spoofing public key を使って Key-based Pairing request を作る。
6. 脆弱な Provider が、本来無視すべき write に encrypted response notification を返す。
7. その後、BR/EDR pairing、passkey、account-key write などに進められる。

正しい実装では、Public Key field を含む initial request は次の形で拒否されるべきです。

```c
if (request_has_public_key) {
    if (!provider_is_in_pairing_mode()) {
        ignore_write();
        return;
    }
    derive_anti_spoofing_aes_key();
}
```

脆弱な実装は、この `provider_is_in_pairing_mode()` 相当の gate がない、または state transition / connected-state handling で bypass されているものです。

## なぜ information disclosure になるか

WhisperPair の public analysis では、Fast Pair accessory を不正に hijack / associate できることで、Find Hub / location、または accessory の audio path に関わる privacy impact が発生すると整理されています。

NVD でも CVE-2025-36911 は information disclosure とされ、remote proximal / adjacent attacker が user conversation or location information を disclosure できる可能性があると説明されています。

## Android / Pixel bounty との関係

Pixel January 2026 bulletin では、CVE-2025-36911 は次のように分類されています。

- Component: Pixel
- Subcomponent: Bluetooth
- Type: ID
- Severity: Critical
- Android bug ID: A-445196906

Google device CSV / NVD でも CVE source は Google Devices です。

公開情報から見た実際の target は Android phone stack 単体ではなく、Fast Pair Provider accessory firmware です。WhisperPair のデータでは Pixel Buds Pro 2 が vulnerable device として挙げられており、January 2026 Pixel/Google Devices advisory と整合します。

## どこから特定したか

### 1. Google Fast Pair 仕様

Fast Pair 仕様には、Key-based Pairing request に optional Public Key field が含まれる場合、Provider は pairing mode かどうかを先に確認し、pairing mode でなければ write を無視して終了する、という条件が書かれています。

これは単なる推奨ではなく、initial pairing をユーザーの物理的/明示的な intent に結び付ける security boundary です。

### 2. WhisperPair 論文

WhisperPair は、この pairing intent check が実装上抜けると、Fast Pair の cryptographic authentication が成立しても authorization が成立しないことを示しています。

論文の要点は、anti-spoofing key は Provider が正規デバイスであることを示すだけで、ユーザーが今そのデバイスを pairing したいことは示さない、という点です。

### 3. WhisperPair harness

公開 harness には Fast Pair GATT service / Key-based Pairing characteristic を使い、not-pairing 状態の Provider に request を送り、応答の有無で vulnerability を判定する実装があります。

local clone:

- `../binaries/cve-2025-36911/WhisperPair.git`

調査メモ:

- `harness-evidence.md`

### 4. Pixel Buds Pro 2 の vulnerable table

WhisperPair の公開表では Pixel Buds Pro 2 が vulnerable として扱われています。

手元の `harness-evidence.md` では次を記録しています。

- Device: Pixel Buds Pro 2
- Model ID: `12934265`
- Attack category: hijack
- Time to hijack: `6.89s`

### 5. NVD / Pixel bulletin

Pixel bulletin は Google Devices 側の advisory として CVE-2025-36911 を Pixel / Bluetooth / ID / Critical に分類しています。

NVD は key-based pairing の logic error とし、remote proximal / adjacent attacker による information disclosure と説明しています。

## patch diff について

公開 AOSP source の修正差分は確認できませんでした。

これは、対象が phone-side AOSP Bluetooth stack の Java/C++ 実装ではなく、Fast Pair Provider accessory firmware / vendor SDK 側の実装である可能性が高いためです。

そのため、このフォルダでは patch diff ではなく、次の公開根拠で root cause を確定しています。

- Pixel bulletin
- NVD
- Google Fast Pair 仕様
- WhisperPair 論文
- WhisperPair harness
- Pixel Buds Pro 2 vulnerable table

## 修正の形

最低限の修正は、initial Key-based Pairing の Public Key path に pairing mode check を追加し、pairing mode 以外では encrypted response を返さないことです。

より強い修正として、WhisperPair の IntentPair は intent nonce / ownership proof を key derivation に混ぜ、pairing intent がない限り matching session key が成立しない設計を提案しています。

## 気になる点

- NVD は 2026-06-17 の更新で affected product に `Android kernel` を追加していますが、公開技術情報から見る限り、中心は kernel ではなく Fast Pair Provider logic error です。
- Pixel bulletin の `Pixel / Bluetooth` 表記だけを見ると phone-side の Bluetooth stack と誤解しやすいですが、実際には Pixel Buds Pro 2 のような Google Fast Pair accessory firmware が重要な対象です。
- 脆弱性の本質は暗号破壊ではなく、cryptographic authentication と pairing authorization の混同です。

## 参照

- Pixel bulletin: https://source.android.com/docs/security/bulletin/pixel/2026/2026-01-01
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2025-36911
- WhisperPair: https://whisperpair.com/
- WhisperPair paper: https://whisperpair.com/whisperpair.pdf
- WhisperPair GitHub: https://github.com/francozappa/WhisperPair
- Fast Pair Key-based Pairing: https://developers.google.com/nearby/fast-pair/specifications/service/provider/kbp
- Fast Pair Account Key: https://developers.google.com/nearby/fast-pair/specifications/service/provider/accountkey
- Fast Pair Characteristic: https://developers.google.com/nearby/fast-pair/specifications/characteristics
該当する項目がありません