DAST: Cos'è il Test Dinamico di Sicurezza
DAST (Dynamic Application Security Testing) e una tecnica di analisi che testa le applicazioni in esecuzione, simulando attacchi reali dall'esterno. A differenza di SAST che analizza il codice sorgente, DAST interagisce con l'applicazione via HTTP come farebbe un attaccante, cercando vulnerabilità come XSS, SQL injection, CSRF, misconfiguration e broken authentication.
DAST e un approccio black-box: non ha accesso al codice sorgente e vede l'applicazione esattamente come la vedrebbe un utente malevolo. Questo complementa SAST perchè trova vulnerabilità che emergono solo a runtime, come problemi di configurazione, header HTTP mancanti e flussi di autenticazione insicuri.
In questo articolo esploreremo OWASP ZAP e Burp Suite, la loro integrazione nella pipeline CI/CD e le strategie per implementare DAST automatizzato senza rallentare il ciclo di rilascio.
Cosa Imparerai
- Come funziona DAST e quando utilizzarlo nella pipeline
- Configurare OWASP ZAP per scan automatizzati
- API security testing con DAST
- Fuzzing e tecniche di test avanzate
- Integrazione DAST nella pipeline CI/CD
- Triage e prioritizzazione dei risultati
Come Funziona DAST
Un tool DAST segue un processo strutturato per analizzare un'applicazione web:
- Spider/Crawl: il tool naviga l'applicazione scoprendo tutte le pagine, i form e gli endpoint API
- Passive Scan: analizza le risposte HTTP cercando informazioni sensibili, header mancanti, cookie insicuri
- Active Scan: invia payload malevoli (SQL injection, XSS payloads, path traversal) e analizza le risposte per identificare vulnerabilità
- Reporting: genera un report con le vulnerabilità trovate, categorizzate per severita e con istruzioni di remediation
Quando Usare DAST nella Pipeline
DAST richiede un'applicazione in esecuzione, quindi si posiziona tipicamente nelle fasi successive della pipeline:
- Ambiente di staging: dopo il deploy in staging, prima della promozione a produzione
- Pull Request: su ambienti effimeri (preview deployments) per ogni PR
- Nightly scan: scan completi programmati ogni notte sull'ambiente di staging
- Post-deploy: scan leggero dopo ogni deploy in produzione (solo passive scan)
DAST: Vantaggi e Limitazioni
Vantaggi: basso tasso di false positives, trova vulnerabilità runtime reali, non richiede accesso al codice sorgente, testa la configurazione dell'infrastruttura. Limitazioni: più lento di SAST, richiede un'applicazione in esecuzione, non copre tutto il codice, può non trovare vulnerabilità in logica di business complessa.
OWASP ZAP: Lo Standard Open Source
OWASP ZAP (Zed Attack Proxy) e il tool DAST open source più utilizzato al mondo, mantenuto dalla OWASP Foundation. E gratuito, estensibile e supporta sia l'uso manuale (come proxy di intercettazione) che automatizzato (per la pipeline CI/CD).
ZAP Baseline Scan in Docker
Il modo più semplice per eseguire un scan DAST automatizzato e utilizzare i container Docker ufficiali di ZAP:
# Baseline scan: scan veloce, solo passive checks
docker run --rm -t ghcr.io/zaproxy/zaproxy:stable \
zap-baseline.py \
-t https://staging.myapp.com \
-r zap-report.html \
-J zap-report.json \
-c zap-baseline.conf
# Full scan: scan completo con active scanning
docker run --rm -t ghcr.io/zaproxy/zaproxy:stable \
zap-full-scan.py \
-t https://staging.myapp.com \
-r zap-full-report.html \
-J zap-full-report.json
# API scan: specifico per API REST/GraphQL
docker run --rm -t ghcr.io/zaproxy/zaproxy:stable \
zap-api-scan.py \
-t https://staging.myapp.com/api/openapi.json \
-f openapi \
-r zap-api-report.html
Configurazione ZAP per CI/CD
Per personalizzare il comportamento di ZAP, si utilizza un file di configurazione che definisce quali regole attivare, le soglie di severita e le esclusioni:
# zap-baseline.conf
# Formato: ID_regola WARN|IGNORE|FAIL
# Regole passive scan
10010 WARN # Cookie No HttpOnly Flag
10011 WARN # Cookie Without Secure Flag
10015 FAIL # Incomplete or No Cache-control
10017 WARN # Cross-Domain JavaScript Source
10020 FAIL # X-Frame-Options Header
10021 FAIL # X-Content-Type-Options Header
10038 FAIL # Content Security Policy Header
10098 WARN # Cross-Domain Misconfiguration
10202 WARN # Absence of Anti-CSRF Tokens
90033 WARN # Loosely Scoped Cookie
Integrazione in GitHub Actions
# .github/workflows/dast.yml
name: DAST Security Scan
on:
deployment_status:
jobs:
dast:
if: github.event.deployment_status.state == 'success'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: OWASP ZAP Baseline Scan
uses: zaproxy/action-baseline@v0.12.0
with:
target: 






