SAST et DAST
SAST (Static Application Security Testing) et DAST (Dynamic Application Security Testing) représentent deux méthodologies fondamentales et complémentaires dans le domaine de la sécurité des applications, chacune avec des approches distinctes mais tout aussi importantes pour l'identification des vulnérabilités. SAST fonctionne par l'analyse statique du code source, du bytecode ou des binaires sans exécuter l'application, en examinant le code à la recherche de patterns indiquant des vulnérabilités potentielles telles que l'injection SQL, le XSS, les buffer overflows et les failles de logique métier. Cette approche "white-box" permet d'identifier les problèmes tôt dans le cycle de développement (shift-left security), en fournissant aux développeurs un feedback précis sur l'emplacement exact du code vulnérable. D'autre part, DAST simule des attaques réelles contre l'application en cours d'exécution, en la testant en mode "black-box" comme le ferait un attaquant externe, sans accès au code source. Cette technique révèle des vulnérabilités qui ne se manifestent qu'en runtime, telles que les failles de configuration, les problèmes d'authentification et d'autorisation, et les vulnérabilités qui surgissent de l'interaction entre différents composants. Lorsqu'ils sont mis en œuvre ensemble dans une stratégie intégrée de DevSecOps, SAST et DAST couvrent les angles morts l'un de l'autre, créant une défense en profondeur qui détecte à la fois les vulnérabilités introduites pendant le développement et celles qui émergent pendant l'exécution de l'application dans des environnements réels.
SAST : Analyse Statique
SAST examine le code source, le bytecode ou les binaires sans exécuter l'application, en identifiant les vulnérabilités pendant le développement.
Avantages de SAST
- Early detection : Trouve les bugs avant le deployment
- Code coverage : Analyse 100 % du code, y compris les paths non exécutés
- Root cause : Montre la ligne exacte du code vulnérable
- No runtime needed : Ne nécessite pas que l'application soit en cours d'exécution
- CI/CD integration : Automatisation dans le pipeline de build
Limites de SAST
- False positives élevés - nécessite du tuning
- Ne détecte pas les vulnérabilités de configuration
- Ne teste pas la logique métier en runtime
- Language-specific - chaque langage a besoin de son propre scanner
Outils SAST
- SonarQube : Open-source, prend en charge plus de 25 langages
- Checkmarx : Enterprise-grade, SAST leader du marché
- Fortify : Micro Focus, analyse approfondie
- Semgrep : Open-source, règles personnalisables
- Bandit (Python) : Spécifique à Python
- Brakeman (Ruby) : Rails security scanner
DAST : Analyse Dynamique
DAST teste l'application en cours d'exécution, en simulant des attaques réelles via du black-box testing, sans accès au code source.
Avantages de DAST
- Runtime testing : Teste l'application comme un attaquant réel
- Configuration issues : Détecte les failles de configuration
- Low false positives : Vulnérabilités confirmées et exploitables
- Language-agnostic : Fonctionne pour n'importe quelle stack
- Production-like : Teste dans un environnement similaire à la production
Limites de DAST
- Late detection - vulnérabilités trouvées une fois le code terminé
- Code coverage limité - ne teste que les flux accessibles
- Pas de détails de code - ne montre pas la ligne vulnérable
- Nécessite que l'application soit déployée et en cours d'exécution
Outils DAST
- OWASP ZAP : Open-source, proxy interceptor
- Burp Suite : Industry standard, professional scanner
- Acunetix : Automated web vulnerability scanner
- Netsparker : Proof-based scanning
- AppScan : Solution enterprise d'IBM
SAST + DAST : Stratégie Combinée
Utiliser SAST et DAST ensemble couvre les angles morts de chaque approche, créant un programme d'AppSec robuste.
# Pipeline CI/CD avec SAST + DAST
stages:
- build
- sast
- test
- dast
- deploy
sast_scan:
stage: sast
script:
- semgrep --config=auto --json -o sast-results.json
- sonar-scanner
artifacts:
reports:
sast: sast-results.json
dast_scan:
stage: dast
script:
- docker run -t owasp/zap2docker-stable zap-baseline.py
-t https://staging.app.com -r dast-report.html
artifacts:
reports:
dast: dast-report.html
IAST : Interactive Application Security Testing
IAST combine SAST et DAST, en instrumentant l'application pour la surveiller en runtime, obtenant le code coverage de SAST avec la runtime accuracy de DAST.
- Contrast Security : Leader en IAST, agents embarqués
- Seeker (Synopsys) : Runtime analysis avec code insight
- Hdiv Security : Runtime application self-protection
Intégration DevSecOps
- SAST dans les pre-commit hooks et les pull requests
- DAST dans les staging environments avant la production
- Quality gates : bloquer les builds avec des vulnérabilités critiques
- Developer feedback loops : intégrer avec les IDE (SonarLint)
- Vulnerability management : centraliser les résultats sur une plateforme unique
Recommandations
Implémentez SAST tôt dans le SDLC (shift-left) et DAST dans les environnements de staging. Réglez les outils pour réduire les false positives - concentrez-vous d'abord sur les vulnérabilités critiques. Envisagez IAST pour les applications critiques. Automatisez tout dans le pipeline CI/CD et créez des feedback loops rapides pour les développeurs.
