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