The Pixel 10 0-Click Chain: A Lesson in Driver Vulnerabilities
The Pixel 10 0-Click Chain: A Lesson in Driver Vulnerabilities
現代智慧型手機的安全性往往依賴於硬體抽象層與第三方驅動程式之間複雜的網絡。當某個領域的漏洞被修補時,攻擊者——以及安全研究人員——通常會尋找下一個可能的突破口。這正是 Google Project Zero 最近的研究所描述的情況,該研究詳細說明了 Pixel 10 的一個零點擊(zero-click)漏洞利用鏈。
在 Pixel 9 成功利用漏洞鏈之後,Project Zero 試圖確定 Pixel 10 是否也存在類似的獲取 root 權限的路徑。他們的發現揭示了一個令人警醒的現實:雖然某些防禦機制有所改進,但一個新硬體驅動程式中的關鍵疏忽,卻提供了核心(kernel)漏洞中的「聖杯」。
The First Step: Updating the Dolby Exploit
漏洞鏈的第一個切入點是針對先前發現的 Dolby 漏洞(CVE-2025-54957)的更新。將此漏洞利用程式從 Pixel 9 移植到 Pixel 10 相對簡單,主要只需要更新記憶體偏移量(memory offsets)。
然而,研究人員遇到了新的障礙:Pixel 10 使用 RET PAC (Pointer Authentication Code) 而非 -fstack-protector。這項改變意味著傳統的覆寫 __stack_chk_fail 的方法不再可行。為了繞過這一點,團隊識別出 dap_cpdp_init——這是在解碼器初始化期間僅會被呼叫一次的初始化程式碼——作為一個可以在不干擾系統功能的情況下進行覆寫的理想目標。
The Local Privilege Escalation: The VPU Driver
雖然 Pixel 9 的漏洞利用依賴於 BigWave 驅動程式,但該驅動程式在 Pixel 10 中並不存在。取而代之的是,研究人員在 /dev/vpu 發現了一個新驅動程式,該驅動程式用於 Tensor G5 晶片上的 Chips&Media Wave677DV 矽元件。
在審計 VPU 驅動程式時,Project Zero 發現了驅動程式處理記憶體映射(memory mapping)方式的一個關鍵缺陷。與舊晶片的上游 Linux 驅動程式不同,Pixel 的 VPU 驅動程式直接將晶片的硬體介面暴露給使用者空間(userspace),允許使用者空間映射晶片的 MMIO (Memory-Mapped I/O) 暫存器介面。
The "Holy Grail" Vulnerability
漏洞存在於 vpu_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);
/* This is a CSRs mapping, use pgprot_device */
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 系統呼叫中指定大於暫存器區域的大小,攻擊者可以將任意數量的實體記憶體映射到使用者空間。由於核心鏡像(kernel image)位於比 VPU 暫存器區域更高的實體位址,且由於 Pixel 裝置上的核心始終位於相同的實體位址,攻擊者只需計算偏移量並覆寫核心函數,即可立即獲得程式碼執行權限。
Project Zero 註記,實現對核心的任意讀寫存取僅需五行程式碼,且在不到一天的時間內就開發出了完整的漏洞利用程式。
Triage and Remediation
這項研究的一個正面收穫是 Android 漏洞分類與修復(triage)流程的改進。VPU 漏洞是在 2025 年 11 月 24 日回報的,並在二月的安全公告中得到修補——耗時 71 天。這比先前回報的同等嚴重程度的漏洞(例如 Pixel 9 上的 BigWave 漏洞)要快得多,BigWave 漏洞最初被評定為僅「中等」嚴重程度。
Systemic Failures and the Path Forward
儘管修補速度加快,但該漏洞的存在指向了一個系統性問題。VPU 驅動程式是由開發 BigWave 驅動程式的同一個團隊所開發的。儘管 BigWave 之前出現過高知名度的漏洞,但同樣淺層的安全缺陷卻被引入到了 VPU 驅動程式中。
這在技術社群中引發了關於加強審計與開源上游化(upstreaming)必要性的廣泛討論。正如一位評論者所言:
"Frankly, it should be a requirement of Google's certification process that everything regarding drivers gets upstreamed into the Linux kernel. Yes, even if this adds quite a time delay to the usual hardware development process."
此外,這項發現也凸顯了行動裝置安全性的持續緊張關係:對 AI 功能的需求(通常需要預先解碼媒體以分析訊息)增加了零點擊漏洞利用的攻擊面。正如另一位觀察者指出,點滴的便利性往往是以顯著的安全風險為代價。
Conclusion
Pixel 10 漏洞利用鏈的研究結果提醒我們,硬體層級的驅動程式往往是行動裝置安全鏈中最薄弱的一環。雖然分類與修復流程的改進是進步的徵兆,這也說明了最終目標必須是主動轉向具備安全意識的開發模式,並在驅動程式交付給終端用戶之前進行詳盡的審計。