Lorsque le contrôle des accès d’une application est défaillant, un utilisateur malicieux peut en profiter pour accéder à des données personnelles et confidentielles.
La CNIL a sanctionné à plusieurs reprises des entreprises après la découverte de vulnérabilité dans l’URL de leur site Web :
- Darty pour avoir exposé les données personnelles de millions de clients au travers d’un paramètre « id » de type entier, pouvant être modifié dans l’adresse URL, tel que : http://darty.epticahosting.com/selfdarty/requests.do?id=XXXX ;
- Sergic pour avoir permis l’accès aux documents envoyés par les clients en modifiant un paramètre de l’adresse URL ;
- Optical Center pour avoir permis le téléchargement simple des factures de clients en modifiant un paramètre de l’adresse URL ;
- Active Assurances pour avoir permis l’accès aux comptes utilisateurs de ses clients par la modification d’un paramètre dans l’adresse URL.
Penchons-nous sur une des vulnérabilités qui résulte de ce manque de sécurité, appelé communément « référence d’objet direct non sécurisée ».
Référence d’objet non sécurisée : quésaco ?
Pour comprendre cette vulnérabilité, il est nécessaire de rappeler deux concepts de sécurité informatique importants :
- L’authentification, qui vise à valider la légitimité d’une entité lors d’une demande accès ;
- L’autorisation, qui définit les droits d’accès attribués à une entité.
Lorsqu’à minima, les autorisations ne sont pas correctement implémentées ou manquent de restrictions, une application peut être sujette à des accès arbitraires non autorisés. En effet, l’exemple le plus courant est l’accès d’un objet (informations, fichiers, etc.) appartenant à un utilisateur A par un utilisateur B.
Cette vulnérabilité est alors désignée d’une référence directe à un objet qui n’est pas sécurisé (de la famille des contrôles d’accès défaillant ou en anglais Broken Access Control).
Dans de nombreux cas, l’utilisation d’un simple navigateur Web suffit à prouver l’existence de ce type de faille et à l’exploiter. En effet, la modification d’une simple valeur peut permettre d’accéder aux données d’un autre utilisateur. Il devient alors trivial pour un attaquant d’automatiser un processus de collecte des informations de tous les utilisateurs, en développant par exemple un outil de requête en boucle où la variable vulnérable est modifiée pour chaque répétition.
A titre d’exemple, supposons que l’adresse URL permettant de charger la carte d’embarquement respecte la forme suivante : https://flight.fr/get_pass?id=0001
Après avoir confirmé le type de la variable « id » donnée en paramètre (ici, un simple entier), il sera possible de tenter le chargement d’une carte d’embarquement arbitraire en modifiant cette valeur directement dans l’adresse URL, avec par exemple la valeur « 0002 », puis « 0003 », etc.
Les risques en cas d’attaque
L’exploitation de ce type de faille de sécurité peut permettre à un attaquant d’accéder ou de modifier des données arbitraires. La sécurité des données est alors directement affectée et les conséquences peuvent être très sérieuses :
- Impact technique : en raison des accès et potentielle altération de données, une perte de confidentialité, d’intégrité, de disponibilité pourrait affecter le système d’information ;
- Impact métier : en raison d’un manquement important vis-à-vis des données pouvant être personnelles, des pertes financières seraient prévisibles en raison de la non-conformité et de la violation de la vie privée.
- Impact sur la conformité RGPD : le défaut de sécurité est sanctionné par la CNIL et risque d’aboutir à une violation de données personnelles.
Les précédents exemples démontrent que ce type de vulnérabilité peut concerner tout type d’organisation quelle que soit sa taille dès lors qu’elle propose un service web.
Selon les experts en sécurité offensive, qui ont l’habitude d’identifier ce type de vulnérabilité le cadre de nos services (tests d’intrusion, audit technique), le rapport entre la facilité de découverte, d’exploitation et le potentiel risque associé à ce type de vulnérabilité est très important. En effet, la simple modification d’une valeur (souvent de type entier et incrémental) peut permettre l’accès à d’autres données lorsque les autorisations ne sont pas correctement vérifiées.
Par Mickael Karatekin, manager chez TNP