Autorisation au niveau de l'objet brisé
Modifiez un identifiant dans l'URL et lisez le dossier d'un étranger.
Qu'est-ce que Autorisation au niveau de l'objet brisé?
L'autorisation au niveau de l'objet brisée, également appelée BOLA ou IDOR, est la vulnérabilité d'API la plus courante. Le point de terminaison renvoie l'objet nommé par un identifiant dans la requête sans vérifier qu'il appartient à l'appelant. Le jeton est honnête. Vous modifierez un seul numéro dans une URL par identifiant, lirez le dossier d'un étranger, puis intégrerez des identifiants séquentiels dans une récolte groupée. Le correctif compare le propriétaire de l'enregistrement à la session authentifiée et renvoie 404 au lieu de 403, de sorte qu'un identifiant rejeté ne peut pas être confirmé.
Ce que vous apprendrez dans Autorisation au niveau de l'objet brisé
- Reconnaître l'autorisation au niveau de l'objet rompue : une session valide lisant l'objet d'un autre utilisateur car le point de terminaison vérifie qui appelle mais pas si l'enregistrement renvoyé lui appartient
- Distinguez-le d'une autorisation au niveau d'une fonction rompue (un rôle atteignant une fonction qu'il ne peut pas appeler) et d'une élévation de privilèges forgée par un jeton (falsification de vos propres informations d'identification) ; ici, le jeton est honnête, le point final est autorisé et la vérification de l'objet est manquante
- Découvrez comment les identifiants d'objet séquentiels ou devinables transforment une seule lecture non autorisée en une énumération complète, et pourquoi les identifiants non devinables réduisent ce risque mais ne constituent pas un contrôle d'accès.
- Appliquez le correctif : après avoir chargé un objet, comparez son propriétaire à l'identité de la session authentifiée plutôt qu'à tout ce que l'appelant envoie, et refusez lorsqu'ils ne correspondent pas.
- Préférez un objet non trouvé à un objet interdit sur un objet rejeté afin qu'un identifiant refusé soit impossible à distinguer d'un identifiant manquant, en fermant l'oracle d'existence et en auditant chaque lecture d'identifiant pour le même écart.
Autorisation au niveau de l'objet brisé — Étapes de la formation
-
Un cavalier ordinaire
Larkway est une application de covoiturage qui permet à n'importe quel passager d'activer une API de voyages personnelle pour exporter ses propres reçus de course pour les notes de frais. Bob s'est inscrit en tant que pilote normal, avec une identité jetable, et l'a allumé. Son compte n'a rien de spécial : un simple siège de pilote avec un jeton qui lit ses propres voyages. Il ouvre la console développeur pour voir ce que l'API lui donne.
-
Les identifiants de voyage ne sont que des chiffres
Les propres voyages de Bob sont répertoriés avec leurs identifiants, et la référence API montre comment récupérer n'importe quel reçu de voyage par son identifiant. Deux choses ressortent de ces identifiants.
-
Récupérer son propre voyage
Tout d'abord, Bob appelle le point de terminaison de la manière dont il est censé être utilisé : il demande l'un de ses propres voyages par son identifiant, portant son propre jeton de passager dans un en-tête d'autorisation, exactement comme le fait l'application.
-
Son voyage, comme prévu
Le serveur renvoie exactement ce qu'il devrait : le propre voyage de Bob, car l'identifiant qu'il a demandé est le sien.
-
Changer un numéro
Bob envoie la même demande, portant le même jeton, et modifie uniquement l'identifiant, un en dessous du sien. Si le serveur vérifie qu'un voyage appartient à l'appelant, cela ne devrait rien renvoyer. S'il vérifie seulement que sa session est valide, il répondra.
-
Le trajet de quelqu'un d'autre
Il a répondu. Le propre jeton de cavalier de Bob vient d'effectuer un voyage qui n'a rien à voir avec lui.
-
Parcourez la séquence
Un étranger est une curiosité. Bob continue de décrémenter l'identifiant et chaque valeur renvoie un véritable reçu. Il en cherche un autre pour confirmer le schéma.
-
Chaque cycliste, à grande échelle
Les identifiants s'exécutent dans l'ordre et chacun répond. Cela transforme une seule fuite en une récolte.
-
Contrôle des connaissances
Vous venez de voir un passager valide lire les trajets d'étrangers en modifiant l'identifiant dans l'URL. Verrouillez pourquoi.
-
L'alerte débarque
Vous possédez l'API Trips destinée aux passagers de Larkway. Du jour au lendemain, la surveillance a signalé un jeton de passager effectuant des milliers de trajets qui n'étaient pas le sien. Les opérations de sécurité vous ont envoyé les détails par e-mail.
Couverture des référentiels de sécurité
OWASP API Top 10
- API1:2023 Broken Object Level Authorization
CWE
- CWE-639 Authorization Bypass Through User-Controlled Key
- CWE-862 Missing Authorization
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