Guida
Tool SAST a confronto: cosa trovano e cosa non vedono
Cosa fanno i tool SAST, come otto dei più diffusi differiscono per approccio, linguaggi e licenze, e cosa sfugge all’analisi statica nel codice generato dall’AI.
· 9 min di lettura · A cura del team vetkit


Cos’è un tool SAST
Un tool SAST (static application security testing) legge il codice sorgente senza eseguirlo e segnala il codice che sembra vulnerabile: dati della richiesta che arrivano a una query SQL, un comando di shell costruito a partire dall’input dell’utente, una verifica dei certificati disattivata, un hash debole usato per le password. Dato che gli serve solo il sorgente, può girare a ogni commit, molto prima che l’applicazione venga rilasciata.
La SAST è uno dei diversi tipi di test di sicurezza. La SCA (software composition analysis) controlla le dipendenze alla ricerca di vulnerabilità note, il secret scanning cerca credenziali committate e la DAST (test dinamico) sonda un’applicazione in esecuzione. Un tool SAST non fa nessuna di queste cose, per questo la maggior parte dei team lo affianca almeno alla scansione delle dipendenze e dei segreti.
In cosa differiscono i tool SAST
Quattro differenze spiegano gran parte di ciò che noterai provando due tool sullo stesso codice.
- Quanto è profonda l’analisi. Il pattern matching trova codice che somiglia a una forma nota come pericolosa. L’analisi taint o di data flow segue un valore dal punto in cui entra (una richiesta) a quello in cui viene usato (una query). Seguire i valori tra funzioni e file trova più problemi reali, ed è di solito il punto in cui le edizioni commerciali si distinguono da quelle gratuite.
- Un linguaggio o tanti. I tool monolinguaggio conoscono bene il proprio ecosistema. Quelli multilinguaggio producono un unico report per una codebase eterogenea.
- Dove gira. Alcuni sono un comando da eseguire in locale o in CI. Altri sono piattaforme ospitate che si collegano al sistema di controllo del codice sorgente e aggiungono dashboard, commenti sulle pull request e policy.
- Se puoi scrivere regole tue. Formati di regole leggibili rendono pratico codificare le convenzioni del tuo team.
Otto tool SAST a confronto
Sono tool molto diffusi, elencati in ordine alfabetico all’interno di ciascun gruppo. La tabella riporta ciò che dice la documentazione di ciascun progetto; non è una classifica e non li abbiamo sottoposti a benchmark l’uno contro l’altro.
| Tool | Approccio, secondo la sua documentazione | Linguaggi | Licenza | Output SARIF |
|---|---|---|---|---|
| CodeQL (GitHub code scanning) | Costruisce un database a partire dal codice ed esegue query semantiche su di esso | C/C++, C#, Go, Java/Kotlin, JavaScript/TypeScript, Python, Ruby, Rust, Swift e workflow di GitHub Actions | CLI gratuita sui repository pubblici; i repository privati richiedono una licenza GitHub Code Security | Sì |
| Checkmarx One SAST | Costruisce un grafo degli elementi del codice e dei flussi di dati ed esegue query; supporta query personalizzate | Multilinguaggio, tra cui Java, C#, C/C++, PHP, JavaScript/TypeScript, Python e Go | Commerciale | Sì |
| Opengrep | Regole basate su pattern con analisi taint; compatibile con le regole Semgrep | Oltre 30 linguaggi | Open source, LGPL 2.1 | Sì |
| Semgrep | Regole basate su pattern che somigliano al codice che individuano. La Community Edition analizza all’interno di una singola funzione o di un singolo file; il commerciale Semgrep Code aggiunge l’analisi tra file e funzioni | Oltre 30 linguaggi | Motore open source, LGPL 2.1; l’AppSec Platform è proprietaria | Sì |
| Snyk Code | Motore di analisi semantica con analisi di data flow e taint | Multilinguaggio, tra cui Java/Kotlin, JavaScript/TypeScript, Python, Go, C#, PHP, Ruby e Swift | Servizio commerciale ospitato con un piano gratuito | Sì |
| SonarQube | Regole di qualità del codice e di sicurezza; l’analisi taint per le regole sulle injection è disponibile in SonarQube Server e Cloud | Oltre 40 linguaggi e framework, a seconda dell’edizione | La Community Build è open source, LGPL 3.0; Server e Cloud sono commerciali | Importa SARIF da altri tool |
| Bandit | Costruisce un albero sintattico per ogni file ed esegue dei plugin su di esso | Solo Python | Open source, Apache 2.0 | Sì, con un extra opzionale |
| gosec | Regole sull’albero sintattico, analizzatori basati su SSA e analisi taint | Solo Go | Open source, Apache 2.0 | Sì |
Brakeman è un altro noto tool dedicato a un singolo framework, Ruby on Rails. Il suo repository lo descrive come gratuito per l’uso non commerciale secondo una propria licenza d’uso pubblica, quindi verifica i termini prima di integrarlo in un servizio commerciale.
Diversi di questi tool offrono ormai correzioni o triage assistiti dall’AI con nomi propri, per esempio Copilot Autofix per gli alert di CodeQL, Semgrep Multimodal, Snyk Agent Fix e SonarQube AI CodeFix. Nomi, edizioni e prezzi in questo ambito cambiano spesso, quindi leggi la pagina aggiornata di ciascun vendor prima di decidere.
Come scegliere
- Un solo linguaggio, team piccolo. Parti dal tool monolinguaggio per il tuo stack (Bandit per Python, gosec per Go). Sono gratuiti, veloci da eseguire e facili da aggiungere alla CI.
- Codebase eterogenea, preferenza per l’open source. Un motore multilinguaggio basato su regole come Opengrep o Semgrep Community Edition copre molti linguaggi con regole che puoi leggere ed estendere.
- È tutto su GitHub. CodeQL tramite GitHub code scanning porta gli alert nelle pull request senza servizi aggiuntivi. Vedi GitHub Advanced Security vs vetkit.
- Ti servono analisi tra file più approfondite, dashboard e policy. È ciò che vendono le piattaforme commerciali. Confrontale sul tuo codice, non sugli elenchi di funzionalità. Vedi Semgrep vs vetkit e Snyk vs vetkit.
Qualunque tool tu scelga, preferiscine uno che produca SARIF. È il formato comune che ti permette di inviare i risultati a GitHub code scanning o a un’altra dashboard, e di cambiare tool in seguito. La guida a SARIF spiega come fare.
Cosa sfugge alla SAST
La SAST trova pattern di codice insicuri. Molto di ciò che va storto nel software, soprattutto nel software scritto in fretta con un assistente AI, non è un pattern in un singolo file.
| Problema | Perché la SAST da sola non lo individua | Cosa lo individua |
|---|---|---|
| Un pacchetto che non esiste o che è stato registrato la settimana scorsa | L’istruzione di import è codice valido | Controlli delle dipendenze sui registry pubblici |
| Credenziali committate | La maggior parte delle regole SAST guarda il comportamento del codice, non i formati dei segreti | Secret scanning |
| Vulnerabilità note nelle dipendenze | Il codice vulnerabile non è nel tuo repository | Software composition analysis |
| Autorizzazione mancante tra utenti | Il codice è sintatticamente corretto; la regola che manca sta nel design del tuo prodotto | Revisione e un test con due account |
| Implementazioni incomplete o segnaposto | Non è un pattern di sicurezza | Controlli di qualità del codice e di rischio AI, e revisione |
| Nessun timeout, query dentro i cicli, nessuna segnalazione degli errori | Problemi di affidabilità, fuori dalla maggior parte dei set di regole di sicurezza | Controlli di prontezza per la produzione |
| Permessi di hosting o di database configurati male | L’impostazione sta in una console, non nel sorgente | Verifica dell’ambiente in produzione |
Ecco perché un report SAST pulito non equivale a codice pronto per il rilascio. La guida a cosa va storto con il vibe coding e la guida ai pacchetti inventati esaminano i casi che contano di più per il codice scritto con l’aiuto dell’AI.
Il ruolo di vetkit
vetkit non è un motore SAST a sé. È un audit del repository che esegue l’analisi statica come parte di un report più ampio. Per la sicurezza del codice usa Opengrep con 663 regole proprietarie, elencate nel catalogo pubblico dei controlli, e aggiunge Bandit per Python e gosec per Go quando questi controlli sono selezionati. Attorno a questo esegue secret scanning, controlli sulle vulnerabilità delle dipendenze e sull’esistenza dei pacchetti, controlli di qualità del codice, di rischio del codice AI e di prontezza per la produzione, e trasforma i risultati in attività tracciate. I risultati si possono esportare in SARIF.
Se usi già uno dei tool qui sopra e ne sei soddisfatto, tienilo. vetkit è utile per le righe della seconda tabella ed è in early access, con un Security Quick Scan gratuito che copre segreti, vulnerabilità note delle dipendenze e postura di sicurezza di base.
Fonti
Abbiamo ricavato le affermazioni sugli altri tool dalla loro documentazione ufficiale o dai loro repository il . I prodotti cambiano in fretta, quindi considera le pagine di ciascun progetto come il riferimento definitivo:
- Informazioni sul code scanning con CodeQL e Informazioni sulla CodeQL CLI
- Scanner SAST di Checkmarx One
- Repository di Opengrep
- Semgrep Community Edition e AppSec Platform
- Documentazione di Snyk Code
- Cos’è SonarQube e repository della SonarQube Community Build
- Documentazione di Bandit
- Repository di gosec
- Repository di Brakeman
I nomi dei prodotti sono marchi dei rispettivi proprietari. vetkit non è affiliato, approvato né sponsorizzato da loro; i nomi sono usati solo per identificare i tool. Hai notato qualcosa di non aggiornato? Scrivi a contact@vetkit.dev e lo correggeremo.