SAST: Cos'è l'Analisi Statica del Codice
SAST (Static Application Security Testing) e una tecnica di analisi che esamina il codice sorgente senza eseguirlo, alla ricerca di pattern che indicano vulnerabilità di sicurezza. A differenza del testing dinamico che richiede un'applicazione in esecuzione, SAST opera direttamente sul codice, permettendo di individuare problemi nelle primissime fasi di sviluppo.
SAST analizza il codice alla ricerca di vulnerabilità come SQL injection, cross-site scripting (XSS), buffer overflow, hardcoded credentials, insecure deserialization e molte altre. Gli strumenti SAST costruiscono un modello del codice (AST - Abstract Syntax Tree) e applicano regole di sicurezza per identificare pattern problematici.
In questo articolo esploreremo i principali strumenti SAST, la loro integrazione nella pipeline CI/CD e le strategie per gestire uno dei problemi più comuni: i false positives.
Cosa Imparerai
- Come funziona SAST e la differenza con DAST e IAST
- Configurare SonarQube, Semgrep e CodeQL nella pipeline CI/CD
- Scrivere regole custom per Semgrep
- Gestire false positives e prioritizzare i finding
- Integrare SAST nell'IDE per feedback immediato
- Quality Gates e soglie di blocco per il deploy
SAST vs DAST vs IAST: Le Differenze
Per scegliere gli strumenti giusti, e fondamentale capire le differenze tra i tre approcci principali di security testing:
Confronto tra Approcci di Security Testing
| Caratteristica | SAST | DAST | IAST |
|---|---|---|---|
| Analisi | Codice sorgente (white-box) | Applicazione in esecuzione (black-box) | Runtime con agente (grey-box) |
| Quando | Durante lo sviluppo, in CI | In staging/pre-produzione | Durante i test funzionali |
| Copertura | Tutto il codice, anche non raggiungibile | Solo le parti raggiungibili via HTTP | Codice eseguito durante i test |
| False Positives | Medio-alto | Basso | Molto basso |
| Velocita | Veloce (minuti) | Lento (ore) | Dipende dai test |
L'approccio ottimale e utilizzare tutti e tre in modo complementare: SAST per il feedback rapido durante lo sviluppo, DAST per validare la sicurezza runtime e IAST per correlazione precisa durante i test.
SonarQube: Analisi Completa della qualità del Codice
SonarQube e la piattaforma SAST più diffusa, utilizzata da oltre 400.000 organizzazioni. Oltre alla sicurezza, analizza qualità del codice, code smells, duplicazioni e copertura dei test. La versione Community e open source e copre 30+ linguaggi di programmazione.
Setup con Docker Compose
Il modo più rapido per avviare SonarQube in locale o in un ambiente di staging e tramite Docker Compose:
# docker-compose.sonarqube.yml
version: "3.8"
services:
sonarqube:
image: sonarqube:lts-community
container_name: sonarqube
ports:
- "9000:9000"
environment:
- SONAR_JDBC_URL=jdbc:postgresql://db:5432/sonarqube
- SONAR_JDBC_USERNAME=sonar
- SONAR_JDBC_PASSWORD=sonar_password
volumes:
- sonarqube_data:/opt/sonarqube/data
- sonarqube_logs:/opt/sonarqube/logs
- sonarqube_extensions:/opt/sonarqube/extensions
depends_on:
- db
db:
image: postgres:15
container_name: sonarqube-db
environment:
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=sonar_password
- POSTGRES_DB=sonarqube
volumes:
- postgresql_data:/var/lib/postgresql/data
volumes:
sonarqube_data:
sonarqube_logs:
sonarqube_extensions:
postgresql_data:
Integrazione in GitHub Actions
L'integrazione di SonarQube nella pipeline CI/CD con GitHub Actions permette di eseguire l'analisi automaticamente ad ogni push o pull request:
# .github/workflows/sonarqube.yml
name: SonarQube Analysis
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
sonarqube:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: SonarQube Scan
uses: SonarSource/sonarqube-scan-action@v3
env:
SONAR_TOKEN: 






