Lo Static Application Security Testing (SAST) è una parte fondamentale del ciclo di vita dello sviluppo software. Gli strumenti SAST analizzano il codice sorgente per identificare vulnerabilità di sicurezza e altri problemi prima che il codice venga compilato o eseguito. Questo aiuta gli sviluppatori a trovare e correggere i problemi nelle prime fasi del processo di sviluppo, riducendo i costi e migliorando la sicurezza complessiva.
Sono disponibili diversi strumenti SAST popolari, ognuno con i propri punti di forza e funzionalità. In questo articolo, confronteremo gli strumenti SAST più utilizzati.
CheckMarx
CheckMarx SAST è una soluzione di analisi del codice sorgente che identifica vulnerabilità di sicurezza, problemi di conformità e altri difetti nel codice. Costruisce un grafico logico degli elementi e dei flussi del codice, quindi interroga questo grafico per trovare i problemi. CheckMarx supporta molti linguaggi di programmazione e può eseguire scansioni in qualsiasi punto del ciclo di vita dello sviluppo.
Le caratteristiche principali di CheckMarx includono:
- Ampio elenco di query preconfigurate per vulnerabilità note
- Possibilità di configurare query personalizzate per sicurezza, QA e logica di business
- Interfaccia interattiva per tracciare il comportamento runtime e la correzione
- Integrazione con strumenti di automazione della build, sistemi SCM, issue tracker e piattaforme CI/CD
Fortify
OpenText Fortify Static Code Analyzer è un altro strumento SAST leader. Individua le cause principali delle vulnerabilità di sicurezza nel codice sorgente, assegna la priorità ai problemi più gravi e fornisce indicazioni per la correzione. Fortify supporta oltre 1.600 categorie di vulnerabilità in più di 33 linguaggi di programmazione.
Alcune funzionalità chiave di Fortify includono:
- Integrazione della sicurezza negli strumenti di sviluppo tramite un ampio ecosistema di integrazione
- Ottimizzazione della profondità di scansione e riduzione al minimo dei falsi positivi con Audit Assistant
- Scalabilità dinamica delle scansioni per soddisfare le esigenze delle pipeline CI/CD
- Identificazione delle vulnerabilità nel codice sorgente, binario o byte all’inizio dello sviluppo
- Integrazione con strumenti CI/CD come Jenkins, Jira, Azure DevOps e altro
Frogbot
Frogbot è un bot Git che esegue la scansione delle pull request per individuare vulnerabilità di sicurezza utilizzando JFrog Xray. Quando viene creata o etichettata una nuova pull request, Frogbot esegue una scansione e segnala eventuali problemi riscontrati direttamente nell’interfaccia utente di Git. Ciò consente agli sviluppatori di risolvere le vulnerabilità prima che vengano unite nel codebase.
Le caratteristiche principali di Frogbot includono:
- Scansione delle pull request per vulnerabilità note
- Segnalazione dei risultati nell’interfaccia Git come commenti
- Possibilità di rieseguire le scansioni aggiungendo un’etichetta a una pull request esistente
- Integrazione con JFrog Xray per il motore di scansione
Veracode
Veracode offre una soluzione SAST automatizzata basata su cloud. Esegue la scansione del codice compilato (binari) anziché solo del codice sorgente, fornendo risultati più approfonditi e completi. Veracode identifica potenziali problemi come codice dannoso o funzionalità inadeguate e classifica i risultati in base al rischio aziendale.
Alcuni aspetti degni di nota di Veracode includono:
- Scansione dei binari per includere librerie di terze parti che potrebbero essere omesse dalle scansioni solo del codice sorgente
- Prioritizzazione dei risultati in base agli obiettivi aziendali e alla tolleranza al rischio
- Fornitura di risultati estremamente accurati e fruibili con pochi falsi positivi
- Abilitazione di scansioni e risultati rapidi senza la necessità di personale di sicurezza dedicato
Semgrep
Semgrep è uno strumento SAST open source che funziona ovunque, dalla riga di comando alle pipeline CI/CD. È progettato per essere facile da personalizzare e utilizzare, con un’architettura estensibile. Le regole di Semgrep sono visibili agli utenti e simili nella sintassi al codice sorgente, rendendole trasparenti e comprensibili.
Le caratteristiche principali di Semgrep includono:
- Esecuzione di scansioni in pochi secondi, con un tempo medio di scansione CI di 10 secondi
- Flessibilità per scrivere regole personalizzate per risolvere problemi complessi
- Fornitura di una libreria di regole gestite per ridurre al minimo la scrittura di regole personalizzate
- Supporto di oltre 30 framework e tecnologie
GitHub CodeQL
CodeQL è il motore di analisi open source utilizzato da GitHub per i controlli di sicurezza e l’analisi delle varianti. Supporta molti linguaggi di programmazione e fornisce un’interfaccia a riga di comando e un’estensione di Visual Studio Code per l’esecuzione di scansioni su codebase open source.
Alcuni aspetti degni di nota di CodeQL includono:
- Automatizzazione dei controlli di sicurezza e dell’analisi delle varianti
- Supporto di un’ampia gamma di linguaggi, librerie e framework
- Fornitura di una panoramica dei termini e dei concetti tecnici utilizzati in CodeQL
Snyk Code
Snyk Code è uno strumento SAST facile da usare per gli sviluppatori che esegue la scansione del codice sorgente in pochi minuti, senza necessità di build. Fornisce risultati in tempo reale direttamente nel codice, insieme a consigli di correzione per aiutare gli sviluppatori a risolvere rapidamente i problemi. Snyk Code è compatibile con linguaggi, IDE e strumenti CI/CD popolari.
Le caratteristiche principali di Snyk Code includono:
- Scansione del codice mentre viene scritto, con scansione automatica dall’IDE
- Fornitura di risultati fruibili con consigli di correzione adatti agli sviluppatori
- Sfruttamento del machine learning per costruire una solida knowledge base
- Prioritizzazione dei problemi in base allo stato di distribuzione e all’esposizione
Tencent Xcheck
Tencent Xcheck è uno strumento di static application security testing (SAST) sviluppato da Tencent Cloud. È progettato per aiutare gli sviluppatori a identificare vulnerabilità di sicurezza e altri problemi nel loro codice sorgente.
- Xcheck può comprendere con precisione le caratteristiche sintattiche di diversi linguaggi di programmazione, il che aiuta a risolvere il problema dei falsi positivi causati da un’errata interpretazione del codice.
- Può identificare le misure di protezione della sicurezza definite dall’utente, riducendo ulteriormente i falsi positivi.
- Xcheck supporta la scansione di progetti completi con sintassi corretta per i linguaggi supportati.
- Può eseguire la scansione del codice dell’applicazione backend web rapidamente, ma potrebbe richiedere più tempo per il codice ricorsivo annidato in profondità.
Confronto con altri strumenti SAST
- Un post su Reddit suggerisce che Xcheck può scansionare direttamente il codice sorgente grezzo senza bisogno di compilazione e la sua velocità di scansione è 100 volte superiore a quella di Checkmarx.
Distribuzione e sicurezza
- Xcheck è distribuito on-premise, quindi il codice sorgente in fase di test rimane all’interno della rete aziendale, evitando il rischio di fuoriuscita del codice sorgente.
- L’intero ciclo di vita del prodotto, incluso il codice sorgente, non lascia la rete aziendale.
Tencent Xcheck è uno strumento SAST veloce e preciso che aiuta gli sviluppatori a trovare problemi di sicurezza nel loro codice. Il suo modello di implementazione on-premise garantisce la sicurezza del codice sorgente. Sebbene si confronti favorevolmente con altri strumenti SAST in termini di velocità e precisione, potrebbe non supportare così tanti linguaggi o avere un ecosistema così ampio come alcuni strumenti SAST focalizzati sull’impresa.
Semgrep
- Strumento SAST open source che funziona ovunque, dalla riga di comando alle pipeline CI/CD
- Progettato per essere facile da personalizzare e utilizzare, con un’architettura estensibile
- Supporta oltre 30 framework e tecnologie
- Fornisce una libreria di regole gestite per ridurre al minimo la scrittura di regole personalizzate
- Esegue scansioni in pochi secondi, con un tempo medio di scansione CI di 10 secondi
Bandit
- Strumento SAST open source progettato specificamente per la scansione del codice Python
- Scanner completo di vulnerabilità del codice sorgente per Python
Brakeman
- Scanner di vulnerabilità open source progettato specificamente per applicazioni Ruby on Rails
OWASP Dependency-Check
- Strumento open source che identifica l’uso di componenti vulnerabili noti
- Supporta progetti Java e .NET
- Si integra con strumenti di build come Gradle, Jenkins e Maven
PMD
- Strumento SAST open source che supporta Java, JavaScript, Salesforce e altri linguaggi
- Si integra con strumenti di build come Ant, Maven, Gradle e Jenkins
PHPStan
- Strumento SAST open source per PHP
- Supporta integrazioni con Bitbucket, GitHub e GitLab
Cppcheck
- Strumento SAST open source per codice C e C++
- Si integra con Jenkins e Visual Studio
Questi sono solo alcuni esempi dei tanti strumenti SAST open source disponibili. Quando si sceglie uno strumento SAST, è importante considerare fattori come i linguaggi di programmazione che si utilizzano, il livello di personalizzazione e trasparenza di cui si ha bisogno, la velocità e l’accuratezza dei risultati e la facilità di integrazione con gli strumenti e i flussi di lavoro esistenti. Molti di questi strumenti offrono versioni di prova gratuite o versioni open source, in modo da poterli provare e vedere quale funziona meglio per le proprie esigenze.
Per concludere
Lo Static Application Security Testing è una parte fondamentale dello sviluppo di software sicuro. Gli strumenti SAST confrontati in questo articolo hanno ciascuno i propri punti di forza e funzionalità, ma tutti mirano ad aiutare gli sviluppatori a trovare e correggere le vulnerabilità di sicurezza nelle prime fasi del processo di sviluppo.
Quando si sceglie uno strumento SAST, considerare fattori come i linguaggi di programmazione che si utilizzano, il livello di personalizzazione e trasparenza di cui si ha bisogno, la velocità e l’accuratezza dei risultati e la facilità di integrazione con gli strumenti e i flussi di lavoro esistenti. Molti di questi strumenti offrono versioni di prova gratuite o versioni open source, in modo da poterli provare e vedere quale funziona meglio per le proprie esigenze.
In definitiva, l’obiettivo del SAST è migliorare la sicurezza complessiva delle applicazioni trovando e correggendo i problemi prima che possano essere sfruttati dagli aggressori. Incorporando il SAST nel processo di sviluppo, è possibile creare software più sicuro e ridurre il rischio di costose violazioni in futuro.