I test di sicurezza sono una parte fondamentale delle applicazioni che dovrebbero essere integrati nel ciclo di vita dello sviluppo del software (SDLC). Tali test fungono da difesa proattiva e continua contro le vulnerabilità durante tutto il processo di sviluppo del software.
I software sono sempre più complessi e utilizzano cicli di rilascio rapidi e pratiche di sviluppo e distribuzione continue. L’identificazione e la risoluzione tempestiva delle potenziali vulnerabilità nell’SDLC ha dato luogo all’implementazione di un approccio alla sicurezza denominato “shift-left”.
SAST, DAST, IAST e RASP sono degli approcci utilizzati nel campo della sicurezza informatica per individuare e mitigare vulnerabilità nelle applicazioni software.
Test statici di sicurezza delle applicazioni
Utilizzando regole predefinite e modelli di vulnerabilità noti, SAST cerca punti deboli nel codice che potrebbero essere sfruttati da un attaccante. Alcuni esempi di vulnerabilità che possono essere rilevati includono:
- Injection flaws (ad esempio, SQL injection, command injection)
- Cross-Site Scripting (XSS)
- Buffer Overflow
- Hard-coded credentials
Una volta completata l’analisi, SAST genera un report dettagliato delle vulnerabilità trovate, fornendo informazioni specifiche sul codice interessato e suggerimenti per la mitigazione.
Le sfide delle soluzioni SAST
Sebbene i moderni strumenti SAST dimostrino un’elevata efficacia nell’identificazione dei difetti di codifica, presentano limitazioni nell’identificazione della logica aziendale o dei difetti di progettazione. Tali difetti possono essere individuati solo attraverso la revisione del codice di sicurezza e la modellazione delle minacce. Inoltre, a causa della mancanza di visibilità in fase di esecuzione, gli strumenti SAST non sono sempre accurati nei risultati, producendo spesso falsi positivi.
Una delle principali sfide delle soluzioni SAST è che le app moderne non sono costituite solo dal codice sorgente dell’applicazione. Nei moderni ambienti di sviluppo viene adottato il paradigma “tutto come codice”. Ciò include non solo il codice sorgente dell’applicazione, ma si estende anche all’infrastruttura, ai contratti intelligenti, alle pipeline di integrazione continua e distribuzione continua ( CI/CD ), ai flussi di lavoro dei processi aziendali e agli script dichiarativi. Questa vasta gamma di artefatti di codice rappresenta una sfida considerevole per gli strumenti SAST, tradizionalmente progettati per analizzare il codice sorgente delle applicazioni.
Un’altra sfida si presenta quando si analizzano basi di codici di grandi dimensioni, come grandi monoliti, poiché potrebbero essere necessarie diverse ore per completare il processo. Tuttavia, se configurato per eseguire la scansione solo delle modifiche incrementali, il tempo necessario per completare l’analisi statica viene notevolmente ridotto a pochi minuti.
Strumenti e soluzioni SAST
Esistono vari strumenti sul mercato che implementano SAST, tra cui:
- SonarQube: Analizza la qualità del codice e rileva vulnerabilità di sicurezza.
- Checkmarx: Fornisce un’analisi completa della sicurezza del codice sorgente.
- Fortify Static Code Analyzer: Offre un’analisi approfondita delle vulnerabilità nel codice sorgente.
- Veracode Static Analysis: Integra l’analisi della sicurezza nel ciclo di vita del software.
Sul fronte commerciale, le soluzioni SAST offrono funzionalità complete, spesso incorporando funzionalità avanzate come apprendimento automatico, analisi, scansione segreta, analisi della composizione del software, suggerimenti di correzione e integrazioni con gli ambienti di sviluppo più diffusi.
Test dinamici di sicurezza delle applicazioni
Gli strumenti DAST forniscono funzionalità e tecniche comunemente utilizzate nei test di penetrazione o nelle valutazioni della sicurezza delle applicazioni. Queste tecniche includono la scansione delle vulnerabilità, l’analisi delle richieste/risposte, la forza bruta, la generazione di exploit, l’individuazione della superficie di attacco e gli attacchi simulati.
Le sfide delle soluzioni DAST
A causa della mancanza di visibilità del codice sorgente, gli strumenti DAST non sono sempre accurati nei risultati, producendo spesso falsi positivi. Inoltre, non sono in grado di identificare la posizione esatta di una vulnerabilità nel codice. Quando si valutano applicazioni su larga scala, gli strumenti DAST spesso impiegano diverse ore per completare i test di sicurezza. La configurazione degli strumenti DAST per eseguire la scansione solo di specifici ambiti applicativi, API o modifiche incrementali può aiutare ad alleviare questa sfida, riducendo il tempo necessario per condurre analisi dinamiche.
Nei moderni DevSecOps, DAST viene in genere eseguito più avanti nel ciclo di vita dello sviluppo, spesso in ambienti di gestione temporanea o di produzione. È anche possibile integrare uno strumento DAST in una pipeline CI/CD; tuttavia, dovrebbe essere implementato in più fasi dopo aver assicurato che la configurazione dello strumento DAST distribuito non produca falsi positivi e non ritardi notevolmente la pipeline. Per questi motivi, molti team di sviluppo hanno scelto di non integrare gli strumenti DAST nelle proprie pipeline CI/CD. D’altra parte, i penetration tester in genere includono gli strumenti DAST come strumenti standard nei loro toolkit.
Strumenti e soluzioni DAST
Esistono vari strumenti sul mercato che implementano DAST, tra cui:
- OWASP ZAP (Zed Attack Proxy): Uno strumento open source per trovare vulnerabilità di sicurezza nelle applicazioni web
- Burp Suite: Un set di strumenti per test di sicurezza delle applicazioni web, ampiamente utilizzato dai professionisti della sicurezza
- Acunetix: Un software di scansione delle vulnerabilità che analizza le applicazioni web per identificare problemi di sicurezza
- Netsparker: Uno strumento che automatizza la ricerca delle vulnerabilità nelle applicazioni web
Test interattivi sulla sicurezza delle applicazioni
IAST (Interactive Application Security Testing) è una metodologia di sicurezza che combina elementi di SAST (Static Application Security Testing) e DAST (Dynamic Application Security Testing) per analizzare il codice delle applicazioni durante l’esecuzione. Questo approccio offre una visione approfondita delle vulnerabilità del software, sfruttando sia l’analisi statica che dinamica.
IAST richiede l’integrazione di agenti di monitoraggio all’interno dell’applicazione. Questi agenti monitorano l’applicazione mentre viene eseguita in un ambiente di test o di sviluppo. Gli agenti IAST monitorano il flusso di dati, le interazioni con le API, l’accesso ai database e altre attività dell’applicazione durante la sua esecuzione. Questo monitoraggio fornisce una visione dettagliata di come il codice funziona in tempo reale. Durante l’esecuzione, IAST combina l’analisi statica del codice con l’analisi dinamica del comportamento dell’applicazione. Questo approccio ibrido permette di identificare vulnerabilità che potrebbero non essere rilevate usando solo SAST o DAST. In tal modo non solo monitorano attivamente le richieste e le risposte HTTP scambiate con l’applicazione, ma raccolgono anche informazioni di runtime sull’istanza in esecuzione. Questo livello di visibilità consente alla soluzione di fornire approfondimenti basati sul contesto che eliminano efficacemente eventuali punti ciechi e migliorano la precisione del rilevamento. Di conseguenza, gli strumenti IAST dimostrano un tasso di falsi positivi notevolmente basso e offrono approfondimenti avanzati sulle vulnerabilità correlando i problemi identificati con posizioni precise del codice sorgente, cosa non ottenibile tramite gli strumenti DAST.
Le sfide delle soluzioni IAST
È importante sottolineare che l’efficacia delle soluzioni IAST dipende dal fatto che tutti i percorsi del codice vengano esercitati attivamente o eseguiti con i carichi utili di attacco adeguati durante il periodo di test. In uno scenario tipico, vengono utilizzati test negativi end-to-end e scanner DAST per inviare payload di attacco contro l’app.
Nel frattempo, lo strumento IAST monitora parti dell’app verificando se i payload scoprono difetti o sfruttano con successo le vulnerabilità. Questo è il motivo per cui gli strumenti IAST potrebbero non fornire una copertura del codice del 100% e l’efficacia dei risultati dipende in larga misura dalla copertura e dalle capacità delle suite di test di sicurezza e dello scanner DAST associato. Questa limitazione può comportare lacune nel rilevamento delle vulnerabilità, soprattutto negli scenari in cui alcune parti del codice dell’applicazione rimangono inesplorate o non attivate durante il processo di test.
Un altro svantaggio degli strumenti IAST è che dipendono dal linguaggio di programmazione a causa della loro dipendenza dalla strumentazione della piattaforma runtime oltre al fatto che l’aggiunta di agenti di monitoraggio può introdurre un overhead nelle prestazioni dell’applicazione durante i test.
Strumenti e soluzioni IAST
Esistono vari strumenti sul mercato che implementano IAST, tra cui:
- Contrast Security: Offre una soluzione IAST che monitora l’applicazione in esecuzione per rilevare vulnerabilità in tempo reale.
- HCL AppScan: Integra capacità IAST per fornire un’analisi di sicurezza dettagliata durante l’esecuzione dell’applicazione.
- Seeker by Synopsys: Combina l’analisi statica e dinamica per identificare e mitigare le vulnerabilità in tempo reale.
In particolare, il progetto OWASP AppSensor merita attenzione come il primo strumento IAST open source. Implementato come libreria, il suo obiettivo principale è fornire una guida prescrittiva sull’integrazione del rilevamento delle intrusioni nelle applicazioni runtime e dei meccanismi di risposta automatizzata. Serve come implementazione di riferimento e non è destinato alla distribuzione diretta nel suo stato attuale. Lo sviluppo delle sue funzionalità sembra essere cessato dal 2019.
Autoprotezione delle applicazioni runtime
RASP (Runtime Application Self-Protection) è una tecnologia di sicurezza progettata per proteggere le applicazioni durante il loro runtime. RASP estende i principi di IAST, utilizzando le informazioni acquisite dal monitoraggio in fase di esecuzione, ma fa un ulteriore passo avanti incorporando funzionalità di autoprotezione direttamente all’interno dell’applicazione. In effetti, ciò significa che, a differenza di SAST, DAST e IAST, che testano le tecnologie utilizzate per identificare le vulnerabilità durante le varie fasi dell’SDLC, RASP si concentra sull’autoprotezione in tempo reale. Monitora e analizza attivamente l’esecuzione dell’applicazione e risponde alle minacce alla sicurezza non appena si verificano, rendendolo un meccanismo di difesa proattivo piuttosto che uno strumento di test.
Similmente a IAST, RASP utilizza agenti di strumentazione che si collegano alla piattaforma runtime per monitorare e analizzare il comportamento dell’applicazione. A differenza di altre soluzioni difensive, come WAF, RASP va oltre l’analisi di input e output monitorando e valutando attivamente l’esecuzione interna e lo stato dell’applicazione. IAST utilizza la strumentazione per monitorare l’esecuzione del runtime per l’identificazione di vulnerabilità e attacchi, mentre RASP, non limitandosi al rilevamento, modifica attivamente il codice in esecuzione per prevenire attacchi e proteggere l’applicazione.
Non tutte le soluzioni RASP implementano lo stesso tipo di meccanismi di autoprotezione o analizzano l’esecuzione interna dell’app con la stessa granularità a livello di codice. Diverse soluzioni RASP possono impiegare approcci e algoritmi di rilevamento diversi, raggiungendo diversi livelli di accuratezza ed efficacia in termini di rilevamento delle minacce in tempo reale, tassi di falsi positivi e capacità di autoprotezione. Gli strumenti RASP sfruttano le informazioni esclusive fornite dalla piattaforma runtime per andare oltre le tradizionali tecniche di riconoscimento dei modelli, identificando comportamenti anomali e attacchi alla sicurezza effettivi che potrebbero non essere coperti da modelli o firme noti.
È importante sottolineare che le soluzioni RASP hanno la capacità di fornire funzionalità di autoprotezione nell’intero stack di runtime e non solo nel livello di logica aziendale dell’applicazione. Ciò include la protezione dell’ambiente runtime, delle librerie standard, delle librerie di terze parti, dei framework, dei server e del middleware.
Inoltre, alcune soluzioni RASP offrono patch virtuali immediate delle applicazioni vulnerabili. Ciò significa che possono applicare dinamicamente controlli di sicurezza o mitigazioni per proteggersi dalle vulnerabilità note senza richiedere la ricostruzione o il riavvio dell’applicazione. In questo modo, le soluzioni RASP aiutano a colmare il divario tra la scoperta di una vulnerabilità zero-day e l’implementazione di una patch permanente, fornendo un livello di protezione immediato.
Le sfide delle soluzioni RASP
La questione dei falsi positivi è cruciale nelle soluzioni RASP poiché esiste il rischio che lo strumento possa bloccare il traffico legittimo e generatore di entrate, causando interruzioni al normale funzionamento dell’applicazione. Dato il potenziale impatto sulle operazioni aziendali e sull’esperienza dell’utente, nonché il rischio di perdere la fiducia nello strumento, ridurre al minimo i falsi positivi è una preoccupazione significativa nella scelta o nell’implementazione delle soluzioni RASP. Trovare il giusto equilibrio tra rilevamento efficace delle minacce, impatto sulle prestazioni ed evitare falsi positivi con una configurazione minima è essenziale per una distribuzione RASP di successo negli ambienti di produzione. Dotando la piattaforma runtime, le soluzioni RASP hanno una visibilità unica del codice, che fornisce il contesto runtime essenziale per valutare l’intelligence sulla sicurezza e ridurre al minimo i falsi positivi.
Per ottenere questa visibilità unica, le soluzioni RASP inseriscono sensori specializzati nella piattaforma runtime ed eseguono un’analisi in tempo reale degli approfondimenti runtime. La sfida per i fornitori RASP è determinare i punti di iniezione appropriati per questi sensori e selezionare quali algoritmi di rilevamento analizzare tali informazioni di runtime. Queste decisioni di progettazione devono essere prese con attenzione per fornire protezione con il minor numero possibile di falsi positivi mantenendo l’impatto sulle prestazioni il più basso possibile.
Strumenti e soluzioni RASP
Il panorama tecnico di RASP è complesso e caratterizzato da una forte concorrenza, che potrebbe essere la causa di fondo dell’assenza di soluzioni RASP open source, pronte per l’azienda e gestite attivamente. Il progetto OpenRASP è un’eccezione notevole. Si tratta di un agente di sicurezza runtime basato su plugin che supporta Java e PHP, sostenendo di fornire protezione contro la OWASP Top 10. Tuttavia, lo sviluppo del progetto è piuttosto lento, con il suo ultimo rilascio nel gennaio 2022.
Le soluzioni RASP commerciali forniscono protezione su misura per diversi tipi di applicazioni. Alcuni sono progettati solo per la sicurezza generale delle applicazioni o per le applicazioni Web, mentre altri sono specializzati nella sicurezza delle applicazioni mobili, fornendo protezione runtime per piattaforme Android e iOS.
Conclusione
In conclusione, SAST, DAST, IAST e RASP sono quattro approcci complementari alla sicurezza delle applicazioni, ognuno con le sue specifiche metodologie e vantaggi. Utilizzati insieme, possono fornire una copertura completa delle vulnerabilità, migliorando significativamente la sicurezza delle applicazioni software.
Per proteggere le applicazioni dalle minacce in continua evoluzione, è necessaria una strategia completa di test di sicurezza. Non esiste una sicurezza assoluta. Pertanto, è fondamentale implementare una strategia di test che combini diversi metodi di test di sicurezza in tutte le fasi dell’SDLC e implementi la difesa in profondità. Questa strategia a più livelli si concentra sull’implementazione di diversi controlli di sicurezza sia negli ambienti di test che di produzione.
Trovare un equilibrio tra rilevamento efficace e approfondito delle vulnerabilità, impatto minimo sulle prestazioni ed evitare falsi positivi è fondamentale per una strategia di difesa e test di sicurezza resiliente e di successo. Con l’evoluzione del panorama software, il continuo adattamento delle pratiche di sicurezza diventa fondamentale per salvaguardare le applicazioni e mantenere la fiducia degli utenti.
Il futuro dei test di sicurezza e degli strumenti di protezione sarà significativamente influenzato dall’intelligenza artificiale generativa, in particolare dai modelli linguistici di grandi dimensioni. Questa tendenza comporta la crescente integrazione di strumenti copilota basati sull’intelligenza artificiale per migliorare le pratiche di sicurezza su tutti i livelli dello stack tecnologico e nell’intero SDLC. Dovremmo anticipare l’avvento di strumenti SAST, DAST, IAST e RASP basati sull’intelligenza artificiale che forniranno vantaggi critici in aree chiave, tra cui revisioni dei codici di sicurezza, programmazione delle coppie, copertura dei test, revisioni dei modelli di progettazione e minaccia, nonché rilevamento di vulnerabilità e anomalie e protezione dagli attacchi.