Hacker News 当日的 Deathray 条目有 205 points 和 125 条评论。研究者描述的现象很简单,用户点击一个网页后,WebGPU shader 可以让运行 macOS Tahoe 的 M 系列 Mac 图形系统长时间失去响应,Chrome、Firefox 和 Safari 都能复现,其他系统的表现较轻。这个案例值得看,因为它把“网页沙箱”和“整机可用性”之间的缝隙暴露出来。
发生的事情属于哪类风险
网页通常被当作低信任输入。浏览器会隔离进程、限制文件权限,并把 GPU 访问放进专门的接口。WebGPU 让页面提交更接近硬件的图形工作,换来更好的 3D、计算和机器学习性能。若驱动或 GPU 调度无法及时打断恶意工作,页面就可能拖住图形栈,桌面、窗口和输入一起变慢。
这不等同于任意代码执行,也不自动意味着数据泄露。它首先是可用性问题。对安全工程而言,系统是否仍能让用户保存工作、切换窗口和安全退出,本身就应当被纳入威胁模型。
为什么浏览器隔离仍可能不够
隔离通常保护文件和进程边界,GPU 访问却经过驱动、内核和固件等多层共享资源。网页不需要拿到你的文件,只要持续提交异常负载,就可能影响共同使用的图形设备。跨浏览器复现说明问题的焦点可能更接近平台图形栈,不能只归咎于某个浏览器的脚本实现。
研究者已向 Apple Security 披露此问题。Apple 对这类崩溃或挂起是否属于安全问题有自己的分类标准。分类争议不影响工程上的事实,用户只需点击链接就可能被迫重启,未保存工作会丢失。
开发者如何降低风险
- 对 WebGPU 输入设置设备、纹理、着色器和执行时间上限。
- 将 GPU 超时恢复当作正常路径测试,而非只测成功渲染。
- 为浏览器端应用提供保存草稿、断线恢复和无 GPU 降级模式。
- 在企业环境按业务需要控制 WebGPU 权限,先在常用硬件和系统版本上做压力测试。
普通用户该怎么做
不要为了“试试看”去点击会主动警告你冻结电脑的演示按钮。系统和浏览器保持更新,重要工作开启自动保存。遇到图形界面卡死时,先尝试切换到文本终端或使用另一台设备确认是否只是图形栈挂起,再按组织的应急流程处理。
网站开发者的测试清单
WebGPU 应用上线前,至少要测试设备丢失、驱动重置、shader 编译失败和资源耗尽。每个失败都要能释放缓冲区、停止动画循环并回到普通 CPU 渲染。浏览器支持矩阵要按芯片、系统和浏览器版本记录,不能拿一台开发机的结果代表所有用户。
企业安全团队还应把 GPU 当作共享资源看待。浏览器隔离、终端管控和数据防泄露策略各自解决不同问题,漏洞响应时要同时判断可用性损失、是否需要强制重启以及未保存数据的影响。
FAQ
这是远程代码执行吗?现有公开描述支持的是冻结或挂起,不足以证明远程代码执行。
关闭 JavaScript 能解决吗?未必,因为 WebGPU 依赖脚本调用,但企业应测试自己的站点和浏览器策略。
WebGPU 还能用吗?能用,但生产应用应把设备丢失、超时和降级当成必测故障。