Il framework Software Assurance Maturity Model (SAMM) sviluppato da OWASP (Open Web Application Security Project) consente di implementare tutti i controlli necessari allo sviluppo sicuro del software, dove per sviluppo sicuro si intende l’insieme di processi, linee guida e pratiche finalizzate ad assicurare che la sicurezza delle informazioni sia progettata ed attuata all’interno del ciclo di sviluppo di applicazioni e sistemi.
Nella gestione della sicurezza delle informazioni lo sviluppo sicuro del software rappresenta uno dei controlli fondamentali: se ne parla nello standard ISO 27001 (sistemi di gestione per la sicurezza delle informazioni) e nelle linee guida ENISA sulle misure tecniche ed organizzative per gli adempimenti privacy.
Tali standard spesso prescrivono il controllo, ma non dettagliano nello specifico i processi e le attività collegate. In questo scenario, si colloca il Software Assurance Maturity Model (SAMM), che può essere usato come guida all’implementazione di un processo di sviluppo sicuro.
Nonostante il nome, il modello non è solo un framework per valutare la maturità, intesa come completezza ed efficacia di un processo esistente di sviluppo, ma anche per costruirne uno nuovo: accanto ai criteri di valutazione, il modello descrive attività, obiettivi e risultati attesi in tutte le fasi del ciclo di vita.
Indice degli argomenti
Software Assurance Maturity Model: i dettagli
Il modello nasce come strumento ad uso delle organizzazioni per:
- valutare il processo di sviluppo sicuro all’interno di un’organizzazione;
- progettare un programma di software assurance e misurarne i progressi nel tempo;
- definire e misurare i processi e le attività legate allo sviluppo sicuro.
Il Software Assurance Maturity Model è costituito da un insieme di processi, organizzati per funzioni di business coinvolte nello sviluppo sicuro all’interno delle organizzazioni. Per ciascuno di questi processi, il modello fornisce una serie di componenti chiave (attività, obiettivi ecc.) che caratterizzano contenuti e finalità del processo, insieme ai criteri per la valutazione della sua maturità.
Software Assurance Maturity Model: le funzioni di business
Il modello definisce quattro funzioni di business principali:
- Governance: come indicato dal termine stesso, questa funzione include i processi legati a come un’organizzazione gestisce lo sviluppo nella sua accezione più ampia (strategia, valutazione del rischio);
- Construction (progettazione): questa funzione include i classici processi di gestione del prodotto, definizione dei requisiti, architettura, specifiche di dettaglio e implementazione;
- Verification (test): questa funzione include i processi di test, dalla review del codice, all’uso di tool automatizzati, ai penetration test ecc.;
- Deployment (rilascio in produzione): questa funzione include i processi di rilascio e installazione in produzione, inclusi le attività di operations.
Le security practice del Software Assurance Maturity Model
Per ciascuna funzione di business sono identificati tre “processi” principali (security practice), che descrivono le principali attività e gli obiettivi di assurance.
Per la funzione di Governance i processi sono:
- Strategy & Metric: questo processo include la definizione della strategia e della roadmap del processo di sviluppo sicuro, la sua gestione e misurazione nel corso del tempo;
- Policy & Compliance: questo processo include l’identificazione di norme e standard coinvolti, la definizione di politiche, procedure e linee guida, la gestione dell’attività di audit;
- Education & Guidance: questo processo include l’introduzione di specifiche attività formative strutturate e personalizzate sui ruoli.
Per la funzione di Construction i processi sono:
- Threat Assessment: questo processo include l’attività “tecnica” centrale di modellizzazione della minaccia e dell’attaccante specifici per ogni applicativo, con la valutazione del rischio associato e relative contromisure;
- Security Requirements: questo processo include la definizione e la gestione (definizione e tracciabilità per tutto il ciclo di sviluppo) dei requisiti di sicurezza, da affiancare a quelli funzionali;
- Security Architecture: questo processo include la progettazione sicura del software (secure-software by-design e by-default), attraverso i principi di progettazione vera e propria (uso di servizi e componenti sicure ecc.).
Per la funzione di Verification i processi sono:
- Design Review: questo processo include l’identificazione della superficie di attacco dell’applicativo e la verifica di applicazione dei requisiti di sicurezza nel design;
- Code Review: questo processo include le attività di code review rispetto a rischi noti (a tal proposito OWASP mette a disposizione ampia documentazione in merito), anche attraverso l’uso di tool automatizzati;
- Security Testing: questo processo include le attività vere e proprie di test dinamico (con applicativo running), penetration test eccetera.
Per la funzione di Deployment, infine, i processi sono:
- Vulnerability Management: questo processo include le attività orientate a gestire malfunzionamenti e problemi che nascano nell’ambiente di produzione (Response Team ecc.);
- Environment Hardening: questo processo include le attività orientate a gestire la sicurezza degli ambienti di produzione (una baseline di configurazione, patch management e aggiornamenti);
- Operational Enablement: questo processo include principalmente le attività di documentazione finalizzata a una corretta installazione e gestione del software in produzione.
Caratterizzazione dei processi nel modello SAMM
Ciascun processo è descritto da un set di componenti, che caratterizzano il processo stesso, e da un set di criteri per la valutazione del livello di assurance. Le componenti includono:
- gli obiettivi, sempre più specifici e raffinati al crescere del livello di maturità;
- le attività, più numerose al crescere del livello;
- i risultati, in termini di deliverable;
- le metriche, che rappresentano gli indicatori di performance;
- i costi, in termini di stima indicativa dei costi da sostenere per raggiungere e mantenere un determinato livello di assurance;
- le risorse, in termini di impegno richiesto alle diverse figure coinvolte, che comprendono: sviluppatori, architetti, managers, tester, auditor, assistenza tecnica e supporto.
I livelli di maturità
Per ciascun processo il modello definisce tre livelli di maturità:
- livello 0 (implicito), che rappresenta l’assenza del processo strutturato;
- livello 1, che rappresenta l’approccio iniziale alla definizione del processo;
- livello 2, che indica un processo definito orientato al miglioramento in termini di efficacia;
- livello 3, che indica la completa padronanza del processo.
Come applicare il Software Assurance Maturity Model
Come accennato all’inizio, il modello SAMM appena descritto può essere utilizzato per diverse finalità. Di seguito alcune indicazioni per una corretta applicazione del modello nei diversi contesti.
Conduzione di un Assessment
Il modello può essere utilizzato per una valutazione della postura di sicurezza dell’intero processo di sviluppo o di una parte di esso, all’interno dell’organizzazione.
Si tratta di un’attività piuttosto semplice, realizzata attraverso questionari a risposta chiusa (si/no), messi a disposizione gratuitamente da OWASP.
Raccolte le risposte, la statistica dei si e dei no permette di stimare il livello di riferimento.
La valutazione di merito così ottenuta può essere raffinata andando a verificare puntualmente, per il livello stimato, la corrispondenza di attività, obiettivi, metriche, risultati e risorse. Questo secondo step permette di rendere più oggettiva la valutazione e mettere in evidenza le aree di forza e debolezza potenzialmente da migliorare.
Misurare l’efficacia di un’iniziativa
Il modello può essere utilizzato anche per valutare l’efficacia di un’iniziativa che può ricomprendere l’intero processo (un vero e proprio programma di Assurance del software) o solo una parte di esso. Si tratta della stessa modalità utilizzata tipicamente nella formazione, per valutare l’efficacia di un corso o si una sessione di training. Si implementa effettuando gli assessment descritti in momenti successivi.
Costruire un Assurance Program
Costruire un programma di assurance è sicuramente la modalità più ampia di sfruttare il modello SAMM. Accanto al modello vero e proprio, OWASP mette a disposizione una serie di “template” di roadmap. Un template di roadmap è un piano temporale di progetto costituito da fasi all’interno delle quali si prevede di incrementare il livello di assurance di alcuni processi. È possibile fare riferimento ai template già disponibili, preparati per diverse tipologie di organizzazioni, oppure raffinarli sulla base di esigenze e caratteristiche specifiche della singola organizzazione.
Una volta definito il piano (roadmap), l’organizzazione lavora al raggiungimento del livello di assurance pianificato per quel specifico processo in quella fase, andando a implementare le attività previste.
Conclusioni
Il modello SAMM offre valide opportunità di approccio al tema dello sviluppo sicuro.
Quando dalla strategia (ragioni di compliance o ragioni di business) nasce l’esigenza di soddisfare il requisito relativo allo sviluppo sicuro, il modello SAMM rappresenta lo step successivo, una possibile e valida tattica da implementare per rispondere alla strategia. Quando di parla di sviluppo sicuro, infatti, capita spesso (almeno per l’esperienza di chi scrive) di imbattersi in tattiche incomplete, inefficienti o addirittura inesistenti, con evidente difficoltà o impossibilità di raggiungimento dell’obiettivo.
Quando non è la strategia che lo richiede, è comunque buona regola misurarsi sempre con gli aspetti di sicurezza nello sviluppo software. Che siate una grande software house o una piccola-media impresa, potete sempre fare riferimento a SAMM per un assessment magari limitato ad alcuni processi di interesse e ritagliato sulle vostre esigenze. È un’occasione sostenibile di fare sicurezza in maniera efficace ed efficiente e sicuramente un’opportunità da non perdere.