Contenu du cours
Comprendre et Maîtriser DevSecOps de A à Z
0/22
Comprendre et Maîtriser DevSecOps de A à Z – Cours et 202 questions pratiques (Copie 1)

Objectifs de la Leçon

  • Comprendre le rôle de l’analyse dynamique dans la détection des vulnérabilités en conditions réelles.

  • Savoir distinguer les approches SAST et DAST et les intégrer de manière complémentaire dans un pipeline CI/CD.

  • Découvrir et utiliser des outils DAST tels qu’OWASP ZAP, Burp Suite et Nikto pour scanner les applications en fonctionnement.

  • Intégrer des tests de sécurité applicative automatisés dans vos pipelines afin de bloquer les déploiements en cas de détection de failles critiques.

  • Analyser et interpréter les rapports DAST pour prioriser les correctifs et améliorer la posture de sécurité.

Table des Matières

  1. Introduction à l’Analyse Dynamique (DAST)
     1.1. Définition et objectifs
     1.2. Différences entre SAST et DAST

  2. Outils de DAST et Tests de Sécurité Applicative
     2.1. OWASP ZAP
     2.2. Burp Suite
     2.3. Nikto

  3. Intégration de DAST dans un Pipeline CI/CD
     3.1. Principes de l’automatisation des tests DAST
     3.2. Exemples d’intégration dans Jenkins et GitLab CI

  4. Lecture et Analyse des Rapports DAST
     4.1. Format et éléments clés d’un rapport
     4.2. Critères de gating et prise de décision

  5. Études de Cas et Retours d’Expérience

  6. Exercices Pratiques et Corrigés Détaillés
     6.1. Exercice : Automatiser un scan DAST avec OWASP ZAP
     6.2. Exercice : Intégrer Nikto dans un pipeline CI
     6.3. Exercice : Analyse d’un rapport Burp Suite et actions correctives

  7. Quiz de Révision

  8. Conclusion et Transition vers la Leçon 9


1. Introduction à l’Analyse Dynamique (DAST)

Définition et Objectifs
L’analyse dynamique, ou DAST, teste une application en fonctionnement pour identifier des vulnérabilités exploitées en conditions réelles. Contrairement au SAST qui examine le code statiquement, le DAST se focalise sur le comportement de l’application dans un environnement d’exécution, simulant des attaques externes.

Différences SAST / DAST

  • SAST : Analyse statique du code source, détectant des failles avant l’exécution.

  • DAST : Analyse dynamique en environnement de test ou staging, permettant d’identifier des vulnérabilités opérationnelles (ex. injections, XSS, CSRF).


2. Outils de DAST et Tests de Sécurité Applicative

2.1. OWASP ZAP

  • Outil open source pour le scanning dynamique des applications web.

  • Fonctionnalités : scan automatisé, proxy d’interception, fuzzing, génération de rapports détaillés.

  • Peut être utilisé en ligne de commande via zap-cli pour des intégrations automatisées.

2.2. Burp Suite

  • Outil professionnel offrant des capacités de test manuel et automatisé.

  • Permet de mener des analyses approfondies via son scanner intégré et des modules complémentaires (Intruder, Repeater).

  • Souvent utilisé pour valider les résultats d’un scan automatisé.

2.3. Nikto

  • Scanner open source simple et rapide pour détecter des vulnérabilités et des configurations faibles sur des serveurs web.

  • Idéal pour une première analyse et complément aux outils plus détaillés comme Burp Suite.


3. Intégration de DAST dans un Pipeline CI/CD

Principe de l’automatisation
Automatiser le DAST dans votre pipeline CI/CD permet de lancer des scans à chaque déploiement en staging et de bloquer les mises en production en cas de détection de vulnérabilités critiques.

3.1. Exemples d’Intégration

Jenkinsfile avec OWASP ZAP

groovy
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Compilation de l’application...'
sh './build.sh'
}
}
stage('DAST Scan') {
steps {
echo 'Exécution du scan DAST avec OWASP ZAP...'
sh 'zap-cli quick-scan --self-contained http://staging.myapp.com'
}
post {
unsuccessful {
error "Le scan DAST a détecté des vulnérabilités critiques. Pipeline bloqué."
}
}
}
stage('Tests') {
steps {
echo 'Exécution des tests unitaires...'
sh 'pytest tests/'
}
}
stage('Deploy') {
steps {
echo 'Déploiement de l’application...'
sh './deploy.sh'
}
}
}
post {
always {
echo "Pipeline terminé."
}
}
}

Exemple GitLab CI avec Nikto

yaml
stages:
- build
- dast
- test
- deploy

build_job:
stage: build
script:
- echo "Build de l'application..."
- docker build -t myapp:latest .

dast_job:
stage: dast
script:
- echo "Exécution du scan DAST avec Nikto..."
- nikto -h http://staging.myapp.com || exit 1
allow_failure: false

test_job:
stage: test
script:
- echo "Exécution des tests..."
- pytest tests/

deploy_job:
stage: deploy
script:
- echo "Déploiement..."
- ./deploy.sh


4. Lecture et Analyse des Rapports DAST

  • Rapports DAST : Généralement générés en format HTML ou JSON, ils détaillent les vulnérabilités trouvées, leur niveau de sévérité et des recommandations.

  • Critères de Gating : Définir un seuil (ex. aucune vulnérabilité de niveau critique n’est tolérée) et bloquer le pipeline en cas de dépassement.

  • Prise de Décision : Les rapports doivent être analysés pour prioriser les corrections et adapter les configurations de sécurité.


5. Études de Cas et Retours d’Expérience

Cas Pratique 1 : Application Bancaire

  • Contexte : Utilisation d’OWASP ZAP pour scanner une application bancaire en environnement de staging.

  • Résultats : Identification précoce d’injections SQL et de failles XSS, permettant une correction avant déploiement.

Cas Pratique 2 : Site E-commerce

  • Contexte : Intégration de Nikto dans un pipeline CI/CD pour scanner le serveur web d’un site e-commerce.

  • Impact : Détection d’une mauvaise configuration du serveur, avec une intervention rapide qui a amélioré la posture de sécurité.


6. Exercices Pratiques et Corrigés Détaillés

Exercice 1 : Automatiser un Scan DAST avec OWASP ZAP

  • Consigne : Installer zap-cli, exécuter un scan sur une URL de staging et vérifier que le pipeline se bloque en cas de vulnérabilités critiques.

  • Corrigé :

    bash
    pip install python-owasp-zap-v2.4
    zap-cli quick-scan --self-contained http://staging.myapp.com

    Explication : Le script lance le scan et retourne un code d’erreur non nul si des vulnérabilités sont détectées, bloquant le pipeline.

Exercice 2 : Intégrer Nikto dans un Pipeline CI/CD

  • Consigne : Modifier un fichier .gitlab-ci.yml pour ajouter une étape avec Nikto.

  • Corrigé : Voir l’exemple YAML ci-dessus.

Exercice 3 : Analyser un Rapport de Burp Suite

  • Consigne : Fournir un extrait simplifié d’un rapport Burp Suite, identifier deux vulnérabilités critiques et proposer une mesure corrective pour chacune.

  • Corrigé :

    • Vulnérabilité 1 : Injection SQL détectée sur l’endpoint /searchCorrectif : Utiliser des requêtes paramétrées.

    • Vulnérabilité 2 : XSS sur le champ de saisie de commentaire — Correctif : Filtrer et encoder les entrées utilisateur.


7. Quiz de Révision

  1. Qu’est-ce que le DAST et quel est son rôle dans un pipeline CI/CD ?

  2. Citez deux outils DAST et mentionnez leurs principales caractéristiques.

  3. Que fait la commande zap-cli quick-scan --self-contained <url> ?

  4. Expliquez l’intérêt d’un gating dans un pipeline CI/CD en cas de détection de vulnérabilités critiques.

  5. Quel outil utiliseriez-vous pour réaliser une analyse DAST automatisée sur un serveur web ?


8. Conclusion et Prévisualisation

Conclusion de la Leçon 8 :
Vous avez découvert comment intégrer des tests d’intrusion automatisés (DAST) dans un pipeline CI/CD grâce à des outils comme OWASP ZAP, Nikto et Burp Suite. Ces tests permettent de simuler des attaques en conditions réelles, d’identifier des vulnérabilités exploitables et de bloquer automatiquement les déploiements si des failles critiques sont détectées.

Prévisualisation de la Leçon 9 :
La prochaine leçon portera sur la Sécurité des Conteneurs et des Images. Vous apprendrez à construire des images Docker sécurisées, à utiliser des outils de scan tels que Trivy, Clair et Grype, et à intégrer ces contrôles dans vos pipelines pour garantir que seules des images sans vulnérabilités sont déployées.