近日,Imperva 研究人员发现了一个名为 ShadyShader 的漏洞。该漏洞允许攻击者反复冻结苹果设备的 GPU,最终可能导致系统崩溃。
研究人员认为,主要问题在于现代 GPU 如何检测和停止无限循环,即如果不终止就会无休止运行的指令序列。虽然 GPU 能够熟练地检测并阻止明显的循环,但研究人员展示了一种方法,即制作一个嵌套循环,并在未被发现的情况下执行。
Imperva 公司的安全研究员罗恩-马萨斯(Ron Masas)尝试制作了一个简单的着色器代码,该代码只迭代大量循环,迫使 GPU 执行大量计算。这种代码可以添加到网站上,使用户系统崩溃。它还可以通过信息、电子邮件和带有恶意链接的 QR 码扫描器发送。如果用户点击链接,浏览器就会加载带有恶意着色器的 WebGL 内容,设备就会进入数字迷宫。这些操作往往都无需用户许可,因为在执行许多常见任务时,GPU 访问都是悄无声息地进行的。
马萨斯表示,驱动程序无法识别着色器不必要地垄断了资源。这使 GPU 不堪重负,无法再管理其他任务,最终导致系统崩溃。
苹果的显示管理服务(macOS 上的 WindowServer 或 iOS 上的 SpringBoard)会等待 GPU 完成任务。当受到 ShadyShader 的攻击时,这个负责管理屏幕的服务就无法获得任何更新,整个系统就会变得很迟钝。
苹果设备内置的计时器可以监控关键进程,确保它们不会耗时过长。120 秒后,该计时器会触发内核恐慌,迫使系统崩溃并重启。在 iPhone 和 iPad 上,计时器的反应速度更快,只需 30 秒。
研究人员指出:在我们的测试中,Macbook 会在 1-2 分钟内完全重启,而 iOS 设备则会在显示锁屏之前的 3-6 分钟内保持无响应状态,在大多数情况下都不会完全重启。
苹果公司早在 2023 年就更新了 GPU 驱动程序来解决这个漏洞,因此运行最新 iOS 和 macOS 版本的用户应该没有问题。但根本问题似乎具有更广泛的影响。
Imperva 警告说:在我们看来,GPU 资源耗尽问题依然存在,并可能在未来的攻击中被利用。我们在其他设备上也观察到了有趣的行为,尤其是在谷歌 Pixel 手机上。
一些机会主义测试显示,Pixel 手机上的浏览器应用会变得无法使用,直到用户重启手机,尽管设备并未崩溃。
甚至在特斯拉汽车上,Imperva 的研究人员也观察到主屏幕在遭遇 ShadyShader 漏洞攻击后暂时无法响应的情况,不过其关键的驾驶功能没有受到影响。
研究人员表示,虽然目前没有测试该漏洞可能带来的全部影响,但所有带有 GPU 和浏览器的系统都可能受到类似的影响。
如果用户发现自己的设备因这种攻击而陷入崩溃循环,可以尝试在打开浏览器之前在设置中禁用 JavaScript,然后关闭有问题的标签页。