Hier kommen vereinzelt Mails zu "der WebGL-Lücke" an. Ich hätte doch Chrome "empfohlen", und das sei ja sehr suspekt, dass ich jetzt nichts schreibe. Auch zu dieser tollen PR-Lücke neulich kamen gleich nervende "haha, du Chrome-Jünger hast aber ins Klo gegriffen" Mails. Also erstmal: nein, ich habe nicht Chrome empfohlen. Ich empfehle keine Browser. Die sind alle Scheiße. Viel zu komplex, viel zu groß, gruselige Codebasis, kein Mensch steigt da mehr durch.

Zu "der WebGL-Lücke" habe ich nichts gesagt, weil das keine Lücke ist, sondern eine Idee der Größenordnung "lasst uns im Winter Russland angreifen". Ich versuche das mal kurz zu erklären. Prozessoren haben heutzutage eine MMU drin. Die MMU erlaubt es, Speicherschutz zu implementieren. Das Betriebssystem kann damit z.B. verhindern, dass irgendwelche Prozesse Speicherbereiche anderer Prozesse oder des Betriebssystems selber kaputtmachen.

Hardware hat sowas nicht. Insbesondere haben Grafikkarten sowas nicht. Früher war das nicht so schlimm, weil auf der Grafikkarte kein Code lief, also jedenfalls kein hochgeladener Code, sondern man konnte halt aus ein paar Operationen auswählen, die dann auf der Grafikkarte ausgeführt werden. Heute haben Grafikkarten eigene Programme, die Shader. Die können u.a. auf den Hauptspeicher des PCs zugreifen. Lesend und schreibend.

Mit anderen Worten: wer Shader auf die Grafikkarte hochladen kann, hat Schreibzugriff auf das Betriebssystem.

Das hat sich noch nicht weit genug herumgesprochen, dass die Malware-Toolkits das regulär benutzen. Aber alle, die sich mit der Technologie mal beschäftigt haben, wissen das. Grafikkarten sind da nicht alleine. Jede Hardware am PCI-Bus kann das. Und PC-Card und ExpressCard sind im Wesentlichen auch nur herausgeführte PCI-Busse. Wer also ein Notebook mit solchen Slots hat, der gibt jedem mit physischem Zugriff auf das Gerät auch softwaretechnisch Vollzugriff auf das Gerät, und zwar ohne dass derjenige rumschrauben müsste.

Und dann gibt es natürlich noch schlechte Ideen wie Firewire, was kein PCI-Bus ist, aber wo man über den Stecker trotzdem Schreibzugriff auf den Hauptspeicher im Rechner hat. Das selbe in Grün. Es sah ja eine Weile so aus, als hätte man aus dem Firewire-Debakel gelernt, aber nein, Intels neueste Technologie, Thunderbolt, führt gleich einen ganzen PCI-Express-Bus per Stecker raus aus dem Gehäuse. SUPER!

Aber zurück zu den Grafikkarten. Wenn man das einmal verstanden hat, dass Shader-Zugriff auf Grafikkarten sicherheitstechnisch Game Over ist, verstehen man auch plötzlich diverse andere Dinge als die schlechte Idee, die sie sind. Z.B. … in "virtuellen Maschinen" 3d-Grafik zu machen. Oder … 3d-Grafik über Netz forwarden! Game Over.

Es gibt eine Hoffnung im dem ganzen Jammertal. IOMMU. IOMMU ist eine MMU für I/O-Zugriffe. Damit könnte man also z.B. einschränken, welche Speicherbereiche die Grafikkarte überhaupt sehen kann. AMD hat sowas schon länger, Intel hat kürzlich nachgelegt. Leider … gibt es da auch schon Angriffe drauf.

Solange es hier keine funktionierende und erprobte Schutz-Technologie gibt, muss man alle 3d-Software (und natürlich erst Recht OpenCL/Cuda/Stream-Kram) so betrachten, als habe man ihr gerade Vollzugriff auf das System erteilt. Denn im Wesentlichen hat man das.

Vielleicht versteht jetzt der eine oder andere, wieso man keinesfalls irgendwelchen Webseiten Shader-Zugriff auf seine Grafikhardware geben will.

Update: Hier kommen gerade ein paar Mails von Leuten rein, die es besser/genauer wissen als ich. Die beiden Haupteinwände sind: a) man kann per WebGL nur GLSL hochladen, nicht binäre Shader, und b) die Grafikkarte kann nicht auf den kompletten Speicher im PC zugreifen, sondern nur auf die Bereiche, die der Treiber eingestellt hat. Soweit ich weiß ist das generell beides richtig.

Allerdings sind ja die Treiber nicht Open Source (Ausnahmen bestätigen die Regel; Benutzer der Open Source GL-Treiber unter Linux können hier möglicherweise ruhiger schlafen). Und Kontextwechsel kosten. Und Grafikkartentreibern geht es um Performance, sogar mehr noch als um Korrektheit. Ich bleibe daher bei meiner Einschätzung. Zumindest bis jemand kommt und es mir noch anders erklärt :-)

17.05.2011