WebGL est une API permettant aux développeurs de créer du contenu 3D lors du rendu d’une page web, en exploitant directement les capacités de la carte graphique. Ses spécifications sont fondées sur celles d’Open GL ES et visent l’universalité puisque le web n’est pas limité à une seule plateforme. Seulement voilà, l'aspect sécurité de cette technologie est suffisamment flou pour que Microsoft émette de sérieuses réserves et qu’Apple l’adopte à sa manière.
Des sites web attaquant des GPU
Il y a un peu plus d’un mois, le cabinet de recherche en sécurité Context se livrait à une explication des problèmes de sécurité que pouvait engendrer WebGL. L’accès direct au matériel depuis une page web posait notamment un problème en ouvrant aux pirates de nouvelles possibilités. Selon Context, une attaque basée sur WebGL pouvait fonctionner en quatre temps :
Pour Microsoft, personne n’est réellement prêt
On ne sait si l’étude de Context a fait mouche, mais Microsoft vient d’annoncer qu’en l’état WebGL ne serait pas adopté dans Internet Explorer compte tenu de son insécurité. La société donne trois axes à son explication.
Premièrement, le support de WebGL expose directement les fonctionnalités matérielles au web d’une manière jugée trop permissive. La sécurité de WebGL ne repose plus directement sur le navigateur mais sur des couches plus basses, notamment les pilotes. Or, cela ajoute une pression sur les constructeurs qui n’ont jamais eu à gérer ce type de protection jusqu’à présent. Étant donné le nombre de GPU et de pilotes les accompagnant, la surface d’attaque est jugée trop grande.
Deuxièmement, la sécurité repose aussi sur un nombre trop important d’acteurs tiers. Quand des vulnérabilités apparaîtront, elles ne le feront pas nécessairement dans l’API WebGL elle-même. Elles peuvent se situer dans les composants système des autres sociétés. Les utilisateurs ne sont pas habitués à vérifier la version du pilote, ce qui pourrait aboutir à des cas où ils auraient à choisir entre rester à découvert par manque de connaissance ou absence de nouveau pilote, ou chercher volontairement à mettre à jour son système.
Or cette situation est complexe. Les mises à jour automatiques du système permettent de diffuser rapidement une version précise d’un composant à l’ensemble des utilisateurs. Dans le domaine des cartes graphiques, ce système n’existe que chez ATI et de manière très récente. Il faut ajouter en outre que de nombreuses machines vendues, notamment dans les ordinateurs portables, disposent de pilotes graphiques particuliers qui ne sont que très rarement mis à jour, voire jamais. Microsoft considère que cette situation est incompatible avec les besoins en sécurité imposés par WebGL, qui nécessitent de réagir rapidement en fonction du composant impliqué.
Enfin, l’éditeur ajoute que les systèmes d’exploitation modernes et les infrastructures graphiques n’ont jamais été conçus pour se défendre complètement contre des attaques passant par les shaders et la géométrie. Microsoft reconnaît que des facteurs de défense existent, mais qu’il n’existe pas de preuve qu’ils puissent régler de manière compréhensive les attaques de type DoS (déni de service). Si la situation n’est pas gérée globalement, on aboutira nécessairement à des sites web provoquant des plantages ou des redémarrages des machines lors d’une simple visite.
Microsoft isolé, Apple sur un pied
Le fait est que même si Microsoft refuse de supporter WebGL dans sa forme actuelle, les autres ne s’en privent pas. Firefox et Chrome sont déjà compatibles tandis que les moutures en approche de Safari et Opera y viendront à leur tour. La part de marché d’Internet Explorer diminuant, le poids de la décision de Microsoft se fera moindre. Cependant, cela ne signifie pas que les autres navigateurs ne seront pas touchés pour les mêmes raisons.
Du côté d’Apple, Safari 5.1, actuellement dans les bêtas de Mac OS X Lion, est compatible avec WebGL. Il utilise en effet les dernières nouveautés intégrées dans WebKit, et WebGL en fait partie. La situation sur iOS est par contre plus stricte : seul les développeurs de publicités pour la plateforme iAd seront autorisés à utiliser la technologie dans iOS 5. Pourquoi ? La raison peut être autant économique qu’axée sur la sécurité. Après tout, si les iDevices deviennent capables de rendre un contenu 3D dans une page web, l’App Store serait menacé.
Quoi qu’il en soit, WebGL est une technologie très jeune, dont les spécifications finales pour la version 1.0 n’ont que quelques mois. Nul doute que des évolutions sont prévues, et la sécurité devra y jouer une bonne part si le Khronos Group, créateur de l’API, souhaite que son utilisation soit possible dans tous les navigateurs.
Des sites web attaquant des GPU
Il y a un peu plus d’un mois, le cabinet de recherche en sécurité Context se livrait à une explication des problèmes de sécurité que pouvait engendrer WebGL. L’accès direct au matériel depuis une page web posait notamment un problème en ouvrant aux pirates de nouvelles possibilités. Selon Context, une attaque basée sur WebGL pouvait fonctionner en quatre temps :
- Un internaute visite une page embarquant un script WebGL malveillant
- Le composant WebGL envoie le code à la carte graphique
- Le code exploite une faille dans le pilote graphique
- La carte graphique peut elle-même être attaquée, entraînant des instabilités.
Pour Microsoft, personne n’est réellement prêt
On ne sait si l’étude de Context a fait mouche, mais Microsoft vient d’annoncer qu’en l’état WebGL ne serait pas adopté dans Internet Explorer compte tenu de son insécurité. La société donne trois axes à son explication.
Premièrement, le support de WebGL expose directement les fonctionnalités matérielles au web d’une manière jugée trop permissive. La sécurité de WebGL ne repose plus directement sur le navigateur mais sur des couches plus basses, notamment les pilotes. Or, cela ajoute une pression sur les constructeurs qui n’ont jamais eu à gérer ce type de protection jusqu’à présent. Étant donné le nombre de GPU et de pilotes les accompagnant, la surface d’attaque est jugée trop grande.
Deuxièmement, la sécurité repose aussi sur un nombre trop important d’acteurs tiers. Quand des vulnérabilités apparaîtront, elles ne le feront pas nécessairement dans l’API WebGL elle-même. Elles peuvent se situer dans les composants système des autres sociétés. Les utilisateurs ne sont pas habitués à vérifier la version du pilote, ce qui pourrait aboutir à des cas où ils auraient à choisir entre rester à découvert par manque de connaissance ou absence de nouveau pilote, ou chercher volontairement à mettre à jour son système.
Or cette situation est complexe. Les mises à jour automatiques du système permettent de diffuser rapidement une version précise d’un composant à l’ensemble des utilisateurs. Dans le domaine des cartes graphiques, ce système n’existe que chez ATI et de manière très récente. Il faut ajouter en outre que de nombreuses machines vendues, notamment dans les ordinateurs portables, disposent de pilotes graphiques particuliers qui ne sont que très rarement mis à jour, voire jamais. Microsoft considère que cette situation est incompatible avec les besoins en sécurité imposés par WebGL, qui nécessitent de réagir rapidement en fonction du composant impliqué.
Enfin, l’éditeur ajoute que les systèmes d’exploitation modernes et les infrastructures graphiques n’ont jamais été conçus pour se défendre complètement contre des attaques passant par les shaders et la géométrie. Microsoft reconnaît que des facteurs de défense existent, mais qu’il n’existe pas de preuve qu’ils puissent régler de manière compréhensive les attaques de type DoS (déni de service). Si la situation n’est pas gérée globalement, on aboutira nécessairement à des sites web provoquant des plantages ou des redémarrages des machines lors d’une simple visite.
Microsoft isolé, Apple sur un pied
Le fait est que même si Microsoft refuse de supporter WebGL dans sa forme actuelle, les autres ne s’en privent pas. Firefox et Chrome sont déjà compatibles tandis que les moutures en approche de Safari et Opera y viendront à leur tour. La part de marché d’Internet Explorer diminuant, le poids de la décision de Microsoft se fera moindre. Cependant, cela ne signifie pas que les autres navigateurs ne seront pas touchés pour les mêmes raisons.
Du côté d’Apple, Safari 5.1, actuellement dans les bêtas de Mac OS X Lion, est compatible avec WebGL. Il utilise en effet les dernières nouveautés intégrées dans WebKit, et WebGL en fait partie. La situation sur iOS est par contre plus stricte : seul les développeurs de publicités pour la plateforme iAd seront autorisés à utiliser la technologie dans iOS 5. Pourquoi ? La raison peut être autant économique qu’axée sur la sécurité. Après tout, si les iDevices deviennent capables de rendre un contenu 3D dans une page web, l’App Store serait menacé.
Quoi qu’il en soit, WebGL est une technologie très jeune, dont les spécifications finales pour la version 1.0 n’ont que quelques mois. Nul doute que des évolutions sont prévues, et la sécurité devra y jouer une bonne part si le Khronos Group, créateur de l’API, souhaite que son utilisation soit possible dans tous les navigateurs.