Google Pixel 10 零点击漏洞:Project Zero 发现内核物理内存映射漏洞全程解读

发布于: 2026-05-16 • 分类: 安全 / Android / 漏洞研究

事件概览

Google Project Zero 团队近日公开了针对 Pixel 10 的零点击(zero-click)漏洞链研究。攻击者无需用户任何交互,仅通过发送特制媒体文件即可获得内核级代码执行权限。该漏洞链登上 Hacker News 首页获得 386 分,引发安全社区广泛关注。核心发现包括:Dolby UDC 解码器的零点击漏洞可跨所有 Android 设备利用,而 Pixel 10 新增的 VPU 驱动存在一个极其浅显的物理内存映射漏洞,仅需 5 行代码即可实现内核任意读写。

从 Pixel 9 到 Pixel 10:漏洞链的延续

Project Zero 此前已在 Pixel 9 上演示了从零点击上下文到 root 权限的完整漏洞链,仅需两个漏洞即可完成。Dolby 零点击漏洞(CVE-2025-54957)曾影响所有 Android 设备,于 2026 年 1 月修复。团队随后尝试在 Pixel 10 上复现类似攻击。

将 Dolby 漏洞移植到 Pixel 10 相对简单——主要是更新库版本的偏移量。唯一的技术挑战是 Pixel 10 用 RET PAC 替代了 -fstack-protector,导致 __stack_chk_fail 无法被覆写。团队转而使用 dap_cpdp_init 初始化代码作为覆写目标,该代码仅在解码器初始化时调用一次,覆写后不会引发功能问题。

Pixel 10 的新攻击面:VPU 驱动

Pixel 9 上用于本地提权的 BigWave 驱动在 Pixel 10 上不存在。但 Project Zero 发现了一个新驱动——位于 /dev/vpuChips&Media Wave677DV 视频处理单元驱动。该芯片集成在 Tensor G5 芯片中,用于加速视频解码。

与上游 Linux 的 V4L2 驱动不同,Pixel 的 VPU 驱动直接将芯片的 MMIO 寄存器接口暴露给用户空间,允许用户空间直接映射芯片的硬件寄存器区域。驱动本身仅负责设备内存映射、电源管理和中断等待。

"内核漏洞的圣杯"

Project Zero 与 Jann Horn 合作,仅用 2 小时审计就发现了一个极其简单的漏洞。驱动的 mmap 处理函数存在问题:

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;
}

这个 mmap 处理函数的本意是将 VPU 硬件的 MMIO 寄存器区域映射到用户空间。但它调用 remap_pfn_range仅基于 VMA 的大小,完全没有限制在寄存器区域的实际大小范围内。这意味着:

更糟糕的是,Pixel 设备上内核始终位于相同的物理地址(此前已有研究证实),因此 VPU 内存区域与内核之间的偏移量是固定已知值。攻击者无需扫描物理内存寻找内核——只需将 VMA 长度设得足够大,就能精确知道内核相对于 mmap 返回地址的位置。

关键数字:实现内核任意读写仅需 5 行代码。编写完整漏洞利用不到一天时间。这是 Project Zero 近年来发现的最浅显的内核漏洞之一。

修复过程:Android 安全响应的改善

Project Zero 于 2025 年 11 月 24 日报告该漏洞,Android VRP 将其评为高危。值得注意的是,此前 Pixel 9 上的 BigWave 漏洞(相同安全影响)最初仅被评为中危,这代表了 Android 在漏洞评级方面的积极变化。

漏洞在报告后 71 天内完成修复,出现在 2 月的 Pixel 安全公告中。这是 Project Zero 报告的 Android 驱动漏洞中首次在 90 天内完成修复的案例,标志着 Android 安全响应速度的显著提升。

对 Android 驱动安全的警示

Project Zero 指出,虽然漏洞修复速度有进步,但问题的根源令人担忧。在报告 BigWave 漏洞时,团队曾希望开发者会对其他驱动进行安全审查。然而 5 个月后,VPU 驱动中仍然存在一个极其浅显、甚至无需深入审计就能发现的严重漏洞。

这表明 Android 驱动开发团队在安全意识和代码审计方面仍有巨大改进空间。尤其是直接暴露硬件接口给用户空间的驱动,更需要严格的安全审查。

用户如何保护自己

总结

Pixel 10 零点击漏洞链的研究揭示了 Android 驱动安全的两面性:一方面,Android 的漏洞响应速度在明显改善——71 天修复和更准确的 severity 评级是积极信号;另一方面,基础的内存安全漏洞仍然存在于新发布的旗舰设备中,说明安全开发实践的改进仍需持续推进。

对普通用户而言,最实际的建议就是:保持系统更新,不要忽视安全补丁。