Les attaquants pourraient lire les emails, voir les contacts et d'autres données privées dans les comptes utilisateurs de Yahoo s'ils visitent une page malveillante en abusant d'une fonctionnalité présente sur le site Developer Network de Yahoo. Le chasseur de bug roumain Sergiu Dragos Bogdan a présenté une version limitée de l'attaque dimanche dernier lors de la conférence sur la sécurité DefCamp qui s'est tenue à Bucarest (du 30 novembre au 2 décembre), en Roumanie.

Dans sa présentation, le chercheur a montré comment la console Web YQL (Yahoo Query Language), disponible sur le site developer.yahoo.com, peut être détournée par des attaquants pour exécuter des commandes YQL au nom d'utilisateurs Yahoo authentifiés visitant des sites malveillants. Créé par Yahoo, YQL est un langage de programmation similaire au langage SQL (Structured Query Language). Il peut être utilisé pour interroger, filtrer et combiner les données stockées dans les bases de données.

Accès à la console web

Le site développeur Yahoo offre un accès à une console web que les développeurs peuvent utiliser pour apprendre et tester le langage en exécutant des requêtes YQL dans les propres bases de données de Yahoo. Les utilisateurs non authentifiés peuvent uniquement exécuter des requêtes sur des tables YQL contenant des informations Yahoo publiques, comme Yahoo Answers ou la Météo Yahoo et d'autres services. Cependant, quand ils sont authentifiés, ils ont également accès aux tables contenant leurs propres données de compte Yahoo, y compris les courriels, les contacts et les informations de profil privé.

Quand une requête est entrée dans le champ « YQL statement » de la console et que le bouton « TEST » est actionné, un code d'autorisation spécifique (« crumb ») pour la session utilisateur est soumis en même temps que la requête. Celui-ci est généré lorsque l'utilisateur visite la page de la console YQL et il est inséré automatiquement dans les demandes de formulaire. Lors de sa présentation, Sergiu Dragos Bogdan a présenté une page d'attaque proof-of-concept (PoC) chargeant une URL developer.yahoo.com dans une balise iframe utilisée pour afficher le contenu d'une page web. Lorsque la page d'attaque a été visitée par l'utilisateur Yahoo authentifié - le chercheur a utilisé un compte test - l'iframe a retourné le code crumb du visiteur.

Un faux test Captcha

Cependant, les mécanismes de sécurité intégrés aux navigateurs ne permettent pas au code qui s'exécute dans un nom de domaine de lire le contenu d'une page hébergée sur un autre domaine et chargée à l'intérieur d'un iframe. Cela signifie que si le visiteur peut voir lui-même le code crumb sur la page d'attaque, grâce à l'iframe chargé dans son navigateur, la page d'attaque elle-même ne peut pas lire le code ou l'utiliser automatiquement pour faire des requêtes YQL en détournant la session Yahoo de la victime. Il faut que l'attaquant piège l'utilisateur en l'incitant à lui donner le code secret qui s'affiche sur la page. Étant donné que le crumb est une chaîne de nombres et de lettres aléatoires - par exemple « y5XAjn1fKIQ » -, le chasseur de bugs roumain a construit un faux test Captcha sur la page d'attaque et a affiché le crumb de l'iframe comme si c'était le Captcha lui-même. En résolvant le faux Captcha, l'utilisateur autorise en réalité qu'une requête YQL soit lancée en son nom.

L'utilisation de faux Captcha n'est pas une nouvelle. Elle a été documentée comme technique pour contourner les restrictions interdomaines. Il y a plusieurs exemples d'attaques réussies menées avec cette méthode pour voler des jetons de sécurité. Symantec a signalé l'an dernier que des spammeurs avaient utilisé une technique très semblable pour voler des codes anti-CSRF (falsification de requêtes cross-site) à des utilisateurs de Facebook, ce qui leur avait permis de poster des liens spam en leur nom. Dans son attaque PoC, Sergiu Dragos Bogdan a utilisé une commande YQL pour modifier le statut du profil de l'utilisateur Yahoo dans la base de données de Yahoo. Mais la même méthode peut être utilisée pour exécuter une requête YQL pour rediriger un certain nombre de courriels à partir du compte mail de l'utilisateur Yahoo ou d'autres informations privées.

L'attaque combine plusieurs techniques

Afin de pouvoir réellement lire les courriels, l'attaquant doit aussi utiliser une autre technique qui force les données à retourner vers le serveur. Sergiu Dragos Bogdan a déclaré qu'il savait comment s'y prendre, mais, pour des raisons éthiques, il n'a pas voulu révéler sa méthode. Cependant, il a accepté de montrer la technique en privée en présence de l'un des organisateurs de la conférence, en utilisant un compte mail test.