- Salt Labs a découvert qu’il était possible de détourner des comptes sur Booking.com, Grammarly, Vidio, Bukalapak, des services massifs utilisés par des centaines de millions de personnes, ainsi que sur le framework mobile Expo, via des vulnérabilités dans leurs implémentations d’OAuth.
- OAuth est en soi un protocole sûr, mais sa mise en œuvre peut introduire des vulnérabilités critiques.
- Booking.com
- Dans l’implémentation Facebook OAuth, le paramètre
redirect_uri pouvait être modifié vers un autre chemin sur le même hôte.
- booking.com disposait d’un endpoint qui redirigeait vers une adresse fournie sous forme de base64.
- En combinant les deux, il était possible de manipuler le jeton OAuth pour qu’il soit envoyé vers une autre adresse.
- La version web n’était pas vulnérable, car elle vérifiait
redirect_uri au moment du traitement de la connexion, mais la version mobile permettait aussi de manipuler redirect_uri, rendant le détournement de compte possible.
- En pratique, il s’agissait d’une vulnérabilité où un utilisateur pouvait cliquer sur un lien ayant l’air parfaitement légitime, suivre normalement le flux OAuth, puis se faire voler son compte.
- Expo
- Une vulnérabilité a été découverte dans l’implémentation OAuth intégrée du framework mobile Expo.
- Dans cette implémentation,
returnUrl contient normalement un lien propre aux applications Expo comme exp://~~, mais il était possible d’y mettre une adresse web comme hTTps://~~.
https:// était censé être bloqué, mais un simple changement de casse permettait de contourner la protection.
- Dans ce cas, les informations de
returnUrl étaient stockées dans un cookie nommé RU, puis, une fois OAuth terminé, le serveur OAuth d’Expo lisait ce cookie et effectuait la redirection.
- Toutefois, avant le basculement d’Expo vers Facebook, un message d’avertissement du type
faire confiance à https://~~... s’affichait et devait être accepté par l’utilisateur.
- Pour contourner cela, ils ont utilisé une méthode ouvrant automatiquement deux liens.
- Le premier lien était ouvert puis immédiatement refermé afin de ne définir que le cookie RU.
- Le second lien fournissait directement le lien Facebook OAuth, ce qui permettait d’ignorer le message d’avertissement RU.
- Cette méthode a permis de détourner un compte sur Codecademy.com.
- La vulnérabilité a reçu l’identifiant CVE-2023-28131, et l’équipe Expo a corrigé le problème quelques heures après le signalement initial.
- Grammarly, Vidio, Bukalapak
- Les trois sites permettaient tous le détournement de compte via le même mécanisme.
- D’abord, un site web légitime était créé pour collecter des jetons de connexion Facebook.
- Ensuite, sur Vidio et Bukalapak, il suffisait de fournir un jeton émis par Facebook pour un autre site web pour que la connexion réussisse telle quelle.
- La vulnérabilité venait de l’absence de vérification de l’App ID du jeton Facebook. (attaque par réutilisation de jeton)
- Grammarly fonctionnait légèrement différemment, en utilisant un code au lieu d’un jeton, et n’était donc pas vulnérable de cette manière.
- Cependant, ils ont constaté qu’une connexion réussissait si un jeton était fourni à l’API d’envoi du code sous le nom
"access_token" au lieu de "code".
- Ainsi, sur les trois sites, il suffisait d’utiliser l’intégration Facebook d’un autre site légitime pour détourner immédiatement un compte.
- Lors de l’implémentation d’OAuth, il est nécessaire d’identifier les points susceptibles d’introduire des failles de sécurité et d’effectuer des validations minutieuses à chaque étape du traitement afin de prévenir ces vulnérabilités.
3 commentaires
Cela fait réfléchir. Il faut vraiment être très prudent.
Je ne m'attendais pas à ce qu'autant de très grands sites aient autant de vulnérabilités.
C'est clairement une fonctionnalité qui semble devoir être manipulée avec beaucoup de prudence.
Je me dis qu'il vaudrait mieux utiliser une bibliothèque d'authentification...,
mais quand on voit le cas d'Expo, j'ai aussi l'impression qu'une validation en interne reste nécessaire.