Pour les sociétés dont le portefeuille de produits web est de plus en plus grand et dont l'audience est de plus en plus importante, la notion de sécurité des utilisateurs est une priorité. Mais elle est aussi extrèmement difficile à assurer quand une erreur qui a très peu d'impact sur le produit subissant la modification peut en avoir de catastrophique sur d'autres produits, parfois totalement inconnus du développeur à l'origine de l'erreur.
Tony Ruscoe nous en a donné un exemple en relatant son interaction avec Google au sujet d'un trou de sécurité dans une des nouvelles fonctionnalités de Blogger.
Blogger Custom Domain vous permet de mettre le nom de site de votre choix sur votre blog hébergé sur blogger.com. Par exemple, au lieu de machintruc.blogspot.com, vous pourriez apparaître si quelqu'un utilisait l'URL http://blog.machintruc.org. Pour cela, il vous suffit d'avoir les droits sur le nom de domaine, de faire une configuration DNS et de remplir un formulaire chez Blogger. Je vous laisse chercher les détails si vous êtes intéressé.
Ce que Tony Ruscoe a découvert, c'est que l'on pouvait donner n'importe quel nom de domaine dans le formulaire, et en particulier, un sous domaine de google.com. Il a eu l'intelligence d'utiliser le nom de domaine qui va bien et il s'est retrouvé alors avec un blog s'affichant en google.com. Mais un blog, c'est un site dans lequel on peut écrire ce que l'on veut, et en particulier plein de javascript ! Il avait donc la possibilité d'avoir une page dans laquelle une fonction javascript pouvait avoir accès aux cookies en google.com que le navigateur en train de lire cette page avait stocké jusqu'à présent.
Et en particulier, les cookies permettant de s'authentifier pour avoir accès au compte gmail de l'utilsateur de ce navigateur, peut-être même à ses informations google Checkout, aux fichiers stockés avec Writely ou Google Spreadsheet, etc ...
La fonction Blogger Custom Domain est très simple à mettre en place: on peut le faire en mettant à jour automatiquement des fichiers de configuration apache (Virtual Domain Name) et avec une ou deux règles de réécriture d'URLs (Rewrite Rule engine). Bon, ce sera un peu plus compliqué dans le cas de Blogger, car ils ont plus que quelques machines !
Mais c'est tellement simple à mettre en place et c'est un développement tellement réduit que l'impact que pourrait avoir cette fonctionnalité sur d'autres produits Google est très difficile à imaginer. Dans le cas qui nous occupe, le développeur a sans doute pensé à faire toutes les validations nécessaire pour que le texte entré dans le formulaire ne puisse causer aucun problème une fois inséré dans les configurations du serveur web. Il a peut-être même pensé à vérifier que les serveurs de noms pointaient bien sur la bonne machine et que le blog existait déjà . mais Tony a rentré un nom de domaine qui était parfaitement valide, et qui ne pouvait en aucun cas causer un quelconque problème à l'application sur laquelle travaillait le développeur.
Pour toutes les application ayant un rapport plus ou moins lointain avec du User Generated Content (contenu apporté par les utilisateurs), il faut toujours redoubler de vigilance sur les aspects sécurité de nos applications.
Je salue aussi la rapidité et la réactivité des équipes Google pour traiter le problème: ils ont pris la mesure de l'importance de la sécurité des utilisateurs comme nous l'avons fait chez Yahoo.