Introduzione alla metodologia OpenSAMM

Transcript

Introduzione alla metodologia OpenSAMM
Introduzione alla metodologia OpenSAMM
Fra la miriade di progetti realizzati dalla community di OWASP (Open Web Application Security
Project) uno di quelli più interessanti e innovati è sicuramente OpenSAMM (Software Assurance
Maturity Model). Il progetto oltre a essere tra i principali nel sito OWASP ha anche un suo sito
ufficiale (http://www.opensamm.org/).
Figura 1. Link al progetto OpenSAMM sulla home page OWASP
Che cosa è SAMM
SAMM nasce come un modello di framework che supporti le aziende nella realizzazione di un
processo di sviluppo sicuro del software che integri al suo interno attività mirate ad aumentare
il livello di sicurezza del software intervenendo durante tutto il suo ciclo di sviluppo.
In linea di massima i principali obiettivi di un processo di Secure SDLC (Software Development Life
Cycle) sono i seguenti:
•
•
mitigare i rischi legati alle possibili problematiche dovute allo sviluppo insicuro del codice
ridurre i costi per gli interventi di correzione delle criticità di sicurezza intervenendo già
nelle fasi iniziali del processo di creazione del software (come riportato indicativamente dai
moltiplicatori della tabella sottostante)
Errori
Architetturali
Errori di
Programmazione
Errori di
Integrazione
Scoperti
nella fase di
design
Scoperti
nella fase di
sviluppo
Scoperti
nella fase di
debugging
Scoperti
nella fase di
integrazione
Scoperti in
produzione
X1
X3
X3
X5
X10
X1
X3
X5
X10
X1
X5
Tabella 1. Costi per gli interventi di correzione delle criticità di sicurezza
Da definizione degli stessi creatori di SAMM i punti di forza principali del progetto sono i seguenti:
•
•
•
•
Fornire uno strumento di valutazione degli attuali processi di
security già presenti nell’organizzazione
Costruire un programma di software security bilanciato nelle
differenti interazioni / fasi del SDLC
Avere uno strumento per poter misurare in modo concreto
l’evoluzione nel tempo del programma
Definire le attività di security da integrare nei processi aziendali e
fornire metriche per misurarne l’efficacia della loro applicazione
Cosa differisce SAMM da altri framework / metodologie
Sul mercato sono presenti diversi progetti noti di metodologie / modelli / framework di SSDLC.
Alcuni progetti condividono con SAMM la necessità di fornire uno strumento di misurazione della
maturità di processo e permettere la sua evoluzione nel tempo (ad esempio BSIMM - Building
Security In Maturity Model), altri sono più incentrati sulle attività da integrare ai processi di sviluppo
(ad esempio i Cigital’s touchpoints), altri ancora nel fornire strumenti per la gestione dei processi
(ad esempio Microsoft SDL).
Ogni progetto può avere ha pro e contro in base al contesto dove viene calato, in generale questo
perché sono spesso orientati a tipi di sviluppo diversi (ad esempio Microsoft SDL è più adatto per
lo sviluppo di programmi stand-alone), esula però dagli obbiettivi di questo articolo il voler
comparare i diversi modelli ad oggi presenti sul mercato.
In generale una delle caratteristiche vincenti del framework SAMM è la sua flessibilità, tutte le sue
indicazioni sono di alto livello e permettono principalmente la possibilità di applicarlo:
•
•
•
a diverse realtà (piccole, medie, grandi organizzazioni)
a diversi processi di SDLC (waterfall, spirale, rad, personalizzato, etc.)
a processi di sviluppo complesso (con differenti progetti e business unit) o a progetti spot
Oltre alla flessibilità, SAMM, grazie al fatto di non essere legato a vendor ed essere un progetto
open source permette:
•
•
il supporto da un ampia comunità di contributori (OWASP) sia per gli aggiornamenti dello
stesso che per la buona compatibilità con eventuali progetti futuri (ad esempio il mapping
con la ISO / IEC 27304)
evitare i classici possibili problemi di “vendor lock-in”
Figura 2. La classificazione delle Security Practices da integrare nel proprio SDLC
Le pratiche di sicurezza suggerite dal framework
Le pratiche di sicurezza da tradurre in attività da integrare nel SSDLC sono raggruppabili nei
seguenti 4 macro gruppi:
1) Pratiche di Governance. Sono incentrate sui processi e le regole con cui l'organizzazione
gestisce l’attività di sviluppo software nel suo complesso. I sotto-gruppi proposti sono:
•
•
•
Strategy & Metrics: processi comuni per l’analisi dei dati o la realizzazione di metriche per
la classificazioni dei dati.
Policy & Compliance: attività inerenti alla gestione delle policy interne o di settore,
eventuali conformità / standard di mercato o legislativi.
Education & Guidance: attività di formazione per il personale coinvolto nei processi di
sviluppo applicativo, guide e materiale formativo per uso interno all’azienda e da fornire ai
fornitori.
Rientrano in questa categoria attività come l’analisi dei rischi finalizzata alla classificazione e
alla valutazione dei rischi legati alle applicazioni, l’analisi delle policy e delle leggi a cui essere
conformi, la gestione dei processi di formazione per il personale coinvolto nel SDLC.
2) Pratiche di Construction. Sono incentrate sui processi di organizzazione precedenti alla fase
di sviluppo quali ad esempio la raccolta dei requisiti, il product management o l’analisi
architetturale. I sotto-gruppi proposti sono:
•
•
•
Threat Assessment: attività svolte con l’intento di identificare e mappare i possibili attacchi
per agevolare l’individuazione dei possibili rischi e agevolarne il trattamento.
Security Requirements: attività attuate per promuovere l’inserimento di requisiti di
sicurezza all’interno delle specifiche dell’applicazione.
Secure Architecture: attività con lo scopo di inserire controlli di sicurezza nella fase di
processo dell’architettura applicativa e nella scelta delle tecnologie da utilizzare.
In questa sezione rientrano attività quali il threat modeling, la definizione dei requisiti di
sicurezza applicativa e le policy interne sull’architettura applicativa da rispettare.
3) Pratiche di Verification. Sono incentrate sui processi relativi al controllo sullo sviluppo sicuro
delle applicazioni. I sotto-gruppi proposti sono:
•
•
•
Design Review: attività di revisione dei processi di design delle applicazioni.
Code Review: attività di revisione del codice.
Security Testing: attività di verifica sulle applicazioni in esercizio.
Attività da integrare in questo gruppo sono ad esempio la revisione del codice (automatica o
manuale), la programmazione nel tempo di attività di verifica di tipo penetration test o di attività
atte a revisionare le scelte di design applicativo.
4)
Pratiche di Deployement. Sono incentrate sui processi di gestione, manutenzione e
distruzione delle applicazioni in esercizio. I sotto-gruppi proposti sono:
•
•
•
Vulnerability Management: attività con il fine di gestire la presenza di vulnerabilità emerse
da attività di verifica interne o esterne.
Environment Hardening : processi e attività volte all’implementazioni e all’effettuazioni di
controlli sui sistemi in cui verranno messe in esercizio le applicazioni sviluppate.
Operational Enablement: attività improntate al trasferimento delle nozioni di sicurezza agli
utenti delle applicazioni per non invalidare l’intero processo di SSDLC.
Fanno parte di questa categoria attività quali “l’environment hardening”, la realizzazione di
piani di mantenimento e di patching management, il monitor degli attacchi e la costruzione di
procedure di gestione degli incidenti.
Il livello di maturità
OPEN SAMM prevede per ognuna delle famiglie sopra
descritte tre livelli di maturità differenti. La differenza fra
un livello e l’altro è specifico per ogni singola pratica (e
per la relativa traduzione in specifiche attività), tuttavia in
linea generale i vari livelli possono essere riassunti come
descritto nella tabella seguente:
Livello Descrizione
Livello Descrizione
Punto di partenza implicito (nessuna attività è
0
messa in pratica)
Inserimento base di attività ad hoc per la
1
sicurezza delle applicazioni.
Aumento dell’efficienza e/o dell’efficacia delle
2
attività.
Completo dominio delle possibili attività di
3
sicurezza integrabili.
Tabella 2. Descrizione del possibile livello di maturità
Nella figura a destra è visibile un grafico di esempio che
descrive un ipotesi di “roadmap” del processo di
SecureSDLC da implementare in 5 differenti fasi.
Il grafico descrive gli obiettivi del livello di maturità da
raggiungere in ogni fase (righe verticali) sulle diverse
aree di applicazione (righe orrizzontali).
Una volta definita la roadmap, oltre alla definizione delle
attività con cui raggiungere gli obiettivi proposti, è
importante impostare i parametri per la verifica del
raggiungimento del livello di maturità impostato.
Ad esempio per valutare il raggiungimento del livello 1
del gruppo “Education & Guidance” (che prevede
l’esecuzione di corsi di formazione al personale coinvolto
nel SDLC) si potrebbero usare le seguenti metriche:
• Almeno il 50% degli sviluppatori ha seguito un
corso di sviluppo sicuro del codice OWASP
• Tutti i project manager hanno seguito un corso
introduttivo alla sicurezza applicativa
Figura 3. Esempio di possibile roadmap
Considerazioni finali
SAMM è uno strumento decisamente utile da adottare all’interno delle organizzazioni che
vogliono definire e monitorare nel tempo il loro processo di SSDLC. La sua particolare
flessibilità permette di poter facilmente adottarlo a situazioni ed esigenze molto diverse fra loro.
La formalizzazione molto ad alto livello delle pratiche da integrare nel SDLC aziendale, non
supporta la traduzione delle stesse in attività di sicurezza puntuali. Per definire queste attività
è quindi necessaria un’analisi a parte che abbia come fine la scelta delle attività da integrare per
rispettare gli obiettivi scelti che meglio si adattino al processo di sviluppo esistente.
Alessandro Gai – Senior Security Advisor @ Mediaservice.net