Une vulnérabilité dans OAuth… et ton Facebook hacké

Insecurity

Le SSO, ou Single Sign On est une méthode d’authentification à des services web. OAuth, c’est le SSO de Facebook qui vous permet par exemple d’aller commenter certains sites de presse ou de jouer à de petits jeux. Aujourd’hui, Nir Goldshlager nous en raconte un bien bonne. Une faille béante concernant le lien du bouton d’autorisation d’accès aux applications utilisant OAuth permettrait de prendre le contrôle de n’importe quel compte en lui attribuant une URL forgée maison dans laquelle on injecte quelques paramètres observés sur ceux d’applications Facebook tierces, comprenant toutes les permissions qui vont bien…. et oui c’est une faille particulière débile.

Très concrètement, il suffit de modifier quelques paramètres dans le lien du bouton que l’on affichera sur un site (oui par exemple via un XSS) et attendra gentiment que les victimes cliquent pour autoriser l’application à s’authentifier grâce à leur compte Facebook. Mieux encore, la vulnérabilité bypass même la date d’expiration du token :

I found a way in to get a full permissions (read inbox, outbox, manage pages, manage ads, read private photos, videos,etc..) over the victim account even without any installed apps on the victim’s account. Another advantage in the flaw I found is that there is no « Expired date » of the Token like there would be on any other application usage, In my attack the token never expires unless the victim change his password :)

Les équipes de développement de Facebook ont corrigé la vulnérabilité, mais allez savoir combien d’officines l’ont exploité allègrement pendant plusieurs mois. Twitter et Google pour ne citer qu’eux utilisent également ce genre de procédé d’authentification.

Voici le proof en concept en vidéo :


Twitter Facebook Google Plus email

4 thoughts on “Une vulnérabilité dans OAuth… et ton Facebook hacké”

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *