Dast with owasp zap proxy slides
Introduction à OWASP ZAP¶
ZAP (Zed Attack Proxy) est l'outil de scan de vulnérabilités web dynamique le plus populaire au monde
Il permet de réaliser du DAST (Dynamic Application Security Testing) : - Tests de sécurité automatisés en simulant des attaques - Analyse manuelle des applications web (Proxy d'interception) - Découverte de failles "au runtime" (XSS, SQL Injection, Security Headers)
Pourquoi utiliser ZAP ?¶
- Gratuit et open-source : Projet phare de la fondation OWASP
- Polyvalent : Supporte les tests passifs (non intrusifs) et actifs
- Automatisation : Scripts Python prêts à l'emploi pour la CI/CD
- Mode API : Capacité à scanner des API REST, GraphQL et OpenAPI
Types de Scans¶
Scan Passif (Baseline)¶
- Analyse le trafic (requêtes/réponses) sans modifier les données
- Idéal pour la CI/CD à chaque commit (rapide et sans risque)
Scan Actif (Full Scan)¶
- Tente de modifier les données et d'exploiter les failles
- Attention : Peut corrompre la base de données (à faire en environnement dédié)
Scan d'API¶
- Importe une définition OpenAPI (Swagger) ou GraphQL
- Teste spécifiquement les endpoints et les paramètres de l'API
Configuration GitLab CI pour ZAP¶
Le scan Baseline est recommandé pour un feedback rapide en CI :
zap_baseline_scan:
stage: security_scan
image: owasp/zap2docker-stable
variables:
TARGET_URL: "https://staging.myapp.com"
script:
- mkdir /zap/wrk
# Scan passif de 1 minute (Baseline)
- zap-baseline.py -t $TARGET_URL -r zap_report.html
artifacts:
when: always
paths:
- zap_report.html
Stratégies avancées¶
- Nightly Scan : Lancer le
zap-full-scan.pyune fois par jour (plus long, plus profond) - Authentification : Utiliser des scripts ZAP pour scanner des zones protégées par login
- Gestion des faux positifs : Utiliser un fichier de configuration (
-c) pour ignorer certaines alertes - Rapports : Génération aux formats HTML, XML ou JSON pour intégration avec des outils tiers
Conclusion¶
- OWASP ZAP est le pilier du DAST dans une chaîne DevSecOps
- Commencer par un scan passif (Baseline) pour éviter de bloquer les builds
- Compléter par des scans actifs en environnement de staging ou en nightly
- Indispensable pour détecter les failles liées à la configuration serveur et au runtime