4 ms·
The hardware provides a full-featured CPU with DMA access to the host's memory. What part of WebGL gives a programmer unrestricted access to the host's memory?
by Klinky 15y ago
The hardware provides a full-featured CPU with DMA access to the host's memory.
What part of WebGL gives a programmer unrestricted access to the host's memory?
Everything better go just right, or it's going to end up remotely exploitable.
The same could be said for practically any program or web app. Your web browser could have a buffer overflow in it's HTML parsing engine, yet I don't hear you speaking out against HTML... - http://secunia.com/advisories/12959/ http://secunia.com/advisories/12959/
- marshray 15y agoWhat part of WebGL gives a programmer unrestricted access to the host's memory? Ever had a video driver bug crash an application or bluescreen Windows? Your web browser could have a buffer overflow in it's HTML parsing engine, yet I don't hear you speaking out against HTML It's a fair point. Security is about trade-offs. I am indeed concerned about HTML and do most browsing in a VM. But to me WebGL is farther out on the risk/benefit spectrum than HTML. I would not accept it for ads or ordinary page content. I would consider enabling it selectively for an app that I carefully decided to trust. * Admittedly I have not tried, but I suspect it's going to be very difficult to get it to work well from within a VM. * HTML parsers and renderers have indeed had plenty of vulnerabilities. They have taken years to get as secure as they are today and we may not have seen the last of the exploitable bugs in them. * HTML parsers have been implemented from the beginning to accept untrusted data from the internet. 3D graphics drivers, on the other hand, are designed primarily for performance in a scenario where they are run by a single-user game on the local machine, often with Admin privs already. * We saw how many years it took Microsoft (the company that could reportedly turn on a dime) to 'get' security to the point that they could ship a secure browser. I don't see much evidence that graphics vendors are even thinking about it yet. * Apple knows that WebGL bugs will result in jailbroken iPhones. Guess how many years their OpenGL support level is behind the PC...on the very same GPU hardware? Last I checked, someone reported getting OpenGL 3.2 working on a Mac. I've had usable OpenGL 3.3 on a freaking Linux laptop for a couple of years now. More powerful GPUs are up at 4.2. * A buffer overflow in HTML does not automatically amount to a kernel level compromise, (some recent font handling bugs in Windows notwithstanding :-). In fact, the latest generation of sandboxed browsers are building defense in depth mitigations. Any buffer mismanagement between the GPU, driver, GL, and WebGL seems very likely to result in complete pwnage. The GPU can access host memory directly with no access permissions. Don't get me wrong - I love the idea of WebGL and want it to succeed. I just would hate to see it end up like Flash, struggling for years to retrofit security onto something that wasn't originally spec'd for it and a bunch of its users getting pwned in the process.
- Klinky 15y agoEver had a video driver bug crash an application or bluescreen Windows? Yes, but I've also had audio, webcam, scanner & IDE drivers BSOD my computers over the years as well. Drivers usually get better with time, but crappy drivers aren't unique to video cards. Admittedly I have not tried, but I suspect it's going to be very difficult to get it to work well from within a VM. VM software is getting better at passing 3D through to the native hardware, so it may be easier than you think. HTML parsers and renderers have indeed had plenty of vulnerabilities. They have taken years to get as secure as they are today and we may not have seen the last of the exploitable bugs in them. This is the story of software in general. As long as there will be software, there will be bugs, some of them severe. Doesn't mean you just accept it & not try to prevent them, but you also don't stifle innovation because of the fear of causing them. 3D graphics drivers, on the other hand, are designed primarily for performance in a scenario where they are run by a single-user game on the local machine, often with Admin privs already. Not really, they've supported multiple 3D accessible contexts for years & years now. Also if you're running Vista or Windows 7 you are more than likely already relying on the 3D hardware to render your 2D desktop. Web browsers are already using features of 3D hardware to further accelerate non-WebGL content. Apple knows that WebGL bugs will result in jailbroken iPhones. They also know that they messed up on the antenna design of the iPhone 4. Apple is not immune to flaws. Guess how many years their OpenGL support level is behind the PC... This doesn't really matter because WebGL is essentially a copy of OpenGL ES 2.0, which is closely based on OpenGL 2.0. The GPU can access host memory directly with no access permissions. So can your CPU, what's stopping rogue apps from doing so? Software. WebGL mainly involves writing GLSL scripts that act on buffers & arrays of data. You are limited to what data types you can upload into the video card. Perhaps there are more vectors for vulnerability, but I'd rather see WebGL take off as a transparent standard, than rely on Adobe. Plus it's performance could be much greater than sluggish Flash. I admit I'd like to see more granularity as far as control. Last thing I want is WebGL ads eating up my GPU/CPU/Battery rendering stupid ragdolls physics simulations.
- marshray 15y agoYes, but I've also had audio, webcam, scanner & IDE drivers BSOD my computers over the years as well. Drivers usually get better with time, but crappy drivers aren't unique to video cards. Absolutely. But webcam, scanner, and disk drivers are not accepting attacker-chosen data from the internet. The audio driver may occasionally. I would be surprised if there had never been any remotely exploitable security vulnerabilities, particularly involving driver support of complex audio compression formats. VM software is getting better at passing 3D through to the native hardware, so it may be easier than you think. Yeah, this will be something to watch. This is the story of software in general. As long as there will be software, there will be bugs, some of them severe. Doesn't mean you just accept it & not try to prevent them, but you also don't stifle innovation because of the fear of causing them. The world's botnet and antivirus vendors thank you for your commitment innovation. Not really, they've supported multiple 3D accessible contexts for years & years now. Right, but to what extent have they been really tested as a security boundary? http://www.google.com/search?q=malicious+shader http://www.google.com/search?q=malicious+shader -> 30 results. It is the dawning of a new era. Also if you're running Vista or Windows 7 you are more than likely already relying on the 3D hardware to render your 2D desktop. Web browsers are already using features of 3D hardware to further accelerate non-WebGL content. No, web browsers are not accepting shader code from websites and feeding it to the GPU. >The GPU can access host memory directly with no access permissions. So can your CPU, what's stopping rogue apps from doing so? Software. A lot of software built on very carefully designed hardware memory protections that took decades to mature into the brittle systems we have now. Out of curiosity, do any GPUs have no-execute page permissions? And what stops a GPU from modifying the execute-disable bits on CPU-managed memory pages? WebGL mainly involves writing GLSL scripts that act on buffers & arrays of data. You are limited to what data types you can upload into the video card. GLSL is a Turing-complete language, so no, it is an unlimited data type. It is provably impossible to put limits on its behavior before you run it. The best you can do is run it with limited access to other memory space. But if that were implemented perfectly, video drivers would never crash. Perhaps there are more vectors for vulnerability, but I'd rather see WebGL take off as a transparent standard, than rely on Adobe. Well anything looks good if your standard of comparison is low enough. :-) I admit I'd like to see more granularity as far as control. Last thing I want is WebGL ads eating up my GPU/CPU/Battery rendering stupid ragdolls physics simulations. Noscript is your friend!