Ho appena concluso il webcast sul Threat Modeling, il processo che consente di identificare errori di progettazione/architettura di una applicazione, non solo riguardo alle problematiche di sicurezza.
Se, per assurdo, dovessimo solo scegliere uno dei processi di SDL, quello irrinunciabile sarebbe il Threat Modeling. Così racconta Michael Howard nel suo libro "The Security Development Lifecycle" che abbiamo regalato a tutti coloro che hanno fatto visita al nostro booth "Security" al TechEd di Barcelona.
Tra i punti più interessanti c'è la differenza di modello usato dal team di SDL e dall'ACE team di Microsoft.
I primi hanno accumulato una grande esperienza e dati basati sul modello Swiderski/Snyder che imposta il modello dal punto di vista dell'attaccante, è molto dettagliato ma anche più complesso, soprattutto per chi non fa di mestiere il security expert.
I secondi hanno redatto un nuovo modello che approccia il problema dal punto di vista del defender che consente una semplficazione di concetti come STRIDE e DREAD e permette la redazione del modello anche da utenti meno esperti. La ciliegina sulla torta è il Threat Analisys and Modeling (TAM) tool di cui ho parlato più volte e che ho mostrato proprio in questo webcast.
Al TechEd 2007 di qualche settimana fa ho avuto modo di chiedere a Michael Howard cosa ne pensasse di questo differente approccio nei team SDL e ACE. Lui stesso nella sessione sul Threat Modeling ha presentato il paradigma Swiderski/Snyder e il fatto è ovvio considerato che gli esempi pratici che ha portato erano basati su quei concetti.
La sua risposta è stata inequivocabile e che quest'ultimo modello (quello del TAM) è certamente preferibile e presto sarà adottato da tutti i team.
Ed è stato sempre Michael Howard a dirmi che se SDL ormai è un processo decisamente stabile, il Threat Modeling è la parte che più di ogni altra è destinata ad evolvere.
Ovviamente, aggiungo io, anche il nuovo modello è destinato ad evolvere per meglio bilanciare le semplificazioni con l'efficacia e quindi guadagnare una usabilità ed un consenso della maggior parte degli sviluppatori.