Amazon Cognito : protéger vos applications des risques de configuration
Avis d'expert
29 avril 2025
Amazon Cognito est un service d’Amazon Web Services (AWS) qui permet de gérer l’authentification et l’autorisation des utilisateurs pour les applications web et mobiles. Il offre une solution complète pour la gestion des identités, permettant aux développeurs d’intégrer facilement des fonctionnalités d’authentification, de contrôle d’accès et de gestion des utilisateurs. Avec Cognito, les utilisateurs peuvent se connecter via des identités sociales (comme Google ou Facebook) ou des identités d’entreprise, tout en bénéficiant d’une interface utilisateur personnalisable.
Cependant, comme tout service cloud, Amazon Cognito peut être sujet à des défauts de configuration qui peuvent compromettre la sécurité des applications. Cet article présente les principaux défauts de configuration associés à Amazon Cognito et leurs impacts potentiels :
Exposition des identifiants d'application
L’exposition des identifiants d’application, tels que l’App Client ID, l’User Pool ID et l’Identity Pool ID, dans le code source coté client constitue une erreur de configuration. Si ces identifiants sont rendus publics, des attaquants pourraient les exploiter pour initier des appels API et tenter d’accéder à des fonctionnalités non autorisées. Par exemple, un attaquant pourrait s’en servir pour créer des sessions malveillantes ou accéder aux données d’autres utilisateurs.

L’application expose les identifiants de l’application.

Un attaquant peut utiliser le paramètre « Identity Pool ID » pour demander des identifiants AWS.

Exemple de réponse reçue par l’API contenant les clés d’authentification AWS.
Il est donc crucial de protéger ces informations sensibles en évitant de les intégrer directement coté client, et en les gérant de manière sécurisée via des configurations côté serveur.
Activation de la fonctionnalité de création de compte
Permettre l’inscription des utilisateurs sans validation appropriée est l’un des défauts de configuration les plus fréquentes dans Amazon Cognito. Si un pool d’utilisateurs est configuré pour autoriser la création de comptes pour tous, cela permettra à des attaquants de créer des comptes frauduleux. En l’absence de mécanismes de validation comme la vérification par e-mail ou par numéro de téléphone, des utilisateurs malveillants peuvent facilement s’inscrire sur l’application dont Cogito gère l’accès. Cela peut entraîner des accès non autorisés à des ressources sensibles et des abus de service.

La configuration actuelle permet à tous les utilisateurs de créer des comptes.

Tout utilisateur peut interagir avec l’API AWS pour créer un nouvel utilisateur en utilisant cette commande.
Il est fortement recommandé de ne pas autoriser la création de comptes afin d’éviter cette vulnérabilité. Cependant, si cela s’avère indispensable, il est crucial de mettre en place des mesures de sécurité robustes. En activant les mécanismes de validation, tels que la vérification par e-mail et par numéro de téléphone, pour garantir l’authenticité des utilisateurs. Limitez également les tentatives d’inscription en utilisant des attributs personnalisés qui seront communiqués uniquement aux individus autorisés à s’inscrire.
Permissions excessives sur les pools d'identités
Accorder des permissions trop larges aux utilisateurs authentifiés et non authentifiés est une autre erreur fréquente. Les développeurs peuvent, pour des raisons de facilité, configurer des rôles IAM qui permettent à tous les utilisateurs, qu’ils soient authentifiés ou non, d’accéder à des ressources AWS critiques, telles que des buckets S3 ou des fonctions Lambda.

Exemple de droits excessivement permissifs accordant un accès complet au bucket S3
Ce défaut de configuration peut entraîner des fuites de données, où des informations sensibles sont exposées à des utilisateurs non autorisés. De plus, cela peut permettre à des attaquants d’exploiter ces permissions pour effectuer des actions malveillantes, comme la suppression de données ou la modification de configurations.
Il est fortement conseillé d’appliquer le principe du moindre privilège en accordant à chaque utilisateur uniquement les permissions nécessaires à l’exécution de ses tâches. Une bonne pratique pour la gestion des permissions consiste à utiliser les politiques gérées par AWS. Pour plus de détails, vous pouvez consulter la documentation suivante : https://docs.aws.amazon.com/cognito/latest/developerguide/security-iam-awsmanpol.html
Amazon Cognito est une solution robuste pour la gestion des identités et des accès, mais il est crucial de la configurer correctement pour réduire les risques d’intrusions et de compromissions. En comprenant les principales erreurs de configuration et leurs impacts, les développeurs peuvent mieux protéger leurs applications et les données de leurs utilisateurs. Une surveillance continue et une bonne gestion des configurations sont essentielles.
Un décryptage signé
Sofien BACHWELL