Informations
Présenté par Gaëtan ELELOUET, ingénieur logiciel à Meritis.
Introduction
Cette conférence avait pour but de montrer les 15 failles de sécurités les plus courantes en montrant comment les utiliser à notre avantage.
Démonstration
Cette conférence avait un format vraiment sympa :
- Gaëtan a reçu un mail d’une certaine Marie Antoinette, qui lui demandait de l’aide pour être top 1 sur un site de citations,
- En utilisant quelques failles classiques, tout au long de la conférence, il jouera d’astuces pour arriver à ses fins.
Voici donc, les principales failles de sécurités qui ont été utilisées, et si je n’ai pas trop merdé, bien en ordre chronologique :
- CWE-640 :
Le site demande le nom de l’animal de compagnie, ou quelque chose comme ça pour réinitialiser le mot de passe. Le produit contient un mécanisme permettant aux utilisateurs et aux utilisatrices, de récupérer ou de modifier leurs mots de passe sans connaître le mot de passe d’origine, mais le mécanisme est faible. - CWE-89 :
On laisse l’utilisateur, l’utilisatrice envoyer et exécuter des requêtes SQL dans notre base de données. - CWE-352 :
Le site ne vérifie pas la provenance des requêtes qu’il réceptionne. - CWE-639 :
La fonctionnalité d’autorisation du système n’empêche pas un utilisateur ou une utilisatrice, d’accéder aux données ou à l’enregistrement d’un autre utilisateur ou d’une autre utilisatrice, en modifiant la valeur clé identifiant les données. - CWE-602 :
Le produit est composé d’un serveur qui s’appuie sur le client pour mettre en œuvre un mécanisme destiné à protéger le serveur. - CWE-565 :
Les cookies récupérés n’ont pas leur contrôle d’intégrité vérifié. - CWE-915 :
Mass assignement : ne contrôle pas quels attributs peuvent être modifiés. Ainsi, on peut modifier des attributs sur un objet, qui ne devraient pas l’être. - CWE-79 :
Le produit ne neutralise pas ou neutralise de manière incorrecte l’entrée contrôlable par l’utilisateur ou l’utilisatrice, avant qu’elle ne soit placée dans la sortie utilisée comme une page Web qui est servie à d’autres utilisateurs et d’autres utilisatrices. - CWE-80 :
Les scripts envoyés via des tags HTML ne sont pas correctement filtrés. Et des scripts inconnus, peuvent être exécutés. - CWE-330 :
Le produit utilise des nombres ou des valeurs insuffisamment aléatoires dans un contexte de sécurité qui dépend de nombres imprévisibles. - CWE-1352 :
Les composants de vos dépendances ne sont pas à jour. - CWE-841 :
Le workflow n’est pas vérifié, et les étapes ne sont pas respectées. - CWE-419 :
Le produit utilise un canal principal pour l’administration ou les fonctionnalités restreintes, mais il ne protège pas correctement le canal. - CWE-288 :
Un produit nécessite une authentification, mais le produit a un chemin ou un canal alternatif qui ne nécessite pas d’authentification. - CWE-918 :
Le serveur Web reçoit une URL ou une demande similaire d’un composant en amont et récupère le contenu de cette URL, mais il ne garantit pas suffisamment que la demande est envoyée à la destination attendue. - CWE-778 :
Lorsqu’un événement critique pour la sécurité se produit, le produit n’enregistre pas l’événement ou omet des détails importants sur l’événement lors de sa consignation.
Conclusion
Après avoir exploité toutes ces failles, nous avons pu faire gagner Marie Antoinette, et devenir le top 1 des citations.
Gaëtan invite tout le monde à aller sur OWASP, y récupérer leur Cheat Sheet, qui est accessible pour l’ensemble des technos, afin de s’assurer la sécurité des sites que l’on réalise.
Il finit avec une chute, très délicate, sur la vie de Marie-Antoinette en terminant par le fait que la sécurité dans le développement, c’est aussi la sécurité des équipes de développement, en particulier les personnes en minorité.
Pour approfondir le sujet
- Guides de l’ANSSI pour le développement sécurisé de logiciel, ici.
- Recommandations pour la sécurisation des sites web de l’ANSSI, ici.
Devoxx 2023