Vai al contenuto

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

Uno sviluppatore spinge uno scanner lungo un lungo rotolo di codice srotolato, il cui fascio di luce illumina segnali di avvertimento, mentre un robot regge l’estremità del rotolo.Uno sviluppatore spinge uno scanner lungo un lungo rotolo di codice srotolato, il cui fascio di luce illumina segnali di avvertimento, mentre un robot regge l’estremità del rotolo.

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 SAST a confronto
ToolApproccio, secondo la sua documentazioneLinguaggiLicenzaOutput SARIF
CodeQL (GitHub code scanning)Costruisce un database a partire dal codice ed esegue query semantiche su di essoC/C++, C#, Go, Java/Kotlin, JavaScript/TypeScript, Python, Ruby, Rust, Swift e workflow di GitHub ActionsCLI gratuita sui repository pubblici; i repository privati richiedono una licenza GitHub Code SecuritySì
Checkmarx One SASTCostruisce un grafo degli elementi del codice e dei flussi di dati ed esegue query; supporta query personalizzateMultilinguaggio, tra cui Java, C#, C/C++, PHP, JavaScript/TypeScript, Python e GoCommercialeSì
OpengrepRegole basate su pattern con analisi taint; compatibile con le regole SemgrepOltre 30 linguaggiOpen source, LGPL 2.1Sì
SemgrepRegole 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 funzioniOltre 30 linguaggiMotore open source, LGPL 2.1; l’AppSec Platform è proprietariaSì
Snyk CodeMotore di analisi semantica con analisi di data flow e taintMultilinguaggio, tra cui Java/Kotlin, JavaScript/TypeScript, Python, Go, C#, PHP, Ruby e SwiftServizio commerciale ospitato con un piano gratuitoSì
SonarQubeRegole di qualità del codice e di sicurezza; l’analisi taint per le regole sulle injection è disponibile in SonarQube Server e CloudOltre 40 linguaggi e framework, a seconda dell’edizioneLa Community Build è open source, LGPL 3.0; Server e Cloud sono commercialiImporta SARIF da altri tool
BanditCostruisce un albero sintattico per ogni file ed esegue dei plugin su di essoSolo PythonOpen source, Apache 2.0Sì, con un extra opzionale
gosecRegole sull’albero sintattico, analizzatori basati su SSA e analisi taintSolo GoOpen source, Apache 2.0Sì

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.

ProblemaPerché la SAST da sola non lo individuaCosa lo individua
Un pacchetto che non esiste o che è stato registrato la settimana scorsaL’istruzione di import è codice validoControlli delle dipendenze sui registry pubblici
Credenziali committateLa maggior parte delle regole SAST guarda il comportamento del codice, non i formati dei segretiSecret scanning
Vulnerabilità note nelle dipendenzeIl codice vulnerabile non è nel tuo repositorySoftware composition analysis
Autorizzazione mancante tra utentiIl codice è sintatticamente corretto; la regola che manca sta nel design del tuo prodottoRevisione e un test con due account
Implementazioni incomplete o segnapostoNon è un pattern di sicurezzaControlli di qualità del codice e di rischio AI, e revisione
Nessun timeout, query dentro i cicli, nessuna segnalazione degli erroriProblemi di affidabilità, fuori dalla maggior parte dei set di regole di sicurezzaControlli di prontezza per la produzione
Permessi di hosting o di database configurati maleL’impostazione sta in una console, non nel sorgenteVerifica 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:

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.

Richiedi l’accesso anticipato

Raccontaci qualcosa del tuo team e dei repository che vuoi sottoporre ad audit. Accogliamo i team a piccoli gruppi e ti risponderemo via email.

Usiamo questi dati solo per rispondere alla tua richiesta. Informativa sulla privacy