Les principales failles de sécurité des applications web actuelles, telles que recensées par l'OWASP: principes, parades et bonnes pratiques de développement( Télécharger le fichier original )par Guillaume HARRY Conservatoire national des arts et métiers - Ingénieur 2012 |
4.3 Violation de gestion d'authentification et de session4.3.1 PrincipeCette faille de sécurité regroupe toutes les vulnérabilités pouvant mener à une usurpation d'identité. Ces points de faiblesse dans les applications Web peuvent ouvrir à des attaquants des accès à des fonctionnalités des applications Web auxquelles ils n'ont pas le droit normalement. Cela peut donc leur permettre de voler des informations ou d'endommager le bon fonctionnement de l'application. La protection des accès à l'application repose généralement sur un système d'authentification. La plupart du temps, le système d'authentification est redéveloppé pour chaque application, ce qui implique que ces systèmes ne bénéficient pas de l'expérience acquise sur le développement d'autres applications. Pour comprendre comment les attaques peuvent être menées, il faut comprendre le mécanisme d'authentification le plus commun des applications Web. 1. L'utilisateur non authentifié demande l'accès à une page Web ; 2. Le serveur renvoie une page d'authentification ; 3. L'utilisateur rempli le formulaire en fournissant un identifiant et un mot de passe et revoie ces informations au serveur web ; 4. Le serveur web fait appel à un service pour vérifier la validité du couple identifiant/mot de passe 5. Si la validité est avérée, le serveur web fournit un identifiant de session à l'utilisateur. Comme expliqué précédemment http est un protocole déconnecté, donc entre deux requêtes http la connexion entre le navigateur et le serveur http est coupée. Donc le serveur http ne peut pas reconnaître un utilisateur qui s'est déjà authentifié et ouvert une session de travail dans l'application Web. Pour remédier à cela, la plupart des systèmes d'authentification repose sur un identifiant de session. Celui-ci est envoyé à chaque page entre le client et le serveur par le biais d'un cookie, d'un paramètre d'adresse ou d'un champ de formulaire invisible pour l'utilisateur ; 6. L'utilisateur peut utiliser l'application Web tant que la session est ouverte. Les attaques pour usurper une identité peuvent être regroupées en deux catégories : · Les attaques contre le système d'authentification qui cherchent à obtenir un droit d'accès ; · Les usurpations de session qui permettent de s'affranchir de l'étape d'authentification. 4.3.2 Exemples d'attaqueParmi les attaques contre les systèmes d'authentification, la plus répandue est l'utilisation de la force brute. Pour cela l'attaquant va bombarder la page d'authentification avec des valeurs d'identifiant et de mots de passe jusqu'à ce qu'il se fasse accepter [9]. L'attaque est facilitée si le message d'erreur de l'échec de l'authentification donne l'origine de l'erreur. Ainsi « l'utilisateur n'existe pas » permet à l'attaquant de ne pas tenter d'entrer des mots de passe pour cet utilisateur absent de la base de compte. « Mot de passe incorrect » permet à l'attaquant de se concentrer sur cet utilisateur, ce qui lui fait gagner beaucoup de temps. De même si l'application Web offre un service pour créer un compte par lui-même et qu'au moment de la saisie de l'identifiant ce système indique si le compte existe déjà ou non, l'attaquant dispose d'un moyen pour trouver des comptes attaquables. L'impact de ce type d'attaque n'est pas seulement limité à une usurpation d'identité pour l'application Web. Un internaute utilise souvent les mêmes valeurs d'identifiant et de mot de passe pour de nombreuses applications présentes sur le Web. L'attaquant peut donc tenter d'utiliser ces valeurs sur différentes applications Web. Il est possible pour l'attaquant de chercher des couples identifiant/mot de passe sans faire appel à la force brute. L'attaquant va simplement tenter d'utiliser des comptes généralement présents dans les applications Web, comme ceux d'administration. Ceci est surtout possible lorsque les applications sont basées sur des outils Open Source qui ont des comptes créés automatiquement avec des mots de passe par défaut connus du domaine public. L'attaquant n'a plus qu'à consulter le code source pour trouver une liste restreinte d'identifiants/mots de passe valides. Les pages Web qui permettent de réinitialiser les mots de passe sont une faille importante pour l'usurpation d'identité. En effet, pour s'assurer de l'identité du demandeur, la plupart d'entre elles demandent une information que seule la personne est censée connaître. Hors avec les réseaux sociaux, les internautes partagent leur vie privée. Ces informations personnelles visibles de tous peuvent être les mêmes que celles demandées dans les pages de réinitialisation de mot de passe. Dans ce cas l'attaquant peut définir un nouveau mot de passe qu'il pourra utiliser pour se connecter à l'application. Pour voler un identifiant de session, l'attaque par la force brute est également possible. Dans ce cas l'attaquant va générer des valeurs et tenter de les utiliser comme identifiant de session. S'il réussit à trouver une valeur valide, il pourra utiliser l'application Web sans s'être authentifié. Une attaque XSS peut permettre de récupérer un identifiant de session présent dans le cookie de l'internaute. |
|