La sécurité des applications web est un enjeu majeur de nos jours. Il est important pour les développeurs de pouvoir détecter facilement les vulnérabilités avant la mise en production. En intégrant la sécurité dans les processus d’automatisation, nous passons du DevOps au DevSecOps.
L’objectif n’est pas de déléguer les responsabilités des spécialistes cyber aux développeurs, mais de déceler les problèmes de sécurité élémentaires le plus tôt possible.
Dans cet article, nous allons découvrir les concepts de scans passifs et actifs, puis nous verrons concrètement comment utiliser l’outil OWASP ZAP pour identifier rapidement les vulnérabilités potentielles d’une application web et générer un rapport de scan détaillé.
Mode de scan
Pour détecter les vulnérabilités dans notre application, nous pouvons réaliser un scan passif, un scan actif ou une combinaison des deux. Le choix entre ces modes dépend des objectifs de sécurité et de l’environnement de déploiement.
Les scans passifs sont non intrusifs et se basent uniquement sur l’analyse des requêtes et des réponses pour détecter des vulnérabilités. Ils ne sont pas agressifs, nous pouvons les utiliser dans les environnements de production sans risque d’interruption du service.
Contrairement aux scans passifs, les scans actifs attaquent l’application. Ils envoient des requêtes potentiellement malveillantes pour identifier les vulnérabilités, ce qui peut modifier le fonctionnement de l’application ou causer des interruptions. Ainsi, ils sont recommandés pour les environnements de test.
Nota Bene : Il ne faut jamais effectuer un scan actif sur un site web sans les permissions nécessaires, il est cependant légal de réaliser des tests de scan passif.
Identification des vulnérabilités avec ZAP
ZAP est un outil de test de sécurité complet qui propose à la fois des scans passifs et actifs. Il utilise des robots indexeurs pour explorer l’application web à tester. Nous allons l’utiliser pour analyser notre site web (une instance de l’application Google Gruyère) et générer le rapport de scan correspondant.
Pour installer ZAP, rendez-vous sur le site https://www.zaproxy.org/download/, où nous pouvons trouver des installateurs pour toutes les plateformes. Dans cet exemple, nous allons utiliser la dernière version stable de l’image Docker qui permet d’exécuter l’outil en local facilement.
L’image Docker permet de travailler avec l’interface graphique mais embarque aussi des scripts pour réaliser une analyse de sécurité en ligne de commande.
Pour récupérer l’image docker, exécuter la commande suivante :
docker pull ghcr.io/zaproxy/zaproxy:stable
Une fois l’image téléchargée, nous pouvons démarrer une instance de l’image sur laquelle on se connecte :
docker run -v $(pwd)/Documents/zap_reports:/zap/wrk/:rw -it --name zap-instance ghcr.io/zaproxy/zaproxy:stable bash
Dans cette commande, nous montons un volume qui contiendra les rapports générés par ZAP. Cela garantit que les rapports d’alertes seront enregistrés dans le répertoire spécifié.
ZAP propose les scripts zap-full-scan.py et zap-baseline.py pour lancer respectivement un scan actif et un scan passif.
Dans notre exemple, nous allons réaliser un scan passif sur notre site web Google Gruyère :
zap-baseline.py -t https://google-gruyere.appspot.com/XXX -r gruyere-report.html
Après le scan, ZAP génère le rapport gruyere-report.html tel que défini dans la commande. Ce rapport liste les différentes vulnérabilités détectées sur votre site web et est essentiel pour comprendre où se trouvent les failles de sécurité potentielles et comment elles peuvent être corrigées. Il peut être exporté dans d’autres formats (Markdown, XML ou JSON).
En suivant ces étapes, vous serez en mesure de détecter les vulnérabilités potentielles sur votre site web et de générer des rapports détaillés sur les failles de sécurité. Utiliser ZAP dans le processus de développement peut aider à identifier les vulnérabilités de manière anticipée, renforçant ainsi la sécurité de votre application web.