Exposition excessive des données
L'écran masque les champs. Ce n’est pas le cas de la réponse de l’API.
Qu'est-ce que Exposition excessive des données?
Un point de terminaison sérialise l'intégralité d'un enregistrement stocké et fait confiance à l'application client pour afficher uniquement les champs sécurisés. Les appelants lisent la réponse brute, pas l'interface rendue. Vous ouvrirez une carte de profil affichant un nom et une ville, capturerez l'appel derrière et rechercherez l'e-mail, le téléphone, la date de naissance et les coordonnées du domicile dans la charge utile, puis le répéterez sur un fil de découverte pour des milliers de personnes. Le correctif est une projection explicite de liste verte côté serveur. Le point de terminaison corrigé répond toujours à 200, mais avec moins de champs.
Ce que vous apprendrez dans Exposition excessive des données
- Reconnaître une exposition excessive des données : un point de terminaison renvoie plus de champs que ce dont le client a besoin, car il sérialise l'objet entier et s'appuie sur le client pour le filtrer, de sorte que la réponse brute laisse fuir les champs sensibles que l'écran n'affiche jamais.
- Comprenez que le client ne constitue pas une limite de sécurité : les appelants lisent la réponse brute, pas l'interface utilisateur rendue, de sorte que tout champ de la charge utile est exposé, quel que soit ce que l'application affiche.
- Distinguez-le de l'autorisation rompue au niveau de l'objet (atteindre l'objet d'un autre utilisateur par identifiant) et de l'autorisation rompue au niveau de la fonction (invoquer une fonction supérieure à votre rôle) ; ici, l'appelant est autorisé à lire la ressource et le défaut est l'ensemble de champs renvoyé
- Appliquez le correctif : créez des réponses à partir d'une liste d'autorisation explicite côté serveur ou d'une projection de champs publics, ne sérialisez jamais un enregistrement stocké en gros et supprimez les sérialiseurs partagés une fois pour fermer chaque route qui les utilise.
- Reconnaissez que la surexposition n'est pas un bug de contrôle d'accès : le point de terminaison fixe répond toujours avec 200, il renvoie simplement moins de champs, donc bloquer la requête interromprait à tort une fonctionnalité publique.
- Auditez chaque point de terminaison qui sérialise un modèle complet, en particulier les flux de liste et de découverte où un sérialiseur à partage excessif devient une exportation de données en masse
Exposition excessive des données — Étapes de la formation
-
Une page de coureur public
Aujourd'hui, Bob cible Trailkin, une application de course à pied sociale, pour récolter des données personnelles sur ses membres à grande échelle. Il s'est inscrit en tant que membre ordinaire avec une identité jetable. Les profils Trailkin sont publics de par leur conception : n’importe qui peut rechercher n’importe quel coureur. Bob ouvre la page d'une cible, qui affiche la carte publique du coureur et un flux d'autres coureurs à proximité.
-
Uniquement les champs sécurisés, à l'écran
La carte de profil est volontairement clairsemée. C’est ce que tout le monde est censé voir, et cela ne montre rien qu’un attaquant pourrait utiliser pour trouver ou usurper l’identité de cette personne.
-
Coureurs près de chez vous
Sous la carte, la même page montre le fil de découverte de Trailkin : d'autres membres courant à proximité. Comme le profil, chaque carte ici affiche uniquement des détails publics.
-
Regardez les demandes
La carte et le flux ont chacun été extraits des données récupérées par l'application via l'API. Bob ouvre les outils réseau du navigateur et recharge la page une fois, capturant les deux appels effectués par l'application pour la créer.
-
Deux appels, et tout ce que la carte cachait
Les outils réseau ont capturé le rechargement. Les deux appels effectués par la page figurent dans la liste des demandes et Bob ouvre la réponse au premier, l'appel de profil.
-
Ouvrir l'appel à proximité
Un profil est une victime. L'appel du flux se trouve juste là dans la liste. Bob clique dessus pour lire ce que la demande des coureurs à proximité de chez vous a renvoyé.
-
La fuite, à grande échelle
La réponse à proximité est la même fuite, multipliée sur l’ensemble de l’alimentation.
-
Contrôle des connaissances
Vous venez de regarder un compte de membre simple lire des détails privés que l'application n'affiche jamais. Verrouillez pourquoi.
-
L'alerte débarque
Vous possédez le service de profil d'athlète de Trailkin. Du jour au lendemain, la surveillance a signalé un compte de membre unique qui extrayait des enregistrements complets pour des milliers d'utilisateurs via le profil public et les points de terminaison à proximité. La sécurité vous a envoyé les détails par e-mail.
-
Ouvrez le routeur de profil
Ouvrez le routeur de l'athlète et voyez comment il transforme un enregistrement stocké en réponse.
Couverture des référentiels de sécurité
OWASP API Top 10
- API3:2019 Excessive Data Exposure
CWE
- CWE-213 Exposure of Sensitive Information Due to Incompatible Policies
- CWE-200 Exposure of Sensitive Information to an Unauthorized Actor
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