去年我们演示了Pixel 9的零点击到root攻击链,只用两个漏洞。Dolby漏洞在2026年1月补丁前影响整个Android生态。现在,同样的思路被移植到了Pixel 10上。
第一个环节是更新Dolby漏洞利用。CVE-2025-54957的适配相对直接,主要是替换Pixel 9和Pixel 10之间库文件的偏移量。真正的麻烦在于防御机制的变化:Pixel 10用RET PAC替代了-fstack-protector,这意味着__stack_chk_fail不再能被覆盖。团队最终选中了dap_cpdp_init——解码器初始化时调用一次、之后再也不会用到的代码,作为替代目标。
![]()
这个更新后的Dolby UDC利用代码已公开,但仅限未修补设备(2025年12月安全补丁或更早版本)。
![]()
攻击链的第二环原本依赖BigWave驱动,但Pixel 10已经移除。取而代之的是/dev/vpu,一个服务于Tensor G5芯片上Chips&Media Wave677DV视频解码硅片的新驱动。从开源代码的注释看,开发团队与BigWave是同一批人。
与Jann Horn合作,我们用两小时审计了这个VPU驱动,发现了一个极其简单的漏洞。
与上游Linux的WAVE521C驱动不同,Pixel的WAVE677DV驱动没有接入V4L2框架,而是直接把芯片的硬件接口暴露给用户空间——包括允许映射MMIO寄存器。驱动本身只做三件事:建立设备内存映射、电源管理、让用户空间等待芯片中断。
问题出在vpu_mmap函数。它把物理地址core->paddr直接映射给用户空间,却没有检查vm->vm_end - vm->vm_start是否越界。结果就是:用户可以申请任意大小的映射,读到或写到芯片寄存器之外的物理内存。
![]()
这种"物理地址任意映射"在漏洞利用里被称为"圣杯"——不需要复杂的堆喷或竞争条件,直接获得内核级内存访问。
利用这个漏洞,攻击者可以映射VPU寄存器区域,通过控制DMA引擎读写任意物理地址。配合Dolby漏洞获得的初始代码执行,完整的零点击到root攻击链在Pixel 10上得以重现。
Google已在2026年5月补丁中修复该漏洞(CVE-2026-XXXX)。但对于运行旧版本的设备,这套攻击链依然有效——从收到恶意音频文件,到获得系统最高权限,全程无需用户交互。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.