De inhoud van de binaire data kun jen iet controleren...
"De browser kan wel elke bit controleren maar alleen als er iets te controleren valt."
Jouw woorden. En ja het klopt dat je moet weten waar je op aan het controleren bent, maar nu je woorden terugdraaien en zeggen dat de binaire data niet te controleren valt is pure onzin.
En dat gezegt zijnde, geldt het voor
elke web-API dat je moet weten wat er moet gecontroleerd worden, om het veilig te maken. Een lek kan zich praktisch overal voordoen, maar als we daarom alle vooruitgang in technologie moesten tegenhouden zou het web maar een kale plek zijn. WebGL
kan veilig ondersteund worden, want alles valt te controleren.
En ja, je systeem
zou kunnen crashen als je grafische driver onstabiel is. Maar hoe is dat de schuld van WebGL? Dit is niet anders dan een probleem in het besturingssysteem dat uitgebuit wordt totdat het opgelost is. Er is duidelijk een afbakening van verantwoordelijkheden. Je browser kan niet anders dan er vanuit gaan dat de rest van je systeem zich in bruikbare toestand bevindt. Zelfs voor de eenvoudigste taken is dat een noodzakelijke aanname. Het feit dat grafische drivers doorgaans het minst betrouwbaar zijn, moet niet als excuus gebruikt worden om NVIDIA / AMD / Intel voor altijd slechte drivers te laten schrijven.
Trouwens, de browsers hebben wel degelijk blacklists en/of whitelists voor bepaalde driver-versies, om problemen heel snel te beheersen. Dus het is niet dat ze je aan je lot overlaten als je kwetsbaar zou zijn.
In de webgl laag kan je enkel controleren dat de data voldoet aan de in webgl opgelegde beperkingen maar in webgl kun je niet controleren hoe de data door de grafische driver wordt verwerkt.
Dat kan je net zo min voor de CPU. Kijk maar naar de TLB bug in AMD's eerste Phenom CPU. Die kon in theorie ook misbruikt worden om een systeem te doen crashen. Moeten browsers daar dan ook rekening mee houden? Is elke API onveilig zo lang we niet huis aan huis gaan om Phenom chips te patchen?
Neen, natuurlijk niet. Dus je kan ook WebGL niet de schuld geven van elk driver / firmware / hardware-probleem! Wat hier van belang is, is dat WebGL een ondoordringbare laag is waar alles te controleren valt dat een voor de rest stabiel systeem zou kunnen schaden. Dat is de vereiste die aan elke API wordt opgelegd voordat we die als 'veilig' bestempelen.
Bij normale rendering van webpagina's wordt de data voor de grafische drivers door de browserengine zelf gegenereerd en niet vanuit het internet aangeleverd.
Nogmaals onzin. Ten eerste, de compositie-engine (die ook in Internet Explorer van de GPU gebruik maakt) bepaalt niet de layout van de pagina. Die wordt in de pagina zelve aangeleverd of gegenereerd; data afkomstig van het internet dus. Ten tweede, de browser heeft even veel controle over die data bij zowel gewone compositie als bij WebGL. Het is niet de webpagina die de OpenGL (ES 2) of Direct3D commando's geeft, dat doet de bowser zelve door vertaling van WebGL commando's naar de onderliggende API.
Bij WebGL gebeurt dat in feite wel en komt er door dde browser ruwe binaire data vanaf het internet tot bij de grafische drivers doorgeleverd die slechts beperkt is gecontroleerd.
Larie. Zelfs de shaders worden tot op het kleinste detail gecontroleerd. Ze worden zelfs volledig geparsed en de AST wordt opnieuw uitgeschreven als ESSL, GLSL of HLSL. Niks wordt zomaar van de webpagina aan de grafische API overgedragen.