8

I know how to disable WebGL in Chrome by adding the command in the shortcut target box.

However if I open a hyperlink and no instance of Chrome is already open via this shortcut, WebGL will be enabled.

Is it possible to disable WebGL no matter how Chrome is opened?

I'm using Chrome 13.0.782.215 on Windows 7 64-bit.

Moab
  • 58,044
  • 21
  • 113
  • 176
  • 3
    Did you guys actually drink the anti-WebGL propaganda? Can you even point to one single open WebGL exploitable vulnerability that you know of? (Hint --- you can't. Neither can the people who spread FUD about WebGL). /a WebGL implementer (not in Chrome though) –  Aug 30 '11 at 19:23
  • https://www.khronos.org/registry/webgl/sdk/tests/extra/lots-of-polys-example.html – SecurityMatt Aug 22 '12 at 08:55

6 Answers6

3

Unfortunately, the Chromium devs are slow (and apparently loathe) to handle command-line parameters when setting it as the default web browser.

Until they get around to doing it (if ever), you’ll need to set any arguments yourself for each and every registry entry (and shortcut) each time your command-line needs change.

This can become quite cumbersome since there are several registry locations in which the executable is stored, and thus would need to be updated (no less than a dozen default locations). I’ve come up with a pretty handy workaround that makes it much easier to update and maintain.

Synetech
  • 68,243
  • 36
  • 223
  • 356
  • Hmm, I don’t know how that happened. It’s fixed now. – Synetech Aug 22 '11 at 05:47
  • I don't know why they don't allow you to disable it in Flags. I wonder if "GPU Accelerated Canvas 2D" in About:Flags is the same as webgl? – Moab Aug 23 '11 at 18:20
  • 2
    `about:flags` is (as the warning/disclaimer at the top says) experimental and temporary. WebGL *used* to be in the Flags page, but that was when WebGL was disabled by default and power-users could use the page to specifically enable it. *GPU Accelerated Canvas 2D* is not WebGL, it allows graphics processing to be offloaded to certain GPUs. WebGL is a language specification/library that *can use* GPU-accelerated-graphics if available—think DirectX <-> FPU. Also, versions that have that flags option also have the --disable-webgl parameter (if they were the same, there would only be one of them). – Synetech Aug 24 '11 at 00:18
2

I will describe how to add an invocation parameter for Firefox, which I use, and you can adapt the procedure to Chrome. This involves editing the registry, so take first all due precautions, including creating a system restore point.

Open regedit, and search forHKEY_CLASSES_ROOT\.htm and HKEY_CLASSES_ROOT\.html. Click on both, and you will see a (Default) entry, which for Firefox contains the value FirefoxHTML.

Now position yourself on HKEY_CLASSES_ROOT\FirefoxHTML\shell\open\command. The (Default) entry contains the Firefox command invocation. Modify it to include the additional parameter (-disable-webgl in your case).

This should have instant effect, but you might possibly need to logout and login.

EDIT

Other registry keys to verify that they use the same handler (FirefoxHTML) are:

HKEY_CLASSES_ROOT\.shtml
HKEY_CLASSES_ROOT\.xht
HKEY_CLASSES_ROOT\.xhtm
HKEY_CLASSES_ROOT\.xhtml
HKEY_CLASSES_ROOT\HTTP\shell\open\command
HKEY_CLASSES_ROOT\https\shell\open\command
HKEY_CLASSES_ROOT\ftp\shell\open\command

harrymc
  • 455,459
  • 31
  • 526
  • 924
  • Does this look like a correct mod?..chrome.exe" -- "%1" --disable-webgl – Moab Aug 18 '11 at 14:53
  • Being careful, I would make it more like `"chrome.exe" --disable-webgl -- "%1"` – harrymc Aug 18 '11 at 15:19
  • Indicates the 1st argument. In this case when Windows uses this command it will pass the URL as an argument to the command. – arunkumar Aug 18 '11 at 18:03
  • Thanks arunkumar, I was hoping Harrymc would answer, but maybe he only answers for bounty points. – Moab Aug 19 '11 at 14:00
  • @Moab: (I heard that!) Sorry not to have been there to answer, but arunkumar was faster. – harrymc Aug 19 '11 at 14:32
  • @Harrymc, have a look at this one, I will pay bounty for a working solution...http://superuser.com/questions/260391/cant-find-the-bagmru-size-value-my-folder-settings-are-getting-lost – Moab Aug 19 '11 at 15:20
  • I have edited my answer to that question. – harrymc Aug 19 '11 at 18:09
  • Don’t forget all the other locations. – Synetech Aug 22 '11 at 00:45
  • Harrymc, you care to comment about the additional registry locations? – Moab Aug 24 '11 at 00:50
  • Did so. Found them by just searching the registry for FirefoxHTML, so in effect the suggested change takes care of all of them at once. – harrymc Aug 24 '11 at 06:04
  • It would have been better if your answer was specific to Chrome and not Firefox. Makes it hard to decide who to give the bounty to. – Moab Aug 24 '11 at 15:34
  • I believe that you have applied my answer and it worked for you, so you are at liberty to improve my answer with the details for Chrome (the difference is only in the one registry key). If it didn't work, then accept one of the other answers. – harrymc Aug 24 '11 at 16:13
  • I don't feel it is right to improve an answer to my question when there is a bounty involved, but that is just me. – Moab Aug 24 '11 at 17:58
2

If you don't get a good answer for this (and it's looking like you won't, even if one gets automatically accepted for the bounty), you would be well within your rights to file a bug report against Chromium - after all, it's a security issue. In my opinion, if they really care about security, WebGL should be disabled by default for all users. There should at least be a way to disable it from the chrome://settings page.

Hugh Allen
  • 9,820
  • 6
  • 34
  • 42
1

One slightly hackish way of doing this would be to create a chrome.bat somewhere in your %PATH%. In it you have [drive]:\Path\To\chrome.exe --disable-webgl %1.

Then change the default link handler to use your chrome.bat instead of Chrome.

arunkumar
  • 583
  • 1
  • 4
  • 9
  • I was wanting a global solution, where it will work no matter how chrome is opened. – Moab Aug 18 '11 at 14:49
0

Create an exe in you favorite language called chrome.exe, rename the original chrome to something else e.g. foo.exe. In your exe start foo.exe with the required parameters.

EDIT: Write a piece of executable code that calls foo.exe with the required parameters. You may be able to use a simple shell script.

You now only have to place your newly created file in the chrome folder, effectively replacing what would have been the original. This way it will never open without your parameters set.

I am not sure how this works with the automatic updates though.

Jes
  • 111
  • 1
  • 6
  • 1
    "Create an exe in you favorite language called chrome.exe" needs some explaining. – Moab Aug 24 '11 at 00:44
-1

To disable WebGL visit:

chrome://flags/#disable-software-rasterizer

in your browser. One of the settings is confusingly named "Disable WebGL", which you have to Enable to Disable WebGL (go figure).

karel
  • 13,390
  • 26
  • 45
  • 52
SecurityMatt
  • 3,140
  • 16
  • 21