最近微软引用了两份分析 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,从而有步骤地使用曾经有效的方法来引入新技术。
评论