安全研究者于9月10日在个人博客发布名为Deathray的攻击演示,揭示一个存在于macOS WebGPU实现中的严重拒绝服务漏洞:一个托管在任意网站上的WebGPU着色器可以永久冻结Mac的图形界面,使桌面UI完全不可用,直到系统看门狗(Watchdog)检测到WindowServer无响应并触发内核恐慌自动重启。攻击的唯一前置条件是受害者点击一个链接——无需安装任何软件、无需授予任何权限、可在Chrome、Firefox和Safari三大浏览器中复现,但仅影响运行Tahoe系统的M系列Mac。
漏洞的触发机制
Deathray的技术实现极为精简,核心部分仅需一个计算着色器(compute shader)和一个顶点着色器(vertex shader)。计算着色器中包含一个无递增条件的无限循环,反复将同一个向量写入GPU缓冲区;顶点着色器依赖同一个缓冲区进行读取。由于计算着色器的无限循环持续占用GPU缓冲区,顶点着色器无法推进渲染管线,这一资源争用扩散到所有需要GPU的进程,其中最重要的是macOS的WindowServer——负责整个桌面窗口管理和渲染的系统服务。
受影响后,系统表现因机器而异:有时鼠标仍可移动,有时完全冻结;有时显示沙滩球光标,有时部分屏幕出现洋红色垃圾像素。值得注意的是,计算机的其余部分(包括SSH服务)仍正常运行,说明问题局限于GPU资源层面而非系统全面崩溃。但macOS内置的看门狗定时器在检测到WindowServer持续无响应后,会触发内核恐慌并强制重启整台机器,这是系统设计中防止图形子系统永久挂起的最后一道防线。
WebGPU安全模型的结构性缺陷
WebGPU是浏览器用于替代WebGL的新一代图形API,设计初衷是提供更现代的GPU编程接口,同时保持安全沙箱隔离。Deathray暴露了一个根本性问题:WebGPU的计算着色器允许在GPU上执行任意计算,但GPU资源调度层面缺乏对单个网页可占用GPU时间或资源量的有效限制。在macOS上,浏览器进程与WindowServer共享GPU资源,一个网页的GPU死循环可以直接拖垮整个系统的图形栈。
研究者指出,在其他操作系统(包括Windows和Linux)上,同样的WebGPU死循环仅导致标签页卡死,关闭标签页后系统即恢复正常。这表明macOS的GPU资源隔离机制存在系统性弱点:Metal驱动栈未能在浏览器沙箱和系统图形服务之间建立有效的资源隔离边界。苹果方面尚未就此漏洞发布公开回应或安全更新,受影响用户在修复发布前的唯一防护措施是禁用浏览器的WebGPU支持。
这一发现对WebGPU标准的推广节奏也构成挑战。WebGPU在桌面端的主要卖点之一是更高的GPU利用效率和更低的驱动开销,但Deathray表明安全模型的成熟度仍然滞后于功能层面。在苹果发布系统级修复之前,企业安全团队可能需要主动在企业浏览器策略中禁用WebGPU功能,以避免内部人员成为恶意网页攻击的目标。