Sicurezza del Software: strumenti per il Threat Modeling e il Security Development Lifecycle

Microsoft Trustworthy ComputingNel gennaio 2002, con l’iniziativa Trustworthy Computing, Microsoft ha ufficializzato le iniziative che internamente erano iniziate due anni prima circa, e riguardavano la sicurezza delle applicazioni e del software.

In quel periodo era in corso di sviluppo Windows Server 2003, e per alcuni mesi tutta l’attività di sviluppo fu sospesa, per consentire alle persone e ai team coinvolti anche in quel progetto di seguire training, corsi e formazione su come scrivere “software sicuro”.

Cambiava così il modo in cui Microsoft sviluppava i suoi prodotti, e la nuova metodologia di sviluppo veniva chiamata Security Development Lifecycle (SDL) .

Il modello: Security Development Lifecycle

L’SDL affianca alle differenti fasi che costituiscono lo sviluppo di una applicazione (definizione dei requisiti funzionali, modellizzazione e pianificazione dell’applicazione, stesura del codice e implementazione delle funzionalità, verifica del funzionamento e testing, rilascio e supporto dell’applicazione) dei processi e delle attività legate alla sicurezza: le attività di threat modeling, l’analisi dei rischi, la verifica del codice scritto in base alle best practices note, attività di penetration testing e di code analysis, la stesura della documentazione di supporto di cui hanno bisogno gli amministratori per configurare in modo sicuro le applicazioni e i servizi, il supporto nel tempo tramite fix, patch e documentazione aggiornata.

Potete approfondire il Security Development Lifecycle partendo da questa pagina, e potete partire da questo articolo per vedere come i processi di SDL si mappano sulle fasi dello sviluppo di una applicazione. La documentazione su come Microsoft ha implementato il Security Development Lifecycle è disponibile in questo articolo “The Trustworthy Computing Security Development Lifecycle”.

I risultati

L’applicazione della nuova metodologia di sviluppo non è stata “immediata” per tutti i team di sviluppo e per tutti i prodotti, ma ovviamente ha richiesto del tempo.

E’ iniziata con Windows Server 2003, Windows XP SP2, SQL Server 2005 ed è proseguita con Internet Explorer 7.0, Windows Vista, Windows Server 2008, SQL Server 2008 e così via. Ma non solo questi prodotti sono sviluppati ora utilizzando l’SDL. Tutti i nuovi prodotti che vengono rilasciati da Microsoft devono ora obbligatoriamente passare tutte le differenti fasi previste dal Security Development Lifecycle.

I risultati di questa metodologia sono davvero notevoli.

Come potete leggere nel dettaglio in questo report dedicato ai principali prodotti Microsoft, tutti i prodotti che hanno passato l’SDL sono state riscontrate meno vulnerabilità rispetto alle versioni precedenti, sviluppate senza SDL.

Windows Vista Vulnerabilities 

SQL Server Vulnerabilities

Gli annunci di TechEd Developer 2008

Come annunciato da Feliciano, durante la prima giornata di TechEd Developer sono stati fatti degli annunci importanti relativamente all’SDL e alla volontà di Microsoft di aiutare i clienti nello sviluppare software in modo sicuro e creare una rete di partner che supportino le aziende che decidono di implementare al loro interno il Security Develoment Lifecycle.

SDL Optimization Model

L’idea da cui è partito il Security Development Lifecycle Optimization Model è semplice. Come esistono dei modelli e degli strumenti che permettono alle aziende di capire lo stato della propria infrastruttura IT, come abbiamo ricordato qualche giorno fa parlando di Dynamic IT, così vengono resi disponibili modelli e strumenti per consentire alle aziende di capire come sono posizionante dal punto di vista della sicurezza e di intraprendere un percorso di crescita anche su questo campo.

image

La documentazione sull’SDL Optimization Model introduce prima i concetti base dell’SDL, tramite gli strumenti di Self Assessment aiuta alle aziende a capire il loro “stato di maturità” dal punto di vista della sicurezza, e con le guide fornisce gli strumenti e le informazioni necessarie per pianificare il passaggio da un livello di maturità ad un altro.

SDL Pro Network

Microsoft ha anche attivato delle partnership con delle aziende specializzate per fornire aiuto, supporto e training a quelle aziende che vogliono intraprendere questo percorso di crescita e vogliono implementare il Security Development Lifecycle.

Potete trovare in questa pagina la lista delle aziende che attualmente fanno parte del SDL Pro Network.

SDL Threat Modeling Tool

E’ stato messo a disposizione anche uno strumento, il Security Development Lifecycle Threat Modeling Tool, pensato per i Software Architects e per chi progetta soluzioni software.

L’SDL Threat Modeling Tool consente di modellizzare le applicazioni, i servizi, i canali di comunicazione, i repository di informazioni tramite dei diagrammi; di analizzare le relazioni che esistono tra i differenti componenti; di capire il livello di rischio a cui sono esposti tramite una analisi di tipo STRIDE (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege).

E’ lo strumento che viene utilizzato in Microsoft durante le fasi di design dei prodotti, per analizzare i rischi a cui potrebbero essere esposti una volta in uso e pianificare le azioni necessarie a proteggere i componenti e le funzionalità a rischio.

Trovate in questo articolo una breve introduzione all’SDL Threat Modeling Tool, mentre in questa pagina trovate un video che vi mostra le funzionalità del Threat Modeling Tool e della documentazione di supporto, tra cui vi segnalo in particolare il documento “Experiences Threat Modeling at Microsoft” che illustra la metodologia di analisi “STRIDE per element” utilizzata in Microsoft.

Potete scaricare da qui la Beta della v3 dell’SDL Threat Modeling Tool, e questo documento “Lab: Introduction to Threat Modeling” vi potrà essere di aiuto nell’utilizzo del tool stesso.

 

Vi segnalo anche tre blog per approfondire i temi legati alla sicurezza:

Renato