Der WebGL-Standard unterwandert das Sicherheitskonzept moderner Betriebssysteme und bietet neue Angriffsflächen, mahnen die Sicherheitsforscher von Context. Durch WebGL können Internetseiten Shader-Code direkt auf der Grafikkarte ausführen, um etwa anspruchsvolle 3D-Animationen zu rendern. Dies lässt sich aber auch dazu missbrauchen, um den Rechner komplett lahmzulegen – etwa, indem man die GPU besonders komplexe 3D-Modelle rendern lässt oder sehr rechenlastige Shader-Programme ausführt. Davor warnt selbst die für die WebGL verantwortliche Khronos Group in den Spezifikationen des Standards.

Ist der Grafikkartentreiber löchrig, kann durch WebGL unter Umständen Schadcode ins System gelangen. (Bild: Context)

Den Forschern ist es nach eigenen Angaben gelungen, durch gezielte Überlastung der Grafikkarte einen Bluescreen zu erzeugen. Dies könne laut dem Bericht dazu führen, dass ein Angreifer eventuell vorhandene Sicherheitslücken im Grafikkartentreiber ausnutzen kann, um etwa Schadcode ins System einzuschleusen. Unter Windows Vista und 7 sorgt zwar ein Mechanismus dafür, dass eine durch Überlastung blockierte Grafikkarte nach etwa zwei Sekunden zurückgesetzt wird; nach einer bestimmten Anzahl von Resets führt laut dem Bericht aber auch dies schließlich zu einem Bluescreen.

Auch die Same-Origin-Policy konnten die Forscher durch gezielten Einsatz von WebGL umgehen. WebGL setzt auf das Canvas-Element von HTML5 zum Zeichnen im Browser, das ein Flag namens "origin-clean" besitzt. Solange dieses Flag gesetzt ist, kann die Webseite, aus der das WebGL-Skript stammt, den Inhalt des Canvas auslesen (getDataURL). Sobald jedoch Inhalte aus weiteren Domains wie Bilder oder Cliparts vom Anwender in das Canvas gezeichnet oder als Texturen geladen werden, wird das Flag zurückgesetzt. Somit sollte die Webseite das Canvas nicht mehr auslesen und nicht sehen können, welche Inhalte von weiteren Webseiten eingebettet wurden.

Durch geschickt per WebGL programmierte Shader lässt sich jedoch mit Laufzeittests auf die Struktur einer eingebetteten Textur schließen und somit der Inhalt eines nachgeladenes Bilds rekonstruieren – ohne es direkt auslesen zu können. Die Forscher führen das Problem mit einer Online-Demo. ein Video eines Angriffs steht hier zu Verfügung.

Nach Ansicht der Forscher ist WebGL noch nicht für den Masseneinsatz geeignet. Sie raten Anwendern und IT-Verantwortliche, ernsthaft darüber nachzudenken, die WebGL-Unterstützung des Browsers zu deaktivieren. WebGL unterstützen die aktuellen Versionen von Firefox, Chrome und Safari. Opera hat zumindest bereits eine Alpha mit WebGL-Unterstützung veröffentlicht.

[Update]Auch das US-CERT warnt vor den Schwachstellen von WebGL. Das nationale Sicherheitsteam der USA rät Anwendern und Admins, WebGL zu deaktivieren, um das Angriffsrisiko zu reduzieren. Unterdessen macht die Khronos Group darauf aufmerksam, dass man mit der OpenGL-Erweiterung GL_ARB_robustness DoS-Angriffe und Zugriffsversuche auf unzulässige Bereiche des Speichers erfolgreich unterbinden könne.

Nach Angaben von Khronos wurde die Erweiterung bereits von einigen GPU-Herstellern übernommen, weitere sollen folgen. Der Browser kann abfragen, ob die Sicherheitserweiterung von der GPU unterstützt wird – und wird dies nach Einschätzung von Khronos künftig auch tun. Nur wer mit einer sicheren Grafikkarte surft, würde den WebGL-Inhalt dann zu Gesicht bekommen. Um das Umgehen der Same-Origin-Policy zu verhindern, hat die Khronos Group noch keine endgültige Lösung parat. Derzeit wird etwa der Vorschlag diskutiert, das Cross Origin Resource Sharing (CORS) standardmäßig zu deaktivieren.[/Update] (rei)