Mauvaise configuration de la sécurité
Un paramètre CORS et n'importe quel site peut lire le compte.
Qu'est-ce que Mauvaise configuration de la sécurité?
Le code est correct et l'API n'est toujours pas sûre, car un paramètre lié à la sécurité est laissé dans un état dangereux. Celui-ci est CORS : l'API reflète l'origine qu'un appelant envoie dans Access-Control-Allow-Origin et définit Access-Control-Allow-Credentials sur true, indiquant aux navigateurs que n'importe quel site peut lire ses réponses avec le cookie de session du visiteur. Vous utiliserez une page de récompense qui envoie la réponse de l'API du compte à votre serveur, puis limiterez les origines autorisées à une liste explicite côté serveur. Le relire montre que CORS est appliqué par le navigateur, pas par le serveur.
Ce que vous apprendrez dans Mauvaise configuration de la sécurité
- Reconnaître une mauvaise configuration de sécurité dans une API : un paramètre lié à la sécurité laissé dangereux, tel qu'une politique CORS trop permissive, des erreurs détaillées, des indicateurs de débogage ou une configuration par défaut
- Comprendre pourquoi le fait de refléter l'origine de la demande dans Access-Control-Allow-Origin et d'autoriser les informations d'identification permet à tout site visité par un utilisateur connecté de lire son compte avec son cookie de session attaché.
- Découvrez comment un attaquant prouve la mauvaise configuration avec une seule requête, puis militarise une page d'apparence ordinaire afin qu'une victime n'ait qu'à ouvrir un lien pour que son compte fuie d'origine croisée.
- Distinguez-le d'une autorisation au niveau de l'objet brisée (une vérification de propriété par enregistrement manquante) et d'une exposition excessive des données (champs renvoyés en excès) ; ici le gestionnaire va bien et le défaut est la configuration
- Appliquez le correctif : limitez les origines autorisées à une liste verte explicite côté serveur, n'associez jamais une origine réfléchie ou générique avec des informations d'identification et comprenez que c'est un navigateur, et non le serveur, qui applique CORS.
Mauvaise configuration de la sécurité — Étapes de la formation
-
Une API conviviale pour le navigateur
Corvexa est une application de finances personnelles : les utilisateurs associent leur banque et suivent leurs dépenses, et l'application Web Corvexa lit leur compte à partir de l'API de Corvexa directement dans le navigateur. Aujourd'hui, Bob cible Corvexa. Il veut des données de compte client qu'il peut hameçonner et revendre. Il possède son propre compte Corvexa jetable et il commence par consulter la documentation publique du développeur pour voir comment l'API est exposée au navigateur.
-
Tout site est autorisé
Une carte dans la documentation décrit comment l'API traite les requêtes provenant d'autres sites Web. Bob le lit attentivement.
-
Demandez en tant que site de l'attaquant
Bob rejoue la requête que fera sa page malveillante. Il pointe un client API vers le point de terminaison du compte et, exactement comme le ferait un navigateur, définit l'en-tête Origin sur son propre site. Il est connecté à son propre compte Corvexa jetable, la demande comporte donc une véritable session. Ce qui l'intéresse, ce n'est pas le corps, c'est ce que l'API dit au navigateur qu'il peut faire avec la réponse.
-
L'API dit oui
Regardez les en-têtes de réponse que l'API a renvoyés avec le compte.
-
La page leurre
Bob crée une page d'apparence inoffensive à héberger sur son propre site : une bannière de récompense Corvexa. Il s'affiche dans le navigateur de gauche ; sa source est ouverte dans l'éditeur de droite. À lui seul, il ne fait que montrer une offre $50.
-
Armer la page
Maintenant, Bob ajoute la charge utile. La bannière sera identique à celle d'un visiteur, mais la page appellera discrètement l'API du compte Corvexa depuis son navigateur et enverra tout ce qui reviendra à son propre serveur. Parce que l'API autorise son origine avec ses identifiants, le cookie du visiteur fait le reste.
-
Comment fonctionne le vol
La page affiche toujours uniquement la récompense versée à un visiteur. Découvrez ce que fait le script ajouté au moment où un client Corvexa connecté l'ouvre.
-
Envoyez l'appât
Le piège est prêt. Bob n'a besoin que d'un client Corvexa connecté pour l'ouvrir, il envoie donc le lien de récompense par e-mail à un client, déguisé en une véritable promotion Corvexa de son domaine similaire.
-
Une récompense dans la boîte de réception
Vous utilisez Corvexa vous-même et vous êtes actuellement connecté à votre compte dans votre navigateur. Un e-mail arrive offrant une récompense $50 Corvexa. L’offre semble plausible et l’image de marque semble correcte.
-
Ouvrir le lien
Vous cliquez pour réclamer la récompense, comme le feraient la plupart des gens. La page s'ouvre dans votre navigateur, contenant toujours votre session Corvexa en direct.
Couverture des référentiels de sécurité
OWASP API Top 10
- API8:2023 Security Misconfiguration
CWE
- CWE-942 Permissive Cross-domain Policy with Untrusted Domains
- CWE-1188 Initialization of a Resource with an Insecure Default
CIS Controls
- CIS 16 Application Software Security
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security