Une faille de Facebook à 20 000 dollars

Facebook a donné une prime de 20 000 $ à un chercheur en sécurité informatique qui a découvert une vulnérabilité de script intersite (XSS) dans le kit de développement logiciel (SDK) de connexion Facebook, qui est utilisé par les développeurs pour ajouter un bouton «Continuer avec Facebook» sur une page comme méthode d’authentification. L’exploitation pourrait permettre aux pirates informatiques de prendre le contrôle de comptes.

Le chercheur en sécurité, Vinoth Kumar, a identifié une faille XSS basée sur un modèle d’objet de document (DOM) dans la méthode window.postMessage() du code de la plateforme. Cette méthode est censée permettre une communication d’origine croisée sécurisée entre les objets Windows.

Kumar a déclaré avoir découvert la faille quand il est allé chercher des vulnérabilités côté client – plus spécifiquement, des failles XSSI, JSONP et postMessage, selon un article récent.

Cependant, un bon nombre de ces failles se sont révélées difficiles à trouver, il a donc limité son attention aux vulnérabilités postMessage, «car celles-ci sont principalement ignorées par les chercheurs en sécurité, mais sont très faciles à déboguer et pas besoin de contourner les pare-feu», a-t-il écrit dans l’article.

facebook

Kumar a également créé une extension Chrome pour afficher les communications entre les fenêtres sur la page afin de faciliter sa recherche.

Le chercheur a d’abord commencé à explorer les plug-ins tiers sur le site de développeur pour essayer de trouver des problèmes d’iframe. Les iframes sont utilisés pour incorporer un document dans un autre document HTML. Il a découvert un problème dans le SDK de connexion Facebook.

facebook

Il a constaté que le SDK créait un iframe de proxy v6.0/plugins/login_button.php pour la communication inter-domaines, tandis que le cadre proxy affiche le bouton «Continuer avec Facebook».

“La chose intéressante était que le SDK JavaScript envoie [un] payload au cadre du proxy, qui contient l’URL de clic du bouton”, a-t-il expliqué. Ainsi, lorsque l’utilisateur clique sur le bouton «Continuer avec Facebook», l’URL du payload postMessage s’exécute dans l’iframe du proxy, ce qui conduit à l’exécution du JavaScript sur Facebook.com.

Cependant, “il n’y a pas de validation d’URL/schéma dans le JavaScript” pour vérifier que la requête d’URL provient de la source légitime, a-t-il expliqué, ouvrant ainsi la porte à des détournements malveillants.

“Donc, si nous envoyons un payoad avec [l’URL] ‘javascript:alert(document.domain)’ à https://www.facebook.com/v6.0/plugins/login_button.php iframe et que l’utilisateur clique sur le bouton ‘Continuer avec Facebook’, javascript:alert(document.domain) serait exécuté sur le domaine facebook.com », a expliqué Kumar dans son article.

Kumar a décrit deux façons d’exploiter la vulnérabilité. L’une consiste à ouvrir une fenêtre contextuelle et l’autre à ouvrir une iframe, puis à communiquer avec l’une ou l’autre. Il a fourni des exemples de code pour ces deux exploits et publié une preuve de concept sur YouTube. Le résultat de l’une ou l’autre des attaques est qu’un attaquant peut détourner et prendre le contrôle du compte de quelqu’un.

Kumar a initialement notifié Facebook de la vulnérabilité le 17 avril. La société a publié trois jours plus tard un correctif qui ajoute un domaine regex facebook.com et une vérification de schéma dans le paramètre URL du payload, a-t-il déclaré.

Le 29 avril, la société américaine a confirmé que le bug avait été corrigé et a payé à Kumar sa prime de bug le 1er mai.

Un programme bug bounty qui fonctionne pour Facebook

Le géant américain a mis en place un programme de bug-bounty depuis 2011. Selon les lignes directrices du programme, 20 000 $ est une somme d’argent importante à payer pour l’identification d’une vulnérabilité.

La prime la plus élevée que Facebook ait payée à ce jour a été de 50 000 $, pour un chercheur qui a identifié une faille dans le mécanisme d’abonnement des développeurs de Facebook qui pourrait permettre une mauvaise utilisation des notifications sur certains types d’activité des utilisateurs.

Si cet article vous a plu, jetez un œil à notre article précédent.