Archives par mot-clé : RGPD

Pourquoi les auto-incréments sont dangereux ?

Serveurs
Source https://www.pxfuel.com/en/free-photo-ojibu

Lors du développement des sites web ou des applications web, nous utilisons une fonctionnalité courante dans les bases de données : l’auto-incrément.

L’auto-incrément est une colonne spéciale dans la base de données qui est alimentée par le moteur de base de données. Il est unique pour la table dans laquelle les données sont ajoutées. Il sert généralement de clé primaire (principale) pour charger des données précises.

La confidentialité

Le premier problème est la confidentialités. Ces clés primaires auto incrément sont utilisé par la suite dans les URL.

Prenons un exemple, votre entreprise propose un service dans lequel l’utilisateur peux enregistrer des données. Ces données sont stocké dans une base de données avec un auto incrément pour les retrouver plus tard. Cet auto incrément est utilisé dans l’URL pour afficher les données.

Je suis l’un de vos concurents et j’aimerai avoir une idée du volume d’utilisateur. Bien sûr vous ne donnez aucune indication sur les volumes que vous traitez. Et bien malgrè tout je peux en avoir une idée.

Pour cela, je m’inscrit comme un utilisateur, j’ajoute des données, puis j’attends un mois ou plus. Je reviens sur votre service et j’enregistre de nouvelles données.

Je récupère maintenant l’auto incrément présent dans les URL pour connaitre le volume de données enregistré sur la période sur votre service.

La sécurité

Comme je l’ai déjà dit dans la vidéo « Comment mon site a été piraté 2 fois (injection SQL)« , une URL avec un auto-incrément est dangereuse.

Continuons avec notre exemple données pour la confidentialité. Si je vais sur la page d’affichage des données. Et que je modifie l’auto-incrément présent dans l’URL pour mettre le précédent. Que ce passe-t-il ?

Si le site est sécurisé, j’ai droit à un message d’erreur m’indiquant un refus d’accès.

Et malheureusement dans de trop nombreux cas, je vois les données ! C’est une fuite de données qu’il faut déclarer à la CNIL et dont-il faut assumer les conséquences !

L’article de la CNIL sur le sujet « Sécurité des sites web : les 5 problèmes les plus souvent constatés » (point 3)

Mais ce n’est pas tout, il y a encore un autre risque. Dans le cas d’une faille de sécurité de type « Injection SQL » la présence d’auto incrément simplifie la tache des malveillants.

En effet, la colonne se nomme dans 90% (pourcentage arbitraire pour dire presque tout le temps) des cas id. Et pour la table des utilisateurs nommé « users » dans 80% des cas (toujours arbitraire mais c’est moins souvent) il est très simple d’exfiltrer la liste des utilisateurs.

Par quoi les remplacer ? Par un identifiant généré aléatoirement grâce à des fonctions de hachages fiables. Utilisez les mêmes que pour la cryptographie.

Je vous conseil les GUID ou UUID qui sont disponible dans tous les langages de programmation. C’est un texte de 36 caractères qu’il est possible d’utiliser en tant que clé primaire.

Malheureusement il n’est pas toujours possible de les utiliser en tant que clé primaire. Certaine logiciel de base de données ont des limites qui empêche de réaliser des liaisons entre table si les tables utilise des clés primaire trop longue.

Pour palier à ce défaut, vous pouvez modifier la configuration du logiciel de base de données. Mais dans la pire des situations qu’est l’hébergement mutualisé, vous n’aurez pas le choix d’utiliser un auto incrément pour réaliser la liaison.

Conclusion

La confidentialité (secret des affaires) est en jeu lors de l’utilisation d’un auto incrément, mais le plus grave reste la sécurité.

La sécurité permet de garantir l’intégrité des données, leur sécurités et leur confidentialité et ces 3 points sont abordés dans le RGPD. Tout manquement est donc punissable par la CNIL.

Vidéo

Vidéo Youtube « Pourquoi les auto-incréments sont dangereux ? »