Le 7 août se tenait la deuxième édition du Meetup Secure Web Paris. Cette série de meetups a pour objectif de partager les bonnes pratiques de sécurité lors du développement d’applications et de concevoir ou partager des outils permettant d’améliorer la sécurité des applications.
Dans cet article, je vais vous détailler ce que j’ai appris sur les bonnes pratiques pour concevoir un site sécurisé et sur l’utilisation de ZAP pour faire un audit de sécurité de son site. Retour sur les présentations de Michaël Mollard de Sipios, d’Yvan Phelizot d’Arolla et de Paul Molin de Theodo.
Au début de chaque meetup, nous faisons un point sur l’actualité de la sécurité. Hier Michaël nous a présenté les faits qu’il considère comme les plus marquants du mois dernier :
Ce qui est incroyable avec la faille de 7-Pay, c’est que n’importe qui pouvait facilement réinitialiser le mot de passe d’un utilisateur en demandant à recevoir un lien de réinitialisation sur sa propre adresse mail !
C’est pour éviter ce genre de failles grossières qu’il est important de penser à la sécurité dès la conception d’une application.
A partir d’un exemple, un site web de location de VHS, Yvan nous a présenté quelques failles communes ainsi que les méthodes pour les éviter dans son code.
La première faille était une injection SQL dans le login. Celle-ci a soulevé deux problèmes :
Une bonne façon de concevoir une application est de ne pas afficher d’exception afin de donner le moins d’informations possible à l’attaquant. Quant aux failles SQL, il faut utiliser des prepared statements pour les éviter.
La deuxième faille permettait de faire exécuter des caractères spéciaux dans le terminal grâce à son nom d’utilisateur. Pour éviter (ou corriger !) ce genre de vulnérabilités, Yvan conseille d’avoir une liste blanche de caractères autorisés dans les entrées d’un utilisateur.
Enfin, la dernière faille présentée était un integer overflow dans le nombre d’articles commandés. Cette faille souligne l’importance de typer fortement son code; pour éviter de créer des failles ou de mélanger des types.
Remember, even the most secure design is rendered by a low-quality and insecure implementation, regardless of the number of security features the product employs
En résumé, Yvan nous a partagé 10 points de contrôle pour construire des applications sécurisées :
Avoir les bonnes pratiques pour produire du code sécurisé est essentiel, mais comment s’assurer de ne pas introduire de vulnérabilité lors de l’ajout d’une nouvelle fonctionnalité ?
ZAP pour Zed Attack Proxy est l’un des meilleurs outils pour tester la sécurité d’un site. Concrètement, c’est un proxy qui se place entre le navigateur et internet pour écouter (et modifier) les requêtes et données qui transitent. ZAP agit à la fois comme un scanneur passif; il écoute les requêtes et en renvoie d’autres pour découvrir le site, et comme un scanneur actif en transformant certaines requêtes; par exemple pour essayer des injections SQL.
ZAP possède de nombreuses fonctionnalités. Paul nous a présenté celles qui sont essentielles pour faire l’audit d’un site web. Le site à inspecter était Juice Shop, un autre projet de l’OWASP pour sensibiliser à la sécurité des sites.
Trois fonctionnalités de ZAP nous ont permis de découvrir plusieurs failles sur Juice Shop :
Grâce à ce meetup je sais maintenant utiliser ZAP pour réaliser des audits de sécurité et je connais les bonnes pratiques pour concevoir une application sécurisée en tant que développeur !
Si les enjeux de sécurité vous intéressent, Secure Web Paris est le meet-up idéal pour vous ! Un meet up est organisé tous les premiers mercredi du mois, n’oubliez pas de vous inscrire ! https://www.meetup.com/fr-FR/Secure-Web-Paris/
Retrouvez les slides de présentations ici : https://bit.ly/2M9249t