Forum P.A. 07 La Sicurezza ICT nella PA Ciclo di vita del software: strumenti e procedure per migliorarne la sicurezza Roberto Ugolini 1
Sicurezza: il modello ed i servizi Assessment del Sistema di Gestione della Sicurezza delle Informazioni Gap Analysis Definizione e Implementazione dell SGSI Indicatori di Sicurezza Analisi dei Rischi Piano di Trattamento dei Rischi PIANIFICARE Istituire il SGSI Processo di sviluppo sicuro del codice Certificazione di sicurezza Integrazione con strumenti crittografici MIGLIORARE Mantenere e migliorare il SGSI REALIZZARE Attuare e operare il SGSI CONTROLLARE Monitorare e riesaminare il SGSI Analisi di Vulnerabilità/Penetration Test Audit ISO 27001 Osservatorio Tecnologico 2
Il processo di sviluppo sicuro del codice Il processo di sviluppo sicuro del codice () è composto da un certo numero di azioni, alcune delle quali supportate da strumenti tecnologici, altre da procedure organizzative Penetration testing Il processo di non può essere pensato come una semplice aggiunta della sicurezza alla fine dello sviluppo del prodotto, subito prima o dopo (quanto dopo?) il rilascio 3
Penetration testing (1/2) Il Penetration Testing è la metodologia oggigiorno più applicata per quanto riguarda la verifica della sicurezza del software, in parte anche in quanto ha l interessante ( e pericolosa!) caratteristica di poter essere svolta al termine del ciclo di sviluppo. Sfortunatamente questo tipo di test però viene svolto da esperti esterni per una durata limitata di tempo e può identificare solamente le vulnerabilità evidenti e superficiali. Inoltre è troppo legato a fattori aleatori, quali la capacità del tester e la assoluta mancanza di metodologie di test universalmente accreditate. In generale questo tipo di testing viene di fatto svolto troppo tardi nel ciclo di sviluppo e non da che risultati superficiali: spesso il risultato di questi test è quello di creare una certificazione superficiale del prodotto. 4
Penetration testing (2/2) Penetration Testing: manuali o automatizzati? Possono (e devono) coesistere in un attività condotta in modo esaustivo Gli strumenti per Web Application sono ideali nell identificare vulnerabilità tecniche L esperienza e la capacità umane sono invece fondamentali per trovare vulnerabilità logiche e creare mis-use case Strumenti per penetration testing: open source o commerciali? E necessaria una combinazione equilibrata di personale esperto e formato e strumenti automatizzati, sia commerciali sia opensource I tool automatizzati aiutano un security tester ad effettuare in modo più rapido e maggiormente completo l assessment di una web application Il tool richiede la conoscenza dei suoi limiti e di come padroneggiarlo per essere proficuo Non sostituiscono l attività manuale e possono per ciò essere combinati con strumenti opensource In questo modo è possibile affrontare vulnerabilità tecniche o logiche, ridurre i falsi positivi/negativi e gestire l assessment di applicativi di grosse dimensioni 5
E quindi? 1 4 2 6 3 5 Il processo di vita del software e le attività di necessarie (fonte IEEE) 6
Ma se il software proviene da un fornitore esterno? Fornitura subordinata alla: (in fase di trattativa/capitolato) accettazione degli standard/linee guida adottati dal committente, che indirizzino specificamente il problema delle vulnerabilità del software e la progettazione di software sicuro certificazione dei profili degli esperti di sicurezza che verranno impiegati per validare il prodotto ed relativo codice sorgente (esperti interni o possibilmente in outsourcing) certificazione dei processi interni ed esterni di gestione del codice certificazione del processo di sviluppo seguito in particolare con riferimento alla gestione dei requisiti di sicurezza del codice tempistica di risoluzione delle falle di sicurezza (in fase di rilascio) Reportistica delle operazioni di testing sul software completo (condotti sia tramite risorse interne che in outsourcing) e relative contromisure adottate prima del rilascio finale 7