微软因为安全原因拒绝采用 WebGL

  • Abel Avram
  • 侯伯薇

2011 年 6 月 26 日

话题:安全微软GoogleApple架构HTML5Mozilla语言 & 开发

最近微软引用了两份分析 WebGL 中安全弱点的报告,以此作为不支持 WebGL 的主要原因,尽管 Google、Mozilla、Opera 和 Apple 都支持这种 3D 图形标准。

HTML5 的Canvas元素让开发者可以使用不同的渲染引擎来编写图形程序,WebGL就是其中的一种,它基于Khronos 小组管理的 OpenGL 驱动、针对硬件加速 3D 渲染的规范创建,当前 Google Chrome、Mozilla Firefox、Opera 以及 Safari 的每日构建版本中都已经实现了该规范。 WebGL 1.0 是在 2011 年 2 月份发布的,但 Chrome 早在一年前就已经支持它了。

唯一一家没有使用 WebGL 的主要浏览器厂商就是微软。尽管我们可以使用 Google 的ANGLE,它会把对 WebGL 的 API 调用转换为等价的 DirectX 调用,但那并非是一种本地解决方案,如果 Windows 能够对 WebGL 提供本地支持,那会更加合适,但是 Windos 并未提供这种支持,而且,微软声称,他们不会采用 WebGL,因为它存在安全漏洞。

微软对 WebGL 的安全缺陷的抱怨基于Context Information Security编写的两份报告: 《WebGL——浏览器开发的新维度(WebGL – A New Dimension for Browser Exploitation)》《WebGL——更多 WebGL 安全缺陷(WebGL – More WebGL Security Flaws)》。这两份报告说明了在 WebGL 中发现的一些安全问题,像易于受到 DoS 攻击、跨域的图像窃取,以及 Firefox 实现中的一个 bug,那让攻击者可以窃取用户的数据。

Khronos 已经对 Context 的第一份报告作出响应,建议用户使用 GL_ARB_robustness 扩展来解决问题,“已经有一些 GPU 厂商部署了该扩展,而 Khronos 期望其他厂商也能够尽快部署,”以此作为针对 DoS 攻击的解决方案。关于跨域图像窃取,他们说到:

如果 WebGL 能够拥有合并跨域图像的能力,那么就会给开发者提供很大的方便,但是 WebGL 工作组正在考虑采用跨原始资源共享(Cross Origin Resource Sharing,CORS)或者其它机制,从而避免将来因此而受到谴责。

Context 不认为Khronos 的 GL_ARB_robustness 解决方案很合适,因为在发现 DoS 攻击的时候,它可能会重置 GPU。Context 同意 Khronos 关于图像窃取的解决方案,建议“如果需要管理跨域图片的机制,就需要在 WebGL 中使用 CORS”。 他们还提到,需要和 Mozilla 协作,修复在 Firefox 中发现的弱点,Mozilla 会乐于接受这种协作,并且他们还与 Google 也取得了联系。最终结论是,Context 建议用户禁用 WebGL,硬件厂商也不要继续为其提供支持。

在 Context 的报告之后,微软也列举了他们 对 WebGL 的主要关注点,决定“在当前表单”中不支持 WebGL,这种表述也为将来一旦想要改变主意的时候留了后路:

  • “让浏览器支持 WebGL 会直接把硬件功能暴露给 web,我们认为不应该允许这种方式。”
  • “让浏览器支持 WebGL,安全服务责任就会过于依赖第三方来保证 web 体验中的安全性。”
  • “系统在遭到 DoS 攻击时也会出现很多问题。”

我们还要提到一些相关的内容,微软对于 DirecX 投资过于巨大,在 1995 年就已经发布了第一个版本,所以他们很可能会继续支持这种技术。

然而,苹果最近宣布 iOS 5 会使用 WebGL 来进行 3D 渲染,但是据 Chris Marrin 所说,那只会限定在 iAd 开发者。他们可能会扩展对 WebGL 的支持,使得它成为 iOS 中的公共 API,从而有步骤地使用曾经有效的方法来引入新技术。

查看英文原文:Microsoft Rejects WebGL for Security Reasons

安全微软GoogleApple架构HTML5Mozilla语言 & 开发