Software Assessment
Per mitigare le minacce e diminuire il rischio che un attacco venga portato con successo esistono diverse metodologie, ognuna indipendente e complementare all’altra, che permettono di analizzare ed evidenziare le vulnerabilità di un software ancora prima del suo rilascio o della sua distribuzione.
L’adozione di tali pratiche e la conseguente integrazione nei processi di validazione del software, può avvenire in varie fasi del ciclo di sviluppo:
Raccolta dei requisiti del software
Progettazione architetturale
Implementazione durante la scrittura del codice
Esecuzione dell’applicazione in ambienti di test o collaudo
Nelle prime due fasi è possibile intervenire esclusivamente su nuovi progetti e comunque senza un adeguato processo che porti all’adozione di un ciclo di sviluppo sicuro del software è difficile riuscire a definire i requisiti o progettare un’architettura nel modo migliore dal punto di vista della sicurezza. Per questo è necessario comunque intervenire in altri modi per valutare la sicurezza del software nelle fasi successive.
Gli approcci o metodologie che vengono in aiuto sono:
SAST (Static Application Security Testing): analisi del codice sorgente di un’applicazione
DAST (Dynamic Application Security Testing): test automatizzato su un’applicazione in esecuzione per individuare eventuali vulnerabilità note.
SAST
Static Application Security Testing è una metodologia di assessment di sicurezza del software basata sull’analisi del codice sorgente di un’applicazione utile per individuare eventuali vulnerabilità prima che il software sia rilasciato.
Molte vulnerabilità molto comuni e pericolose, come SQL Injection, XSS, password o chiavi crittografiche scolpite nel codice, configurazioni errate di hosting o di frameworks, possono essere rilevate tramite il processo di revisione del codice (code review). Tale processo può essere svolte sia in modo completamente manuale che in modo automatizzato.
L’approccio comunemente utilizzato si basa sull’adozione di strumenti automatici che analizzano il codice sorgente e segnalano quelle porzioni di codice che possono introdurre vulnerabilità; una revisione manuale dei risultati ottenuti è comunque necessaria per l’individuazione di eventuali falsi positivi.
DAST
Dynamic Application Security Testing è la metodologia di assessment che verifica la sicurezza di un’applicazione nel momento in cui è in esecuzione.
L’analisi dinamica di un’applicazione aiuta il cliente a testare il livello di sicurezza e robustezza del software simulando attacchi atti ad individuare vulnerabilità e compromettere il funzionamento dell’applicazione.
Nelle applicazioni web e soprattutto con l’avvento delle Web API c’è stato un boom di problemi di sicurezza relativi ad autenticazione, autorizzazione e chiamate cross-site non legittime, facilmente individuabili da strumenti automatici in grado di simulare le possibili chiamate che un attaccante, anche di basso livello, potrebbe effettuare.
Questi test son utili anche per testare alcune impostazioni di configurazione come la robustezza del protocollo SSL, le cypher suite supportate dal server o eventuali informazioni sul web server e la versione dei software utilizzati per far funzionare l’applicazione.