Escalade horizontale des privilèges
Être connecté n'est pas la même chose qu'être autorisé.
Qu'est-ce que Escalade horizontale des privilèges?
Une référence d’objet direct non sécurisée réside dans l’espace entre deux contrôles qui semblent n’en faire qu’un. Le middleware de session prouve qui appelle. Rien ne demande si cet appelant peut lire cet enregistrement. Vous ouvrirez votre propre relevé sur une application d'argent, modifierez un chiffre de l'identifiant et lirez le solde et les transactions d'un étranger avec votre propre session valide. Ensuite, vous ajoutez la comparaison de propriété qui renvoie 403 lorsque le propriétaire de l'enregistrement n'est pas l'utilisateur de la session, et vous voyez pourquoi les UUID aléatoires et les limites de débit sont une profondeur plutôt qu'un correctif.
Ce que vous apprendrez dans Escalade horizontale des privilèges
- Distinguer l'authentification (qui appelle) de l'autorisation (si cet appelant peut atteindre cette ressource) et identifier le contrôle que l'IDOR contourne
- Reconnaître la signature IDOR : une session valide, de nombreux identifiants de ressources différents, des réponses réussies de plusieurs propriétaires
- Appliquer la comparaison de propriété comme défense principale : comparez le propriétaire de la ressource à l'utilisateur de la session et refusez avec 403 lorsqu'ils ne correspondent pas
- Expliquez pourquoi les identifiants UUID aléatoires, la limitation de débit et les mots de passe plus forts échouent chacun en tant que défense principale contre IDOR, le bogue manque d'autorisation et non d'identifiants devinables.
- Décidez de la propriété à partir de la session côté serveur plutôt qu'à partir de toute valeur contrôlée par l'appelant dans l'URL, le corps ou les en-têtes.
Escalade horizontale des privilèges — Étapes de la formation
-
Une vision client normale
Sablefin est une application financière à laquelle tout le monde peut s'inscrire. Bob l'a fait, avec une identité jetable, et maintenant il n'est plus qu'un client qui regarde son propre compte comme tout le monde. Il ouvre son relevé mensuel. Ici, rien ne lui est interdit. Il s'agit de son compte, de ses données, de son login.
-
Regardez la demande
Avant que Bob ne change quoi que ce soit, il souhaite voir la demande que sa propre application fait pour charger cette page. Il ouvre les outils réseau du navigateur et recharge la page, de sorte que l'appel envoyé par l'application pour récupérer sa déclaration soit capturé.
-
Le point final et l'identifiant
Les outils du réseau ont capturé l'appel. Il s'agit d'un simple GET vers l'API des instructions, et l'adresse complète de l'instruction de Bob est un seul entier à la fin du chemin.
-
Le jeton qui prouve qui il est
La même requête capturée contient le jeton de session de Bob. Le serveur le lit pour confirmer que l'appelant est un client connecté.
-
Changer un chiffre
Bob ne touche plus jamais à l'interface de l'application. Il modifie directement la demande capturée, en supprimant l'identifiant de un et en la renvoyant avec son propre jeton toujours attaché. Si le serveur renvoie une déclaration qui n'est pas la sienne, il n'en vérifie jamais la propriété : il fait confiance à l'identifiant dans l'URL pour décider quoi renvoyer.
-
Le compte de quelqu'un d'autre
Nom différent, numéro de compte différent, solde différent et jeton de Bob toujours sur la demande. Le serveur n'avait aucune raison de servir cela, et il l'a quand même servi. Un identifiant adjacent suffit pour confirmer le bug. Tout ce qui dépasse ce point est un script de dix lignes parcourant l'espace d'identification pendant la nuit pendant que Bob dort.
-
Contrôle des connaissances
Vous venez de voir un client connecté lire le relevé d'un autre client en modifiant un numéro. Verrouillez pourquoi.
-
L'alerte débarque
Vous êtes propriétaire du service de comptes clients de Sablefin. Du jour au lendemain, la détection d’anomalies a signalé une session extrayant déclaration après déclaration sur des comptes qui n’étaient pas les siens. Les opérations de sécurité vous ont envoyé les détails par e-mail.
-
Ouvrir le gestionnaire
Ouvrez le gestionnaire d'instructions et regardez comment il décide quoi retourner.
-
Repérez le défaut
Le gestionnaire récupère l'instruction par l'identifiant dans l'URL et la renvoie. Entre ces deux lignes, le chèque qui devrait être là ne l’est pas.
Couverture des référentiels de sécurité
OWASP Top 10
- A01:2025 Broken Access Control
- A01:2021 Broken Access Control
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