Vulnérabilités OAuth | Comment mettre en œuvre une autorisation sûre dans votre application Web

Anonim
Vulnérabilités OAuth | Comment mettre en œuvre une autorisation sûre dans votre application Web 2740_1

Cet article traitera des vulnérabilités de OAuth bien connues. Les lecteurs apprenont également à mettre en œuvre une autorisation sûre et sécurisée dans l'application Web.

OAuth est un protocole fiable, mais son degré de sécurité dépend en grande partie de la prise de conscience des développeurs Web lors de la mise en œuvre de l'autorisation. Cela rend ce sujet extrêmement important pour les professionnels de la sécurité de l'information. Ils doivent fournir un niveau élevé de protection des comptes de leurs utilisateurs. Il est temps de se familiariser avec des praticiens efficaces qui contribueront à réduire le danger de la vente médiocre OAuth.

introduction

Le protocole OAuth 2.0 est actuellement largement utilisé dans diverses applications. L'utilise, une interface utilisateur pratique devient disponible, une authentification plus facile et une autorisation par rapport aux méthodes traditionnelles d'entrée sur le nom d'utilisateur et le mot de passe. Avec une mise en œuvre correcte et réfléchie, le protocole OAuth sera plus sûr que l'autorisation traditionnelle, car les utilisateurs n'ont pas besoin de partager leurs données comptables avec une application tierce pour accéder à une ressource spécifique. Les utilisateurs préfèrent souvent se connecter à l'aide de leurs comptes Google, Facebook ou LinkedIn au lieu de créer un nouveau compte chaque fois que vous devez vous inscrire sur un site Web. Ainsi, le protocole OAuth simplifie grandement nos vies.

En général, les fournisseurs de services de OAuth populaires sont très fiables. Connectez-vous avec Google ou un compte Facebook inspire un certain sens de la sécurité et c'est correct. Le protocole est soigneusement testé par des experts. Toutes les vulnérabilités disponibles sont toujours rapidement corrigées par l'équipe du développeur. Cependant, il convient de noter que le sentiment de sécurité complète peut être faux.

Les fournisseurs de services OAuth ont laissé des développeurs d'applications beaucoup de raisons de faire de la sécurité de leurs programmes. En fait, le service OAuth initialement protégé, mal implémenté dans le processus de son installation, peut devenir une cible facile pour les intrus. Une telle préoccupation entraînera le vol de données personnelles des utilisateurs.

Ensuite, vous devez envisager les vulnérabilités les plus courantes rencontrées dans des applications tierces qui mettent en œuvre le protocole OAuth pour autoriser leurs utilisateurs. Il faut se rappeler que le protocole lui-même est sûr et fiable. Ce n'est qu'après une implémentation incorrecte, elle devient vulnérable aux attaques de pirate de pirate.

OAuth Tockey Volon à l'aide de l'en-tête de référateur

Lorsque l'application demande une autorisation pour le compte de l'utilisateur sur le serveur OAuth, une personne reçoit le code pour entrer et renvoyer au serveur pour son chèque ultérieur. Si, pendant le travail, l'utilisateur sera redirigé vers une autre page, le code sera vu dans l'en-tête de "référateur" de la demande HTTP. Ainsi, le code apparaîtra sur le site Web externe, qui menacera les données utilisateur enregistrées sur le serveur OAuth.

Remarque: l'en-tête de référateur est un en-tête de requête HTTP, il transmet l'hôte URL à partir de laquelle la demande est envoyée.

Pour adoucir les conséquences de cette vulnérabilité, le développeur doit s'assurer que son application Web ne contient aucune injections HTML. Si les injections ont été détectées, l'attaquant peut facilement régler la balise d'image sur son serveur Web et trouver un moyen de rediriger l'utilisateur dessus. Ainsi, il aura l'occasion de voler le code de l'en-tête de «référateur» de la demande HTTP.

OAuth Tockey Volon à l'aide du paramètre Redirect_uri

L'application initie le processus d'autorisation en envoyant une demande au serveur OAuth:

https://www.example.com/signin/authorize?[...]&redirect_uri=httmpps://demo.example.com/loginsuccessful.

La requête contient toujours le paramètre "Redirect_uri" utilisé par le serveur OAuth pour envoyer des jetons de retour à l'application après que l'utilisateur a donné son consentement. Si la valeur de ce paramètre n'est pas contrôlée ou non cochée, l'attaquant peut facilement le modifier et rediriger la demande sur son site Web, où elle utilise un programme spécial pour traiter le jeton et avoir accès à une ressource limitée.

https://www.example.com/signin/authorize?[...]&redirect_uri=httmpps://localhost.evil.com.

Parfois, des URL similaires sont bloquées. L'attaquant peut rediriger les données reçues sur l'URL ouverte, comme ceci:

https://www.example.com/oauth20_authorize.srf?[...[&redirect_uri=httmpps://accounts.google.com/backtoouthsubtarget?next=httpset://evil.com.

Ou ca:

https://www.example.com/oauth2/authorize? [...]% irect_uri = https% 3a% 2f% 2fapps.facebook.com% 2fattacker% 2f.

Lors de la mise en œuvre de OAuth, vous ne pouvez jamais inclure des domaines entiers dans la liste blanche. Seules quelques URL doivent être ajoutées à "Redirect_uri" non redirigé une demande d'ouverture de la redirection.

Falsification des demandes de croix

La falsification d'une demande d'intervalle d'intervalle peut survenir lorsqu'un attaquant réussit à faire de la victime de cliquer sur son lien et de générer ainsi une demande qu'il n'allait pas générer. La falsification des demandes de croix est généralement adoucie avec le jeton CSRF, associé à la session utilisateur. Il aide la demande à vérifier la personne d'une personne qui a envoyé la demande. Le paramètre "État" dans le protocole OAuth sert de jeton CSRF.

Il convient de visualiser la manière dont l'attaque CSRF est effectuée sur OAuth et que le paramètre "État" peut être utilisé pour atténuer les effets de la vulnérabilité.

Hacker ouvre une application Web et lance le processus d'autorisation pour accéder au prestataire de services à l'aide de OAuth. L'application demande à un fournisseur de services d'accès à celui qui doit être fourni. Hacker sera redirigé vers le site Web du fournisseur de services, où vous devez généralement entrer votre nom d'utilisateur et votre mot de passe pour autoriser l'accès. Au lieu de cela, le pirate informatique attrape et empêche cette demande et enregistre son URL. Hacker fait en quelque sorte cause la victime d'ouvrir cette URL. Si la victime est entrée dans le système du fournisseur de services à l'aide de son compte, ses informations d'identification seront utilisées pour émettre un code d'autorisation. Le code d'autorisation échange un accès au jeton d'accès. Maintenant, le compte Hacker dans l'application est autorisé. Cela peut accéder au compte de la victime.

Alors, comment puis-je empêcher cette situation à l'aide du paramètre "State"?

L'application doit créer une valeur en quelque sorte basée sur le compte source (par exemple, utiliser la touche Hash de session utilisateur). Ce n'est pas si important ce que c'est, l'essentiel est que la valeur est unique et générée à l'aide d'informations privées sur l'utilisateur d'origine. Il est attribué au paramètre "State".

Cette valeur est transmise au fournisseur de services lors de la redirection. Maintenant, le pirate informatique invite la victime à ouvrir l'URL, qu'il a conservé.

Le code d'autorisation est émis et renvoyé au client en session avec le paramètre "State".

Le client génère une valeur de paramètre basée sur une information de session et la compare à la valeur "State", qui a été renvoyée de la demande d'autorisation au prestataire de services. Cette valeur ne correspond pas au paramètre "État" dans la requête, car elle n'a été générée que sur la base d'informations sur la session en cours. En conséquence, la valeur obtenue n'est pas acceptée par le système.

D'autres vulnérabilités détectées lors de la mise en œuvre de OAuth incluent la possibilité d'effectuer des XSS (script de cross-sites) à l'aide du paramètre "Redirect_uri", le paramètre "Redirect_uri", le paramètre de clé privée OAuth (la clé peut parfois être obtenue lors de la décompilation d'une application mobile) et d'une violation de la règle de code d'autorisation (lorsque Le code d'autorisation peut être utilisé plus d'une fois pour émettre plusieurs jetons d'accès). Ces vulnérabilités sont moins courantes que celles décrites ci-dessus, mais cela ne les rend pas moins dangereux. Le développeur doit connaître toutes les pratiques nécessaires pour assurer un fonctionnement fiable de son application Web.

L'auteur de l'article traduit: Simon Saliba.

Important! Informations uniquement à des fins académiques. Veuillez vous conformer à la législation et n'appliquez pas ces informations à des fins illégales.

Matériau plus intéressant sur cisoClub.ru. Abonnez-vous à nous: Facebook | Vk | Twitter | Instagram | Télégramme | Zen | Messager | ICQ nouveau | YouTube | Impulsion.

Lire la suite