GoogleセキュリティチームProject ZeroがPixel 10のゼロクリック・エクスプロイト・チェーンの詳細を発表

Pixel 10の強力なゼロクリック・エクスプロイト・チェーン。リモートのDolbyデコード脆弱性から、単一の脆弱なビデオ処理ドライバを通じてカーネル完全制御まで到達可能です。

この研究は、Googleが重大な問題をいかに迅速にパッチできるようになったか、そしてベンダー・ドライバの浅い欠陥がいかにAndroidのセキュリティ・モデルを損なう可能性があるかの両方を示しています。

Pixel 10 ゼロクリック・エクスプロイト・チェーン

このチェーンのエントリーポイントは、同じDolby Unified Decoderの脆弱性で、CVE-2025-54957で、以前Pixel 9および他のAndroidデバイスに影響を与えていました。

この脆弱性は、2026年1月のAndroidアップデートでパッチされており、細工されたDolby Digital Plus(DD+)オーディオストリームが処理されたときにリモートコード実行を可能にし、音声添付ファイルとボイスメッセージをゼロクリック攻撃対象に変えていました。

Pixel 10の場合、Project Zeroのセス・ジェンキンスは新しいDolbyライブラリビルドのオフセットを再計算することで既存のエクスプロイトを更新しました。主な複雑さは、古典的なスタックプロテクターの代わりにリターンアドレスポインター認証(RET PAC)に切り替わったことから生じました。これにより、以前の__stack_chk_fail上書き機能が削除されました。

コード実行を再度取得するために、チームは代わりにdap_cpdp_initをターゲットにしました。これは一度実行される初期化関数で、安全に上書きでき、プロセスが完了した後の通常のデコーディングに影響を与えません。更新されたDolby UDCエクスプロイトは、2025年12月/2026年1月のパッチをまだ受け取っていないデバイスでのみ機能します。

Pixel 9では、第2段階はBigWave AV1ドライバのバグに依存してローカル権限をカーネルに昇格させていました。Pixel 10はもはやBigWaveドライバをシップしていません。

しかし、Tensor G5のChips&Media Wave677DVブロックとインターフェースする新しい/dev/vpuドライバを導入しており、ハードウェアビデオデコーディング用です。BigWaveの背後にある同じ開発者チームがこのVPUドライバも保守しており、迅速な監査のための自然なターゲットになっています。

わずか2時間のレビューで、ジェンキンスとジャン・ホーンは、VPU mmapハンドラーの重大な脆弱性を発見しました。これは事実上、任意の物理メモリをユーザー空間に露出させます。

問題の核心は、VPUレジスタから始まる物理領域をユーザー提供の仮想メモリ領域にマップする最小限のvpu_mmap実装ですが、要求されたサイズがVPU MMIO範囲内に留まることをチェックしません。脆弱なコードは次のようなものです:

static int vpu_mmap(struct file *fp, struct vm_area_struct *vm)
{
    unsigned long pfn;
    struct vpu_core *core =
        container_of(fp->f_inode->i_cdev, struct vpu_core, cdev);
    vm_flags_set(vm, VM_IO | VM_DONTEXPAND | VM_DONTDUMP);
    vm->vm_page_prot = pgprot_device(vm->vm_page_prot);
    pfn = core->paddr >> PAGE_SHIFT;
    return remap_pfn_range(vm, vm->vm_start, pfn,
                           vm->vm_end - vm->vm_start,
                           vm->vm_page_prot) ? -EAGAIN : 0;
}

remap_pfn_rangeへの呼び出しはVMAの長さのみを使用するため、呼び出し元はオーバーサイズのマッピングを渡してVPUレジスタをはるかに超えて拡張でき、カーネルイメージ全体を含む任意の物理メモリを引き込めます。

Pixelでは、カーネルは常に固定物理アドレスにあります。したがって、攻撃者はKASLRブルートフォースやスキャンなしに、ベースVPU領域に対して読み書きする場所を正確に知っています。

Project Zeroは、任意のカーネル読み書き機能を構築するのにたった5行のコードがかかり、完全なエクスプロイトが1日以内に完成したと報告しています。

ジェンキンスは2025年11月24日にVPUバグを報告し、AndroidのVRPはそれを高い重大度に分類しました。これは、同一の影響があるにもかかわらず最初は中程度と評価された類似のBigWaveの問題からの改善です。

Googleは71日後の2月のPixelセキュリティ速報でフィックスを配信し、ジェンキンスが報告したAndroidドライババグが90日以内にパッチされたのは初めてのことでした。

このケースは2つの並行する傾向を強調しています:Androidの深刻なドライババグの分類とパッチ処理パイプラインは明らかに改善されていますが、浅い発見しやすい脆弱性はベンダー保守のカーネルコードに残っています。

Project Zeroは、OEMがこれらのゼロクリックチェーンがユーザーに到達する前に停止したいのであれば、体系的なセキュアコーディング、積極的なドライバ監査、および強力な開発実践が依然として不可欠であることを強調しています。

翻訳元: https://gbhackers.com/pixel-10-zero-click-exploit-chain/

ソース: gbhackers.com