跳转至

A 0-click exploit chain for the Pixel 10: When a Door Closes, a Window Opens

Ch12.053 A 0-click exploit chain for the Pixel 10: When a Door Closes, a Window Opens

📊 Level ⭐⭐ | 7.8KB | entities/pixel-10-zero-click-exploit-chain.md

核心要点

相关实体

原文存档

深度分析

攻击链架构:从零点击到根权限的两阶段模型

该研究构建了一条针对 Pixel 10 的完整攻击链,分为两个核心阶段。第一阶段利用 Dolby UDC(用户态解码器组件)中的 CVE-2025-54957 实现初始代码执行,这是在无需用户交互的零点击(0-click)前提下完成的。第二阶段通过 VPU(视频处理单元)驱动的内核任意读写漏洞实现权限提升,最终获取根权限。整个链路的架构设计与此前 Pixel 9 的攻击链一脉相承,但在具体实现上针对 Pixel 10 的硬件和软件环境做了全面迁移。

Dolby 漏洞的移植:RET PAC 带来的绕过策略

将 Pixel 9 的 Dolby 漏洞移植到 Pixel 10 时,主要工作量在于更新目标库版本相关的偏移量计算。然而,一个关键差异在于 Pixel 10 启用了 RET PAC(Pointer Authentication Code 返回地址认证),取代了传统的 -fstack-protector 栈保护机制。这一改变导致 __stack_chk_fail 函数不再可用于覆盖(overwrite),因为 PAC 会对返回地址进行完整性校验。 研究团队采用了一种创新的绕过策略:覆盖 dap_cpdp_init——一段初始化代码,在解码器初始化时被调用一次后就不再使用。通过覆盖此函数,可以在不引发功能性问题的前提下实现代码执行跳转。

VPU 驱动漏洞:内核任意读写的"圣杯"

攻击链的第二阶段利用了新发现的 VPU 驱动漏洞。研究团队与 Jann Horn 合作,仅用两小时审计就发现了这一严重问题。该漏洞存在于 /dev/vpu 设备驱动的 vpu_mmap 函数中,其核心问题在于:remap_pfn_range 仅根据 VMA(虚拟内存区域)的大小来确定映射范围,而完全未对实际寄存器区域的边界进行校验。这意味着通过指定一个大于寄存器区域大小的 mmap 参数,攻击者可以将任意物理地址范围映射到用户态虚拟地址空间。 结合 Pixel 内核物理地址固定不变这一特性(KASLR 已失效),攻击者无需扫描即可直接计算内核镜像的物理地址偏移,轻松实现对内核 .text 和 .data 区域的任意读写。整个漏洞利用代码仅需 5 行,完成完整利用开发不到一天。

漏洞修复:从 BigWave 到 VPU 的补丁流程演进

值得注意的是,Android 漏洞响应流程在此案例中展现出明显的改进。此前针对 Pixel 9 BigWave 驱动漏洞的初始评级为"中等"(Moderate),而此次 VPU 漏洞在报告后被 Android VRP 评为"高危"(High)。从 2025 年 11 月 24 日首次报告到 2026 年 2 月安全公告正式修复,耗时 71 天,优于 90 天的常见修复周期。这标志着 Android 安全响应团队对驱动类漏洞的严重性评估标准正在趋于严格。

Chip&Media 驱动的系统性安全风险

VPU 驱动漏洞的特殊之处在于其代码质量。与上游 Linux 驱动(针对 WAVE521C)不同,Pixel 10 使用的 WAVE677DV 驱动绕过了 V4L2(Video for Linux API)抽象层,直接将硬件接口暴露给用户空间,包括允许用户态映射 MMIO 寄存器区域。这种设计选择显著扩大了攻击面。研究表明,在 BigWave 漏洞被披露后,开发方并未对同系列其他驱动进行系统性安全评估,导致时隔 5 个月后出现了同等严重的 VPU 漏洞。

实践启示

对安全研究者的启示

1. 固件偏移自动化提取的必要性:将漏洞从一款设备移植到另一款设备时,大量工作集中在更新特定库版本相关的偏移量。研究团队明确指出,文档化不足(特别是哪些 syncframes 包含关键偏移)显著增加了移植难度。建议在漏洞利用开发过程中建立系统化的偏移量追踪机制,或开发自动化脚本以加速跨设备移植。 2. 认证机制的绕过思路扩展:RET PAC 的引入改变了栈保护的游戏规则。当传统的 __stack_chk_fail 覆盖不再可行时,寻找初始化代码中可被覆盖的"一次性"函数(如 dap_cpdp_init)是一种有效的替代路径。安全研究者应将此类模式纳入漏洞利用知识库。 3. 快速审计驱动的价值:在合作审计中,仅用两小时就发现"极其浅显"(shallow)的高危漏洞,说明对关键驱动进行短时间人工审计的投入产出比极高。建议在漏洞披露后,对同开发者或同系列的其他驱动立即进行快速人工审查。

对厂商开发团队的启示

1. mmap 边界校验的强制性要求vpu_mmap 漏洞的本质是缺少对映射大小的边界检查。这再次证明,任何将内核物理地址映射到用户态的驱动必须对请求的映射范围进行严格校验,确保不超出实际硬件寄存器区域的边界。代码审查清单中应将此类检查列为必须项。 2. 避免绕过安全抽象层:直接暴露硬件接口(绕过 V4L2)虽然可能带来性能收益,但显著增加了安全风险。厂商在性能与安全的权衡中应更倾向于使用经过安全审计的中间抽象层,而非为追求极致性能而牺牲安全隔离。 3. 漏洞响应标准化的价值:Android VRP 对 VPU 漏洞的评级和处理速度改进表明,建立清晰的漏洞严重性评估标准并严格执行,可以有效缩短修复周期。建议所有驱动开发者与安全团队协作,建立针对驱动类漏洞的统一响应 SLA。

对 Android 生态的启示

1. 驱动供应链安全的系统性视角:Chip&Media 的 BigWave 和 VPU 驱动相继出现严重漏洞,揭示了第三方硬件驱动供应链的安全风险。Android 生态中的设备厂商在集成第三方驱动时,应建立独立的安全评估流程,而非完全依赖上游开发者的代码质量。 2. 物理地址暴露的长期风险:Pixel 内核物理地址固定的问题已被持续利用。这意味着即使 KASLR 在软件层面被启用,硬件特性或驱动设计缺陷仍可能导致内核地址空间布局信息泄露。未来的防御策略需要同时考虑软件和硬件层面的缓解措施。 3. 零点击攻击面的持续扩大:Dolby 漏洞的跨版本可移植性说明,零点击攻击面在 Android 生态中具有持久性。随着攻击者对系统组件的深入理解,单个基础组件的漏洞可以成为多条设备攻击链的起点。安全团队应将零点击攻击面(媒体解析、基带处理、近场通信等)列为高优先级审计目标。


相关漏洞:Dolby UDC(CVE-2025-54957)| VPU mmap 边界校验缺失(Android Bug 463438263) 相关厂商:Google Project Zero | Android VRP | Chips&Media