An industry standard graphics engine recently added to Mozilla's Firefox browser allows attackers to surreptitiously steal any image displayed on a Windows or Mac computer just by visiting a booby-trapped website, security researchers have warned.
The vulnerability, reported Thursday by UK-based Context Information Security, is unique to Mozilla's implementation of the 3D-accelleration API known as WebGL, but researchers with the firm said it's related to serious design flaws in the cross-platform technology. The report comes five weeks after Context first warned of data-theft and denial-of-service threats in WebGL, which is also built into Google Chrome and developer versions of Opera and Apple's Safari.
Apple on Thursday announced that iPhones and iPads will offer limited support for the technology when iOS 5 is released later this year.
The report, coincidentally or otherwise, came the same day researchers from Microsoft's Security Research Center published a brief analysis titled "WebGL Considered Harmful" that concurred that it suffers from a variety of weaknesses that will be hard to fix.
"The security of WebGL as a whole depends on lower levels of the system, including OEM drivers, upholding security guarantees they never really need[ed] to worry about before," the Microsoft critique stated. "Attacks that may have previously resulted only in local elevation of privilege may now result in remote compromise. While it may be possible to mitigate these risks to some extent, the large attack surface exposed by WebGL remains a concern."
Microsoft products that implemented WebGL would have a tough time passing the company's rigorous Security Development Lifecycle, the analysis added. Microsoft has instead relied on a home-grown technology known as Direct3D to make graphics faster in its applications. A Context representative said Microsoft didn't commission the Context report. A Microsoft spokeswoman declined to say if Microsoft provided any support.
Exposing GPU memory to world+dog
The Context researchers have developed a proof-of-concept exploit that allows an attacker to steal images displayed on computers that do nothing more than use a current version of Firefox on a WebGL-enabled machine to browse a site with a malicious payload. The attack works by "spraying" memory in the computer's graphics card to collect data that's already been processed.
"The vulnerability we discovered enables any graphics image that has been displayed on the system to be stolen by an attacker by reading unitialised data from graphics memory," the Context report stated. "This is not limited to WebGL content but includes other web pages, a user's desktop and other applications."
A video included with the report shows images from an encrypted session on LinkedIn.com being stolen from a computer running Apple's OS X. The exploit also works against PCs running Microsoft Windows.
A spokeswoman for Mozilla said the vulnerability will be fixed with the introduction of Firefox 5, due next week. A statement issued by representatives of Khronos, the firm that acts as the gatekeeper for the WebGL standard, said that the threat "is due to a bug in Firefox's WebGL implementation, and cannot be generalized across other browsers' WebGL implementations."
The Context report raised other concerns about the security and stability of WebGL, including the failure of both Firefox and Chrome to pass a suite of conformance tests that prove their implementations adhere to official specifications.
"Between disparate platforms the browser must be exposing some aspect of the underlying graphics implementation to the web page for problems to arise, even if it is something trivial such as incorrect return values," the report concluded.
The Context researchers also found problems in a previously-released extension designed to mitigate the effects of vulnerabilities that make it easy for websites to completely crash machines that have WebGL enabled. So far, only graphics cards made by NVidia support the GL_ARB_robustness extension, and even then it doesn't work on machines running Windows XP, the Context researchers claimed. Mozilla has responded with a forthcoming GL_ARB_robustness_2 extension, further calling into question the effectiveness of the current extension, they added.
The Khronos spokesman's statement said: "All browser vendors are still working toward passing the WebGL conformance suite. Only once they have successfully done so can they claim support of Canvas.getContext("webgl") instead of Canvas.getContext("experimental-webgl")."
The statement continued: "Browser vendors are still in the process of supporting the GL_ARB_robustness extension, so it is expected that the previously reported denial-of-service issues are still present. It is expected that the reported denial-of-service issues will be solved with the integration of this extension."
Still in its adolescence
A Google spokesman said that Chrome doesn't run WebGL on some system configurations when lower level stack issues are identified and that many parts of WebGL, including the GPU process, run in separate processes that are sandboxed in the browser to help prevent the kinds of attacks described by Context.
Context researchers recommend users disable WebGL in both Firefox and Chrome, while the US Computer Emergency Readiness Team has suggested administrators review the Context findings and "update their systems as necessary to help mitigate the risks."
The two reports from Context, and the responses from Khronos, strongly suggest that WebGL is still in its adolescence and will require a more work among browser makers and hardware manufacturers for it to become mature. Disabling WebGL is probably an overreaction. Then again, at this early stage, users who turn it off probably aren't missing much.
For those who decide to forgo the benefits of WebGL, Context's report provides step-by-step instructions for turning off the graphics-acceleration interface in both Firefox and Chrome. ®